@itwin/core-backend 4.8.0-dev.3 → 4.8.0-dev.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/lib/cjs/BackendLoggerCategory.d.ts +3 -1
  3. package/lib/cjs/BackendLoggerCategory.d.ts.map +1 -1
  4. package/lib/cjs/BackendLoggerCategory.js +2 -0
  5. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  6. package/lib/cjs/BlobContainerService.d.ts +3 -3
  7. package/lib/cjs/BlobContainerService.d.ts.map +1 -1
  8. package/lib/cjs/BlobContainerService.js.map +1 -1
  9. package/lib/cjs/CloudSqlite.d.ts +21 -13
  10. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  11. package/lib/cjs/CloudSqlite.js +24 -6
  12. package/lib/cjs/CloudSqlite.js.map +1 -1
  13. package/lib/cjs/CodeService.d.ts +4 -4
  14. package/lib/cjs/CodeService.d.ts.map +1 -1
  15. package/lib/cjs/CodeService.js.map +1 -1
  16. package/lib/cjs/GeoCoordConfig.d.ts +10 -0
  17. package/lib/cjs/GeoCoordConfig.d.ts.map +1 -1
  18. package/lib/cjs/GeoCoordConfig.js +20 -23
  19. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  20. package/lib/cjs/IModelDb.d.ts +14 -9
  21. package/lib/cjs/IModelDb.d.ts.map +1 -1
  22. package/lib/cjs/IModelDb.js +53 -17
  23. package/lib/cjs/IModelDb.js.map +1 -1
  24. package/lib/cjs/IModelHost.d.ts +8 -1
  25. package/lib/cjs/IModelHost.d.ts.map +1 -1
  26. package/lib/cjs/IModelHost.js +24 -15
  27. package/lib/cjs/IModelHost.js.map +1 -1
  28. package/lib/cjs/PropertyStore.d.ts +17 -7
  29. package/lib/cjs/PropertyStore.d.ts.map +1 -1
  30. package/lib/cjs/PropertyStore.js +11 -5
  31. package/lib/cjs/PropertyStore.js.map +1 -1
  32. package/lib/cjs/SQLiteDb.d.ts +2 -3
  33. package/lib/cjs/SQLiteDb.d.ts.map +1 -1
  34. package/lib/cjs/SQLiteDb.js +2 -3
  35. package/lib/cjs/SQLiteDb.js.map +1 -1
  36. package/lib/cjs/SchemaSync.d.ts +1 -1
  37. package/lib/cjs/SchemaSync.d.ts.map +1 -1
  38. package/lib/cjs/SchemaSync.js.map +1 -1
  39. package/lib/cjs/TextAnnotationGeometry.d.ts +5 -1
  40. package/lib/cjs/TextAnnotationGeometry.d.ts.map +1 -1
  41. package/lib/cjs/TextAnnotationGeometry.js +11 -8
  42. package/lib/cjs/TextAnnotationGeometry.js.map +1 -1
  43. package/lib/cjs/TextAnnotationLayout.d.ts +21 -13
  44. package/lib/cjs/TextAnnotationLayout.d.ts.map +1 -1
  45. package/lib/cjs/TextAnnotationLayout.js +119 -90
  46. package/lib/cjs/TextAnnotationLayout.js.map +1 -1
  47. package/lib/cjs/ViewStore.d.ts +16 -2
  48. package/lib/cjs/ViewStore.d.ts.map +1 -1
  49. package/lib/cjs/ViewStore.js +14 -1
  50. package/lib/cjs/ViewStore.js.map +1 -1
  51. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +33 -0
  52. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +17 -21
  53. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +80 -38
  54. package/lib/cjs/assets/Settings/backend.setting.json5 +8 -119
  55. package/lib/cjs/core-backend.d.ts +2 -1
  56. package/lib/cjs/core-backend.d.ts.map +1 -1
  57. package/lib/cjs/core-backend.js +3 -2
  58. package/lib/cjs/core-backend.js.map +1 -1
  59. package/lib/cjs/internal/ImplementationProhibited.d.ts +44 -0
  60. package/lib/cjs/internal/ImplementationProhibited.d.ts.map +1 -0
  61. package/lib/cjs/internal/ImplementationProhibited.js +51 -0
  62. package/lib/cjs/internal/ImplementationProhibited.js.map +1 -0
  63. package/lib/cjs/internal/workspace/SettingsImpl.d.ts +43 -0
  64. package/lib/cjs/internal/workspace/SettingsImpl.d.ts.map +1 -0
  65. package/lib/cjs/internal/workspace/SettingsImpl.js +161 -0
  66. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -0
  67. package/lib/cjs/internal/workspace/SettingsSchemasImpl.d.ts +6 -0
  68. package/lib/cjs/internal/workspace/SettingsSchemasImpl.d.ts.map +1 -0
  69. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js +276 -0
  70. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -0
  71. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts +41 -0
  72. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -0
  73. package/lib/cjs/internal/workspace/WorkspaceImpl.js +696 -0
  74. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -0
  75. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.d.ts +10 -0
  76. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.d.ts.map +1 -0
  77. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js +41 -0
  78. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -0
  79. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
  80. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +1 -2
  81. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  82. package/lib/cjs/workspace/Settings.d.ts +167 -138
  83. package/lib/cjs/workspace/Settings.d.ts.map +1 -1
  84. package/lib/cjs/workspace/Settings.js +68 -138
  85. package/lib/cjs/workspace/Settings.js.map +1 -1
  86. package/lib/cjs/workspace/SettingsSchemas.d.ts +112 -48
  87. package/lib/cjs/workspace/SettingsSchemas.d.ts.map +1 -1
  88. package/lib/cjs/workspace/SettingsSchemas.js +1 -172
  89. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  90. package/lib/cjs/workspace/Workspace.d.ts +411 -277
  91. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  92. package/lib/cjs/workspace/Workspace.js +76 -457
  93. package/lib/cjs/workspace/Workspace.js.map +1 -1
  94. package/lib/cjs/workspace/WorkspaceEditor.d.ts +245 -0
  95. package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -0
  96. package/lib/cjs/workspace/WorkspaceEditor.js +34 -0
  97. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -0
  98. package/package.json +12 -12
  99. package/lib/cjs/assets/Settings/Schemas/Cloud.Schema.json +0 -45
@@ -7,7 +7,7 @@
7
7
  * @module ElementGeometry
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.TextBlockLayout = exports.LineLayout = exports.RunLayout = exports.computeTextBlockExtents = exports.layoutTextBlock = void 0;
10
+ exports.TextBlockLayout = exports.LineLayout = exports.RunLayout = exports.computeLayoutTextBlockResult = exports.layoutTextBlock = void 0;
11
11
  const core_common_1 = require("@itwin/core-common");
12
12
  const core_geometry_1 = require("@itwin/core-geometry");
13
13
  const core_bentley_1 = require("@itwin/core-bentley");
@@ -17,6 +17,7 @@ const core_bentley_1 = require("@itwin/core-bentley");
17
17
  * Each series of consecutive non-linebreak runs within a paragraph is concatenated into one line.
18
18
  * If the document specifies a width > 0, individual lines are split to try to avoid exceeding that width.
19
19
  * Individual TextRuns can be split onto multiple lines at word boundaries if necessary. Individual FractionRuns are never split.
20
+ * @see [[computeLayoutTextBlockResult]]
20
21
  * @internal
21
22
  */
22
23
  function layoutTextBlock(args) {
@@ -27,18 +28,17 @@ function layoutTextBlock(args) {
27
28
  return new TextBlockLayout(args.textBlock, new LayoutContext(args.textBlock, computeTextRange, findTextStyle, findFontId));
28
29
  }
29
30
  exports.layoutTextBlock = layoutTextBlock;
30
- /** Compute the bounding box containing the contents of a [TextBlock]($common).
31
- * This process converts each [Paragraph]($common) into a set of lines of text, laying out the glyphs of individual
32
- * [Run]($common)s based on their [TextStyle]($common)s and fonts, and applying work-wrapping based on [TextBlock.width]($common).
33
- * The resultant extents can be supplied to [TextAnnotation.computeTransform]($common) and [TextAnnotation.computeAnchorPoint]($common).
31
+ /**
32
+ * Gets the result of laying out the the contents of a TextBlock into a series of lines containing runs.
33
+ * The visual layout accounts for the [TextStyle]($common)s, fonts, and [TextBlock.width]($common). It applies word-wrapping if needed.
34
+ * The layout returned matches the visual layout of the geometry produced by [[produceTextAnnotationGeometry]].
34
35
  * @beta
35
36
  */
36
- function computeTextBlockExtents(args) {
37
- const range = layoutTextBlock(args).range;
38
- (0, core_bentley_1.assert)(range.low.isZero);
39
- return { x: range.high.x, y: range.high.y };
37
+ function computeLayoutTextBlockResult(args) {
38
+ const layout = layoutTextBlock(args);
39
+ return layout.toResult();
40
40
  }
41
- exports.computeTextBlockExtents = computeTextBlockExtents;
41
+ exports.computeLayoutTextBlockResult = computeLayoutTextBlockResult;
42
42
  function scaleRange(range, scale) {
43
43
  range.low.scaleInPlace(scale);
44
44
  range.high.scaleInPlace(scale);
@@ -192,6 +192,10 @@ class RunLayout {
192
192
  }
193
193
  return new RunLayout({ source, charOffset, numChars, range, justificationRange, denominatorRange, numeratorRange, offsetFromLine, style, fontId });
194
194
  }
195
+ /** Compute a string representation, primarily for debugging purposes. */
196
+ stringify() {
197
+ return this.source.type === "text" ? this.source.content.substring(this.charOffset, this.charOffset + this.numChars) : this.source.stringify();
198
+ }
195
199
  canWrap() {
196
200
  return this.source.type === "text";
197
201
  }
@@ -206,49 +210,49 @@ class RunLayout {
206
210
  offsetFromLine: { ...this.offsetFromLine },
207
211
  });
208
212
  }
209
- wrap(availableWidth, shouldForceLeadingUnit, context) {
210
- if (!this.canWrap()) {
211
- return undefined;
213
+ split(context) {
214
+ (0, core_bentley_1.assert)(this.charOffset === 0, "cannot re-split a run");
215
+ if (!this.canWrap() || this.charOffset > 0) {
216
+ return [this];
212
217
  }
213
- // An optimization that tracks the computed width so far so we don't have to repeatedly recompute preceding character ranges.
214
- // Assumes (to the best of Jeff's knowledge) that characters before a break point can't affect the shaping of subsequent characters.
215
- let runningWidth = 0;
216
- let breakPos = 0;
217
- // ###TODO TypeScript only provides type declarations for Intl.Segmenter if targeting ES2022+.
218
- // But doing so causes inexplicable issues with initialization of Model.modeledElement.
219
- // So until that's resolved, access it via cast to any.
220
218
  const segmenter = new global.Intl.Segmenter(undefined, { granularity: "word" });
221
219
  const myText = this.source.content.substring(this.charOffset, this.charOffset + this.numChars);
222
220
  if (myText.length === 0) {
223
- return undefined;
224
- }
225
- for (const segment of segmenter.segment(myText)) {
226
- const testContent = segment.segment;
227
- const forceCurrentUnit = shouldForceLeadingUnit && (0 === breakPos);
228
- // If we don't fit, the previous break position is the split point.
229
- const ranges = context.computeRangeForText(testContent, this.style, this.source.baselineShift);
230
- if (!forceCurrentUnit && (runningWidth + ranges.justification.xLength()) > availableWidth) {
231
- break;
232
- }
233
- // Otherwise, we fit; keep trying.
234
- runningWidth += ranges.layout.xLength();
235
- breakPos = segment.index + testContent.length;
221
+ return [];
236
222
  }
237
- // If the whole thing fits, we don't have to wrap (i.e., we just wasted a bunch of time).
238
- if (breakPos >= myText.length) {
239
- return undefined;
223
+ const segments = Array.from(segmenter.segment(myText));
224
+ if (segments.length <= 1) {
225
+ return [this];
240
226
  }
241
- // Trim this run and return the remainder.
242
- const charOffset = this.charOffset + breakPos;
243
- const numChars = this.numChars - breakPos;
244
- this.numChars = breakPos;
245
- const leftover = this.source.content.substring(charOffset, charOffset + numChars);
246
- return this.cloneForWrap({
247
- ranges: context.computeRangeForText(leftover, this.style, this.source.baselineShift),
248
- charOffset,
249
- numChars,
227
+ return segments.map((segment) => {
228
+ return this.cloneForWrap({
229
+ ranges: context.computeRangeForText(segment.segment, this.style, this.source.baselineShift),
230
+ charOffset: segment.index,
231
+ numChars: segment.segment.length,
232
+ });
250
233
  });
251
234
  }
235
+ toResult(paragraph) {
236
+ const result = {
237
+ sourceRunIndex: paragraph.runs.indexOf(this.source),
238
+ fontId: this.fontId,
239
+ characterOffset: this.charOffset,
240
+ characterCount: this.numChars,
241
+ range: this.range.toJSON(),
242
+ offsetFromLine: this.offsetFromLine,
243
+ textStyle: this.style.toJSON(),
244
+ };
245
+ if (this.justificationRange) {
246
+ result.justificationRange = this.justificationRange.toJSON();
247
+ }
248
+ if (this.numeratorRange) {
249
+ result.numeratorRange = this.numeratorRange.toJSON();
250
+ }
251
+ if (this.denominatorRange) {
252
+ result.denominatorRange = this.denominatorRange.toJSON();
253
+ }
254
+ return result;
255
+ }
252
256
  }
253
257
  exports.RunLayout = RunLayout;
254
258
  /** @internal */
@@ -260,6 +264,11 @@ class LineLayout {
260
264
  this._runs = [];
261
265
  this.source = source;
262
266
  }
267
+ /** Compute a string representation, primarily for debugging purposes. */
268
+ stringify() {
269
+ const runs = this._runs.map((run) => run.stringify());
270
+ return `${runs.join("")}`;
271
+ }
263
272
  get runs() { return this._runs; }
264
273
  get isEmpty() { return this._runs.length === 0; }
265
274
  get back() {
@@ -274,8 +283,15 @@ class LineLayout {
274
283
  computeRanges() {
275
284
  this.range.low.setZero();
276
285
  this.range.high.setZero();
286
+ // Some runs (fractions) are taller than others.
287
+ // We want to center each run vertically inside the line.
288
+ let lineHeight = 0;
289
+ for (const run of this._runs) {
290
+ lineHeight = Math.max(lineHeight, run.range.yLength());
291
+ }
277
292
  for (const run of this._runs) {
278
- const runOffset = { x: this.range.high.x, y: 0 };
293
+ const runHeight = run.range.yLength();
294
+ const runOffset = { x: this.range.high.x, y: (lineHeight - runHeight) / 2 };
279
295
  run.offsetFromLine = runOffset;
280
296
  const runLayoutRange = run.range.cloneTranslated(runOffset);
281
297
  this.range.extendRange(runLayoutRange);
@@ -285,6 +301,15 @@ class LineLayout {
285
301
  }
286
302
  }
287
303
  }
304
+ toResult(textBlock) {
305
+ return {
306
+ sourceParagraphIndex: textBlock.paragraphs.indexOf(this.source),
307
+ runs: this.runs.map((x) => x.toResult(this.source)),
308
+ range: this.range.toJSON(),
309
+ justificationRange: this.justificationRange.toJSON(),
310
+ offsetFromDocument: this.offsetFromDocument,
311
+ };
312
+ }
288
313
  }
289
314
  exports.LineLayout = LineLayout;
290
315
  /**
@@ -296,9 +321,23 @@ class TextBlockLayout {
296
321
  this.range = new core_geometry_1.Range2d();
297
322
  this.lines = [];
298
323
  this.source = source;
324
+ if (source.width > 0) {
325
+ this.range.low.x = 0;
326
+ this.range.high.x = source.width;
327
+ }
299
328
  this.populateLines(context);
300
329
  this.justifyLines();
301
330
  }
331
+ toResult() {
332
+ return {
333
+ lines: this.lines.map((x) => x.toResult(this.source)),
334
+ range: this.range.toJSON(),
335
+ };
336
+ }
337
+ /** Compute a string representation, primarily for debugging purposes. */
338
+ stringify() {
339
+ return this.lines.map((line) => line.stringify()).join("\n");
340
+ }
302
341
  get _back() {
303
342
  (0, core_bentley_1.assert)(this.lines.length > 0);
304
343
  return this.lines[this.lines.length - 1];
@@ -308,66 +347,53 @@ class TextBlockLayout {
308
347
  if (doc.paragraphs.length === 0) {
309
348
  return;
310
349
  }
311
- const isWrapped = doc.width > 0;
312
- let line = new LineLayout(doc.paragraphs[0]);
350
+ const doWrap = doc.width > 0;
351
+ let curLine = new LineLayout(doc.paragraphs[0]);
313
352
  for (let i = 0; i < doc.paragraphs.length; i++) {
314
353
  const paragraph = doc.paragraphs[i];
315
354
  if (i > 0) {
316
- line = this.flushLine(context, line, paragraph);
355
+ curLine = this.flushLine(context, curLine, paragraph);
356
+ }
357
+ let runs = paragraph.runs.map((run) => RunLayout.create(run, context));
358
+ if (doWrap) {
359
+ runs = runs.map((run) => run.split(context)).flat();
317
360
  }
318
- for (const run of paragraph.runs) {
319
- let layoutRun = RunLayout.create(run, context);
320
- // Line break? It always "fits" and causes us to flush the line.
321
- if ("linebreak" === run.type) {
322
- line.append(layoutRun);
323
- line = this.flushLine(context, line);
361
+ for (const run of runs) {
362
+ if ("linebreak" === run.source.type) {
363
+ curLine.append(run);
364
+ curLine = this.flushLine(context, curLine);
324
365
  continue;
325
366
  }
326
- const effectiveRunWidth = isWrapped ? layoutRun.range.xLength() : 0;
327
- let effectiveRemainingWidth = isWrapped ? doc.width - line.range.xLength() : Number.MAX_VALUE;
328
- // Do we fit (no wrapping or narrow enough)? Append and go around to the next run.
329
- if (effectiveRunWidth < effectiveRemainingWidth) {
330
- line.append(layoutRun);
367
+ if (!doWrap) {
368
+ curLine.append(run);
331
369
  continue;
332
370
  }
333
- // Can't fit, but can't wrap? Force on the line if it's the first thing; otherwise flush and add to the next line.
334
- let leftOver = layoutRun.wrap(effectiveRemainingWidth, line.runs.length === 0, context);
335
- if (!leftOver) {
336
- if (line.runs.length === 0) {
337
- line.append(layoutRun);
338
- line = this.flushLine(context, line);
339
- }
340
- else {
341
- line = this.flushLine(context, line);
342
- line.append(layoutRun);
343
- }
371
+ const runWidth = run.range.xLength();
372
+ const lineWidth = curLine.range.xLength();
373
+ if (runWidth + lineWidth <= doc.width) {
374
+ curLine.append(run);
344
375
  continue;
345
376
  }
346
- // Otherwise, keep splitting the run into lines until the whole thing is appended.
347
- do {
348
- line.append(layoutRun);
349
- line = this.flushLine(context, line);
350
- effectiveRemainingWidth = doc.width;
351
- layoutRun = leftOver;
352
- } while (leftOver = layoutRun.wrap(effectiveRemainingWidth, line.runs.length === 0, context));
353
- line.append(layoutRun);
377
+ if (curLine.runs.length === 0) {
378
+ curLine.append(run);
379
+ curLine = this.flushLine(context, curLine);
380
+ }
381
+ else {
382
+ curLine = this.flushLine(context, curLine);
383
+ curLine.append(run);
384
+ }
354
385
  }
355
386
  }
356
- if (line.runs.length > 0) {
357
- this.flushLine(context, line);
387
+ if (curLine.runs.length > 0) {
388
+ this.flushLine(context, curLine);
358
389
  }
359
390
  }
360
391
  justifyLines() {
361
392
  if (this.lines.length <= 1 || "left" === this.source.justification) {
362
393
  return;
363
394
  }
364
- let docWidth = this.source.width;
365
- if (docWidth <= 0) {
366
- for (const line of this.lines) {
367
- const lineWidth = line.justificationRange.xLength();
368
- docWidth = Math.max(docWidth, lineWidth);
369
- }
370
- }
395
+ // This is the minimum width of the document's bounding box.
396
+ const docWidth = this.source.width;
371
397
  let minOffset = Number.MAX_VALUE;
372
398
  for (const line of this.lines) {
373
399
  const lineWidth = line.justificationRange.xLength();
@@ -378,8 +404,11 @@ class TextBlockLayout {
378
404
  line.offsetFromDocument.x += offset;
379
405
  minOffset = Math.min(offset, minOffset);
380
406
  }
381
- this.range.low.x += minOffset;
382
- this.range.high.x += minOffset;
407
+ if (minOffset < 0) {
408
+ // Shift left to accomodate lines that exceeded the document's minimum width.
409
+ this.range.low.x += minOffset;
410
+ this.range.high.x += minOffset;
411
+ }
383
412
  }
384
413
  flushLine(context, line, nextParagraph) {
385
414
  nextParagraph = nextParagraph ?? line.source;
@@ -1 +1 @@
1
- {"version":3,"file":"TextAnnotationLayout.js","sourceRoot":"","sources":["../../src/TextAnnotationLayout.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module ElementGeometry\r\n */\r\n\r\nimport { BaselineShift, FontId, FractionRun, Paragraph, Run, TextBlock, TextRun, TextStyleSettings, TextStyleSettingsProps } from \"@itwin/core-common\";\r\nimport { Range2d, XAndY } from \"@itwin/core-geometry\";\r\nimport { IModelDb } from \"./IModelDb\";\r\nimport { assert, NonFunctionPropertiesOf } from \"@itwin/core-bentley\";\r\n\r\n/** @internal */\r\nexport interface TextLayoutRanges {\r\n layout: Range2d;\r\n justification: Range2d;\r\n}\r\n\r\n/** Arguments to [[ComputeRangesForTextLayout]].\r\n * @internal\r\n */\r\nexport interface ComputeRangesForTextLayoutArgs {\r\n chars: string;\r\n bold: boolean;\r\n italic: boolean;\r\n baselineShift: BaselineShift;\r\n fontId: FontId;\r\n widthFactor: number;\r\n lineHeight: number;\r\n}\r\n\r\n/** A function that uses a font to compute the layout and justification ranges of a string of text.\r\n * @internal\r\n */\r\nexport type ComputeRangesForTextLayout = (args: ComputeRangesForTextLayoutArgs) => TextLayoutRanges;\r\n\r\n/** @internal */\r\nexport type FindFontId = (name: string) => FontId;\r\n\r\n/** @internal */\r\nexport type FindTextStyle = (name: string) => TextStyleSettings;\r\n\r\n/** Arguments supplied to [[computeTextBlockExtents]].\r\n * @beta\r\n */\r\nexport interface ComputeTextBlockExtentsArgs {\r\n /** The text block whose extents are to be computed. */\r\n textBlock: TextBlock;\r\n /** The iModel from which to obtain fonts and [TextStyle]($common)s when laying out glyphs. */\r\n iModel: IModelDb;\r\n}\r\n\r\n/** @internal */\r\nexport interface LayoutTextBlockArgs extends ComputeTextBlockExtentsArgs {\r\n /** @internal chiefly for tests, by default uses IModelJsNative.DgnDb.computeRangesForText. */\r\n computeTextRange?: ComputeRangesForTextLayout;\r\n /** @internal chiefly for tests, by default looks up styles from a workspace. */\r\n findTextStyle?: FindTextStyle;\r\n /** @internal chiefly for tests, by default uses IModelDb.fontMap. */\r\n findFontId?: FindFontId;\r\n}\r\n\r\n/**\r\n * Lays out the contents of a TextBlock into a series of lines containing runs.\r\n * Each paragraph is decomposed into a series of lines.\r\n * Each series of consecutive non-linebreak runs within a paragraph is concatenated into one line.\r\n * If the document specifies a width > 0, individual lines are split to try to avoid exceeding that width.\r\n * Individual TextRuns can be split onto multiple lines at word boundaries if necessary. Individual FractionRuns are never split.\r\n * @internal\r\n */\r\nexport function layoutTextBlock(args: LayoutTextBlockArgs): TextBlockLayout {\r\n const findFontId = args.findFontId ?? ((name) => args.iModel.fontMap.getFont(name)?.id ?? 0);\r\n const computeTextRange = args.computeTextRange ?? ((x) => args.iModel.computeRangesForText(x));\r\n\r\n // ###TODO finding text styles in workspaces.\r\n const findTextStyle = args.findTextStyle ?? (() => TextStyleSettings.fromJSON());\r\n\r\n return new TextBlockLayout(args.textBlock, new LayoutContext(args.textBlock, computeTextRange, findTextStyle, findFontId));\r\n}\r\n\r\n/** Compute the bounding box containing the contents of a [TextBlock]($common).\r\n * This process converts each [Paragraph]($common) into a set of lines of text, laying out the glyphs of individual\r\n * [Run]($common)s based on their [TextStyle]($common)s and fonts, and applying work-wrapping based on [TextBlock.width]($common).\r\n * The resultant extents can be supplied to [TextAnnotation.computeTransform]($common) and [TextAnnotation.computeAnchorPoint]($common).\r\n * @beta\r\n */\r\nexport function computeTextBlockExtents(args: ComputeTextBlockExtentsArgs): XAndY {\r\n const range = layoutTextBlock(args).range;\r\n assert(range.low.isZero);\r\n return { x: range.high.x, y: range.high.y };\r\n}\r\n\r\nfunction scaleRange(range: Range2d, scale: number): void {\r\n range.low.scaleInPlace(scale);\r\n range.high.scaleInPlace(scale);\r\n}\r\n\r\nfunction applyBlockSettings(target: TextStyleSettings, source: TextStyleSettings | TextStyleSettingsProps): TextStyleSettings {\r\n if (source === target) {\r\n return target;\r\n }\r\n\r\n const lineSpacingFactor = source.lineSpacingFactor ?? target.lineSpacingFactor;\r\n const lineHeight = source.lineHeight ?? target.lineHeight;\r\n const widthFactor = source.widthFactor ?? target.widthFactor;\r\n\r\n if (lineSpacingFactor !== target.lineSpacingFactor || lineHeight !== target.lineHeight || widthFactor !== target.widthFactor) {\r\n target = target.clone({ lineSpacingFactor, lineHeight, widthFactor });\r\n }\r\n\r\n return target;\r\n}\r\n\r\nclass LayoutContext {\r\n private readonly _textStyles = new Map<string, TextStyleSettings>();\r\n private readonly _fontIds = new Map<string, FontId>();\r\n public readonly blockSettings: TextStyleSettings;\r\n\r\n public constructor(block: TextBlock, private readonly _computeTextRange: ComputeRangesForTextLayout, private readonly _findTextStyle: FindTextStyle, private readonly _findFontId: FindFontId) {\r\n const settings = this.findTextStyle(block.styleName);\r\n this.blockSettings = applyBlockSettings(settings, block.styleOverrides);\r\n }\r\n\r\n public findFontId(name: string): FontId {\r\n let fontId = this._fontIds.get(name);\r\n if (undefined === fontId) {\r\n this._fontIds.set(name, fontId = this._findFontId(name));\r\n }\r\n\r\n return fontId;\r\n }\r\n\r\n public findTextStyle(name: string): TextStyleSettings {\r\n let style = this._textStyles.get(name);\r\n if (undefined === style) {\r\n this._textStyles.set(name, style = this._findTextStyle(name));\r\n }\r\n\r\n return style;\r\n }\r\n\r\n public createRunSettings(run: Run): TextStyleSettings {\r\n let settings = this.findTextStyle(run.styleName);\r\n if (run.overridesStyle) {\r\n settings = settings.clone(run.styleOverrides);\r\n }\r\n\r\n return applyBlockSettings(settings, this.blockSettings);\r\n }\r\n\r\n public computeRangeForText(chars: string, style: TextStyleSettings, baselineShift: BaselineShift): TextLayoutRanges {\r\n if (chars.length === 0) {\r\n return {\r\n layout: new Range2d(0, 0, 0, style.lineHeight),\r\n justification: new Range2d(),\r\n };\r\n }\r\n\r\n const fontId = this.findFontId(style.fontName);\r\n const { layout, justification } = this._computeTextRange({\r\n chars,\r\n fontId,\r\n baselineShift,\r\n bold: style.isBold,\r\n italic: style.isItalic,\r\n lineHeight: this.blockSettings.lineHeight,\r\n widthFactor: this.blockSettings.widthFactor,\r\n });\r\n\r\n if (\"none\" !== baselineShift) {\r\n const isSub = \"subscript\" === baselineShift;\r\n const scale = isSub ? style.subScriptScale : style.superScriptScale;\r\n const offsetFactor = isSub ? style.subScriptOffsetFactor : style.superScriptOffsetFactor;\r\n const offset = { x: 0, y: style.lineHeight * offsetFactor };\r\n\r\n scaleRange(layout, scale);\r\n layout.cloneTranslated(offset, layout);\r\n\r\n scaleRange(justification, scale);\r\n justification.cloneTranslated(offset, justification);\r\n }\r\n\r\n return { layout, justification };\r\n }\r\n\r\n public computeRangeForTextRun(style: TextStyleSettings, run: TextRun, charOffset: number, numChars: number): TextLayoutRanges {\r\n return this.computeRangeForText(run.content.substring(charOffset, charOffset + numChars), style, run.baselineShift);\r\n }\r\n\r\n public computeRangeForFractionRun(style: TextStyleSettings, source: FractionRun): { layout: Range2d, numerator: Range2d, denominator: Range2d } {\r\n const numerator = this.computeRangeForText(source.numerator, style, \"none\").layout;\r\n scaleRange(numerator, style.stackedFractionScale);\r\n\r\n const denominator = this.computeRangeForText(source.denominator, style, \"none\").layout;\r\n scaleRange(denominator, style.stackedFractionScale);\r\n\r\n const numLen = numerator.xLength();\r\n const denomLen = denominator.xLength();\r\n switch (style.stackedFractionType) {\r\n case \"horizontal\": {\r\n if (numLen > denomLen) {\r\n denominator.cloneTranslated({ x: (numLen - denomLen) / 2, y: 0 }, denominator);\r\n } else {\r\n numerator.cloneTranslated({ x: (denomLen - numLen) / 2, y: 0 }, numerator);\r\n }\r\n\r\n numerator.cloneTranslated({ x: 0, y: 1.5 * denominator.yLength() }, numerator);\r\n break;\r\n }\r\n case \"diagonal\": {\r\n numerator.cloneTranslated({ x: 0, y: denominator.yLength() }, numerator);\r\n denominator.cloneTranslated({ x: numLen, y: 0 }, denominator);\r\n break;\r\n }\r\n }\r\n\r\n const layout = numerator.clone();\r\n layout.extendRange(denominator);\r\n return { layout, numerator, denominator };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class RunLayout {\r\n public source: Run;\r\n public charOffset: number;\r\n public numChars: number;\r\n public range: Range2d;\r\n public justificationRange?: Range2d;\r\n public denominatorRange?: Range2d;\r\n public numeratorRange?: Range2d;\r\n public offsetFromLine: { x: number, y: number };\r\n public style: TextStyleSettings;\r\n public fontId: FontId;\r\n\r\n private constructor(props: NonFunctionPropertiesOf<RunLayout>) {\r\n this.source = props.source;\r\n this.charOffset = props.charOffset;\r\n this.numChars = props.numChars;\r\n this.range = props.range;\r\n this.justificationRange = props.justificationRange;\r\n this.denominatorRange = props.denominatorRange;\r\n this.numeratorRange = props.numeratorRange;\r\n this.offsetFromLine = props.offsetFromLine;\r\n this.style = props.style;\r\n this.fontId = props.fontId;\r\n }\r\n\r\n public static create(source: Run, context: LayoutContext): RunLayout {\r\n const style = context.createRunSettings(source);\r\n const fontId = context.findFontId(style.fontName);\r\n const charOffset = 0;\r\n const offsetFromLine = { x: 0, y: 0 };\r\n let numChars = 0;\r\n\r\n let range, justificationRange, numeratorRange, denominatorRange;\r\n\r\n switch (source.type) {\r\n case \"text\": {\r\n numChars = source.content.length;\r\n const ranges = context.computeRangeForTextRun(style, source, charOffset, numChars);\r\n range = ranges.layout;\r\n justificationRange = ranges.justification;\r\n break;\r\n }\r\n case \"fraction\": {\r\n numChars = 1;\r\n const ranges = context.computeRangeForFractionRun(style, source);\r\n range = ranges.layout;\r\n numeratorRange = ranges.numerator;\r\n denominatorRange = ranges.denominator;\r\n break;\r\n }\r\n default: {\r\n // We do this so that blank lines space correctly without special casing later.\r\n range = new Range2d(0, 0, 0, style.lineHeight);\r\n break;\r\n }\r\n }\r\n\r\n return new RunLayout({ source, charOffset, numChars, range, justificationRange, denominatorRange, numeratorRange, offsetFromLine, style, fontId });\r\n }\r\n\r\n public canWrap(): this is { source: TextRun } {\r\n return this.source.type === \"text\";\r\n }\r\n\r\n private cloneForWrap(args: { ranges: TextLayoutRanges, charOffset: number, numChars: number}): RunLayout {\r\n assert(this.canWrap());\r\n\r\n return new RunLayout({\r\n ...this,\r\n charOffset: args.charOffset,\r\n numChars: args.numChars,\r\n range: args.ranges.layout,\r\n justificationRange: args.ranges.justification,\r\n offsetFromLine: { ...this.offsetFromLine },\r\n });\r\n }\r\n\r\n public wrap(availableWidth: number, shouldForceLeadingUnit: boolean, context: LayoutContext): RunLayout | undefined {\r\n if (!this.canWrap()) {\r\n return undefined;\r\n }\r\n\r\n // An optimization that tracks the computed width so far so we don't have to repeatedly recompute preceding character ranges.\r\n // Assumes (to the best of Jeff's knowledge) that characters before a break point can't affect the shaping of subsequent characters.\r\n let runningWidth = 0;\r\n let breakPos = 0;\r\n\r\n // ###TODO TypeScript only provides type declarations for Intl.Segmenter if targeting ES2022+.\r\n // But doing so causes inexplicable issues with initialization of Model.modeledElement.\r\n // So until that's resolved, access it via cast to any.\r\n const segmenter = new (global as any).Intl.Segmenter(undefined, { granularity: \"word\" });\r\n const myText = this.source.content.substring(this.charOffset, this.charOffset + this.numChars);\r\n if (myText.length === 0) {\r\n return undefined;\r\n }\r\n\r\n for (const segment of segmenter.segment(myText)) {\r\n const testContent = segment.segment;\r\n const forceCurrentUnit = shouldForceLeadingUnit && (0 === breakPos);\r\n\r\n // If we don't fit, the previous break position is the split point.\r\n const ranges = context.computeRangeForText(testContent, this.style, this.source.baselineShift);\r\n if (!forceCurrentUnit && (runningWidth + ranges.justification.xLength()) > availableWidth) {\r\n break;\r\n }\r\n\r\n // Otherwise, we fit; keep trying.\r\n runningWidth += ranges.layout.xLength();\r\n breakPos = segment.index + testContent.length;\r\n }\r\n\r\n // If the whole thing fits, we don't have to wrap (i.e., we just wasted a bunch of time).\r\n if (breakPos >= myText.length) {\r\n return undefined;\r\n }\r\n\r\n // Trim this run and return the remainder.\r\n const charOffset = this.charOffset + breakPos;\r\n const numChars = this.numChars - breakPos;\r\n this.numChars = breakPos;\r\n\r\n const leftover = this.source.content.substring(charOffset, charOffset + numChars);\r\n return this.cloneForWrap({\r\n ranges: context.computeRangeForText(leftover, this.style, this.source.baselineShift),\r\n charOffset,\r\n numChars,\r\n });\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class LineLayout {\r\n public source: Paragraph;\r\n public range = new Range2d(0, 0, 0, 0);\r\n public justificationRange = new Range2d(0, 0, 0, 0);\r\n public offsetFromDocument = { x: 0, y: 0 };\r\n private _runs: RunLayout[] = [];\r\n\r\n public constructor(source: Paragraph) {\r\n this.source = source;\r\n }\r\n\r\n public get runs(): ReadonlyArray<RunLayout> { return this._runs; }\r\n public get isEmpty() { return this._runs.length === 0; }\r\n public get back(): RunLayout {\r\n assert(!this.isEmpty);\r\n return this._runs[this._runs.length - 1];\r\n }\r\n\r\n public append(run: RunLayout): void {\r\n this._runs.push(run);\r\n this.computeRanges();\r\n }\r\n\r\n /** Invoked every time a run is appended,. */\r\n private computeRanges(): void {\r\n this.range.low.setZero();\r\n this.range.high.setZero();\r\n\r\n for (const run of this._runs) {\r\n const runOffset = { x: this.range.high.x, y: 0 };\r\n run.offsetFromLine = runOffset;\r\n\r\n const runLayoutRange = run.range.cloneTranslated(runOffset);\r\n this.range.extendRange(runLayoutRange);\r\n\r\n if (\"linebreak\" !== run.source.type) {\r\n const runJustificationRange = run.justificationRange?.cloneTranslated(runOffset);\r\n this.justificationRange.extendRange(runJustificationRange ?? runLayoutRange);\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Describes the layout of a text block as a collection of lines containing runs.\r\n * @internal\r\n */\r\nexport class TextBlockLayout {\r\n public source: TextBlock;\r\n public range = new Range2d();\r\n public lines: LineLayout[] = [];\r\n\r\n public constructor(source: TextBlock, context: LayoutContext) {\r\n this.source = source;\r\n\r\n this.populateLines(context);\r\n this.justifyLines();\r\n }\r\n\r\n private get _back(): LineLayout {\r\n assert(this.lines.length > 0);\r\n return this.lines[this.lines.length - 1];\r\n }\r\n\r\n private populateLines(context: LayoutContext): void {\r\n const doc = this.source;\r\n if (doc.paragraphs.length === 0) {\r\n return;\r\n }\r\n\r\n const isWrapped = doc.width > 0;\r\n\r\n let line = new LineLayout(doc.paragraphs[0]);\r\n for (let i = 0; i < doc.paragraphs.length; i++) {\r\n const paragraph = doc.paragraphs[i];\r\n if (i > 0) {\r\n line = this.flushLine(context, line, paragraph);\r\n }\r\n\r\n for (const run of paragraph.runs) {\r\n let layoutRun = RunLayout.create(run, context);\r\n\r\n // Line break? It always \"fits\" and causes us to flush the line.\r\n if (\"linebreak\" === run.type) {\r\n line.append(layoutRun);\r\n line = this.flushLine(context, line);\r\n continue;\r\n }\r\n\r\n const effectiveRunWidth = isWrapped ? layoutRun.range.xLength() : 0;\r\n let effectiveRemainingWidth = isWrapped ? doc.width - line.range.xLength() : Number.MAX_VALUE;\r\n\r\n // Do we fit (no wrapping or narrow enough)? Append and go around to the next run.\r\n if (effectiveRunWidth < effectiveRemainingWidth) {\r\n line.append(layoutRun);\r\n continue;\r\n }\r\n\r\n // Can't fit, but can't wrap? Force on the line if it's the first thing; otherwise flush and add to the next line.\r\n let leftOver = layoutRun.wrap(effectiveRemainingWidth, line.runs.length === 0, context);\r\n if (!leftOver) {\r\n if (line.runs.length === 0) {\r\n line.append(layoutRun);\r\n line = this.flushLine(context, line);\r\n } else {\r\n line = this.flushLine(context, line);\r\n line.append(layoutRun);\r\n }\r\n\r\n continue;\r\n }\r\n\r\n // Otherwise, keep splitting the run into lines until the whole thing is appended.\r\n do {\r\n line.append(layoutRun);\r\n line = this.flushLine(context, line);\r\n effectiveRemainingWidth = doc.width;\r\n layoutRun = leftOver;\r\n } while (leftOver = layoutRun.wrap(effectiveRemainingWidth, line.runs.length === 0, context));\r\n\r\n line.append(layoutRun);\r\n }\r\n }\r\n\r\n if (line.runs.length > 0) {\r\n this.flushLine(context, line);\r\n }\r\n }\r\n\r\n private justifyLines(): void {\r\n if (this.lines.length <= 1 || \"left\" === this.source.justification) {\r\n return;\r\n }\r\n\r\n let docWidth = this.source.width;\r\n if (docWidth <= 0) {\r\n for (const line of this.lines) {\r\n const lineWidth = line.justificationRange.xLength();\r\n docWidth = Math.max(docWidth, lineWidth);\r\n }\r\n }\r\n\r\n let minOffset = Number.MAX_VALUE;\r\n for (const line of this.lines) {\r\n const lineWidth = line.justificationRange.xLength();\r\n\r\n let offset = docWidth - lineWidth;\r\n if (\"center\" === this.source.justification) {\r\n offset = offset / 2;\r\n }\r\n\r\n line.offsetFromDocument.x += offset;\r\n minOffset = Math.min(offset, minOffset);\r\n }\r\n\r\n this.range.low.x += minOffset;\r\n this.range.high.x += minOffset;\r\n }\r\n\r\n private flushLine(context: LayoutContext, line: LineLayout, nextParagraph?: Paragraph): LineLayout {\r\n nextParagraph = nextParagraph ?? line.source;\r\n\r\n // We want to guarantee that each layout line has at least one run.\r\n if (line.runs.length === 0) {\r\n // If we're empty, there should always be a preceding run, and it should be a line break.\r\n if (this.lines.length === 0 || this._back.runs.length === 0) {\r\n return new LineLayout(nextParagraph);\r\n }\r\n\r\n const prevRun = this._back.back.source;\r\n assert(prevRun.type === \"linebreak\");\r\n if (prevRun.type !== \"linebreak\") {\r\n return new LineLayout(nextParagraph);\r\n }\r\n\r\n line.append(RunLayout.create(prevRun.clone(), context));\r\n }\r\n\r\n // Line origin is its baseline.\r\n const lineOffset = { x: 0, y: -line.range.yLength() };\r\n\r\n // Place it below any existing lines\r\n if (this.lines.length > 0) {\r\n lineOffset.y += this._back.offsetFromDocument.y;\r\n lineOffset.y -= context.blockSettings.lineSpacingFactor * context.blockSettings.lineHeight;\r\n }\r\n\r\n line.offsetFromDocument = lineOffset;\r\n\r\n // Update document range from computed line range and position\r\n this.range.extendRange(line.range.cloneTranslated(lineOffset));\r\n\r\n this.lines.push(line);\r\n return new LineLayout(nextParagraph);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"TextAnnotationLayout.js","sourceRoot":"","sources":["../../src/TextAnnotationLayout.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module ElementGeometry\r\n */\r\n\r\nimport { BaselineShift, FontId, FractionRun, LineLayoutResult, Paragraph, Run, RunLayoutResult, TextBlock, TextBlockLayoutResult, TextRun, TextStyleSettings, TextStyleSettingsProps } from \"@itwin/core-common\";\r\nimport { Range2d } from \"@itwin/core-geometry\";\r\nimport { IModelDb } from \"./IModelDb\";\r\nimport { assert, NonFunctionPropertiesOf } from \"@itwin/core-bentley\";\r\n\r\n/** @internal */\r\nexport interface TextLayoutRanges {\r\n layout: Range2d;\r\n justification: Range2d;\r\n}\r\n\r\n/** Arguments to [[ComputeRangesForTextLayout]].\r\n * @internal\r\n */\r\nexport interface ComputeRangesForTextLayoutArgs {\r\n chars: string;\r\n bold: boolean;\r\n italic: boolean;\r\n baselineShift: BaselineShift;\r\n fontId: FontId;\r\n widthFactor: number;\r\n lineHeight: number;\r\n}\r\n\r\n/** A function that uses a font to compute the layout and justification ranges of a string of text.\r\n * @internal\r\n */\r\nexport type ComputeRangesForTextLayout = (args: ComputeRangesForTextLayoutArgs) => TextLayoutRanges;\r\n\r\n/** @internal */\r\nexport type FindFontId = (name: string) => FontId;\r\n\r\n/** @internal */\r\nexport type FindTextStyle = (name: string) => TextStyleSettings;\r\n\r\n/**\r\n * Arguments supplied to [[computeLayoutTextBlockResult]].\r\n * @beta\r\n */\r\nexport interface LayoutTextBlockArgs {\r\n /** The text block whose extents are to be computed. */\r\n textBlock: TextBlock;\r\n /** The iModel from which to obtain fonts and [TextStyle]($common)s when laying out glyphs. */\r\n iModel: IModelDb;\r\n /** @internal chiefly for tests, by default uses IModelJsNative.DgnDb.computeRangesForText. */\r\n computeTextRange?: ComputeRangesForTextLayout;\r\n /** @internal chiefly for tests, by default looks up styles from a workspace. */\r\n findTextStyle?: FindTextStyle;\r\n /** @internal chiefly for tests, by default uses IModelDb.fontMap. */\r\n findFontId?: FindFontId;\r\n}\r\n\r\n/**\r\n * Lays out the contents of a TextBlock into a series of lines containing runs.\r\n * Each paragraph is decomposed into a series of lines.\r\n * Each series of consecutive non-linebreak runs within a paragraph is concatenated into one line.\r\n * If the document specifies a width > 0, individual lines are split to try to avoid exceeding that width.\r\n * Individual TextRuns can be split onto multiple lines at word boundaries if necessary. Individual FractionRuns are never split.\r\n * @see [[computeLayoutTextBlockResult]]\r\n * @internal\r\n */\r\nexport function layoutTextBlock(args: LayoutTextBlockArgs): TextBlockLayout {\r\n const findFontId = args.findFontId ?? ((name) => args.iModel.fontMap.getFont(name)?.id ?? 0);\r\n const computeTextRange = args.computeTextRange ?? ((x) => args.iModel.computeRangesForText(x));\r\n\r\n // ###TODO finding text styles in workspaces.\r\n const findTextStyle = args.findTextStyle ?? (() => TextStyleSettings.fromJSON());\r\n\r\n return new TextBlockLayout(args.textBlock, new LayoutContext(args.textBlock, computeTextRange, findTextStyle, findFontId));\r\n}\r\n\r\n/**\r\n * Gets the result of laying out the the contents of a TextBlock into a series of lines containing runs.\r\n * The visual layout accounts for the [TextStyle]($common)s, fonts, and [TextBlock.width]($common). It applies word-wrapping if needed.\r\n * The layout returned matches the visual layout of the geometry produced by [[produceTextAnnotationGeometry]].\r\n * @beta\r\n */\r\nexport function computeLayoutTextBlockResult(args: LayoutTextBlockArgs): TextBlockLayoutResult {\r\n const layout = layoutTextBlock(args);\r\n return layout.toResult();\r\n}\r\n\r\nfunction scaleRange(range: Range2d, scale: number): void {\r\n range.low.scaleInPlace(scale);\r\n range.high.scaleInPlace(scale);\r\n}\r\n\r\nfunction applyBlockSettings(target: TextStyleSettings, source: TextStyleSettings | TextStyleSettingsProps): TextStyleSettings {\r\n if (source === target) {\r\n return target;\r\n }\r\n\r\n const lineSpacingFactor = source.lineSpacingFactor ?? target.lineSpacingFactor;\r\n const lineHeight = source.lineHeight ?? target.lineHeight;\r\n const widthFactor = source.widthFactor ?? target.widthFactor;\r\n\r\n if (lineSpacingFactor !== target.lineSpacingFactor || lineHeight !== target.lineHeight || widthFactor !== target.widthFactor) {\r\n target = target.clone({ lineSpacingFactor, lineHeight, widthFactor });\r\n }\r\n\r\n return target;\r\n}\r\n\r\nclass LayoutContext {\r\n private readonly _textStyles = new Map<string, TextStyleSettings>();\r\n private readonly _fontIds = new Map<string, FontId>();\r\n public readonly blockSettings: TextStyleSettings;\r\n\r\n public constructor(block: TextBlock, private readonly _computeTextRange: ComputeRangesForTextLayout, private readonly _findTextStyle: FindTextStyle, private readonly _findFontId: FindFontId) {\r\n const settings = this.findTextStyle(block.styleName);\r\n this.blockSettings = applyBlockSettings(settings, block.styleOverrides);\r\n }\r\n\r\n public findFontId(name: string): FontId {\r\n let fontId = this._fontIds.get(name);\r\n if (undefined === fontId) {\r\n this._fontIds.set(name, fontId = this._findFontId(name));\r\n }\r\n\r\n return fontId;\r\n }\r\n\r\n public findTextStyle(name: string): TextStyleSettings {\r\n let style = this._textStyles.get(name);\r\n if (undefined === style) {\r\n this._textStyles.set(name, style = this._findTextStyle(name));\r\n }\r\n\r\n return style;\r\n }\r\n\r\n public createRunSettings(run: Run): TextStyleSettings {\r\n let settings = this.findTextStyle(run.styleName);\r\n if (run.overridesStyle) {\r\n settings = settings.clone(run.styleOverrides);\r\n }\r\n\r\n return applyBlockSettings(settings, this.blockSettings);\r\n }\r\n\r\n public computeRangeForText(chars: string, style: TextStyleSettings, baselineShift: BaselineShift): TextLayoutRanges {\r\n if (chars.length === 0) {\r\n return {\r\n layout: new Range2d(0, 0, 0, style.lineHeight),\r\n justification: new Range2d(),\r\n };\r\n }\r\n\r\n const fontId = this.findFontId(style.fontName);\r\n const { layout, justification } = this._computeTextRange({\r\n chars,\r\n fontId,\r\n baselineShift,\r\n bold: style.isBold,\r\n italic: style.isItalic,\r\n lineHeight: this.blockSettings.lineHeight,\r\n widthFactor: this.blockSettings.widthFactor,\r\n });\r\n\r\n if (\"none\" !== baselineShift) {\r\n const isSub = \"subscript\" === baselineShift;\r\n const scale = isSub ? style.subScriptScale : style.superScriptScale;\r\n const offsetFactor = isSub ? style.subScriptOffsetFactor : style.superScriptOffsetFactor;\r\n const offset = { x: 0, y: style.lineHeight * offsetFactor };\r\n\r\n scaleRange(layout, scale);\r\n layout.cloneTranslated(offset, layout);\r\n\r\n scaleRange(justification, scale);\r\n justification.cloneTranslated(offset, justification);\r\n }\r\n\r\n return { layout, justification };\r\n }\r\n\r\n public computeRangeForTextRun(style: TextStyleSettings, run: TextRun, charOffset: number, numChars: number): TextLayoutRanges {\r\n return this.computeRangeForText(run.content.substring(charOffset, charOffset + numChars), style, run.baselineShift);\r\n }\r\n\r\n public computeRangeForFractionRun(style: TextStyleSettings, source: FractionRun): { layout: Range2d, numerator: Range2d, denominator: Range2d } {\r\n const numerator = this.computeRangeForText(source.numerator, style, \"none\").layout;\r\n scaleRange(numerator, style.stackedFractionScale);\r\n\r\n const denominator = this.computeRangeForText(source.denominator, style, \"none\").layout;\r\n scaleRange(denominator, style.stackedFractionScale);\r\n\r\n const numLen = numerator.xLength();\r\n const denomLen = denominator.xLength();\r\n switch (style.stackedFractionType) {\r\n case \"horizontal\": {\r\n if (numLen > denomLen) {\r\n denominator.cloneTranslated({ x: (numLen - denomLen) / 2, y: 0 }, denominator);\r\n } else {\r\n numerator.cloneTranslated({ x: (denomLen - numLen) / 2, y: 0 }, numerator);\r\n }\r\n\r\n numerator.cloneTranslated({ x: 0, y: 1.5 * denominator.yLength() }, numerator);\r\n break;\r\n }\r\n case \"diagonal\": {\r\n numerator.cloneTranslated({ x: 0, y: denominator.yLength() }, numerator);\r\n denominator.cloneTranslated({ x: numLen, y: 0 }, denominator);\r\n break;\r\n }\r\n }\r\n\r\n const layout = numerator.clone();\r\n layout.extendRange(denominator);\r\n return { layout, numerator, denominator };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class RunLayout {\r\n public source: Run;\r\n public charOffset: number;\r\n public numChars: number;\r\n public range: Range2d;\r\n public justificationRange?: Range2d;\r\n public denominatorRange?: Range2d;\r\n public numeratorRange?: Range2d;\r\n public offsetFromLine: { x: number, y: number };\r\n public style: TextStyleSettings;\r\n public fontId: FontId;\r\n\r\n private constructor(props: NonFunctionPropertiesOf<RunLayout>) {\r\n this.source = props.source;\r\n this.charOffset = props.charOffset;\r\n this.numChars = props.numChars;\r\n this.range = props.range;\r\n this.justificationRange = props.justificationRange;\r\n this.denominatorRange = props.denominatorRange;\r\n this.numeratorRange = props.numeratorRange;\r\n this.offsetFromLine = props.offsetFromLine;\r\n this.style = props.style;\r\n this.fontId = props.fontId;\r\n }\r\n\r\n public static create(source: Run, context: LayoutContext): RunLayout {\r\n const style = context.createRunSettings(source);\r\n const fontId = context.findFontId(style.fontName);\r\n const charOffset = 0;\r\n const offsetFromLine = { x: 0, y: 0 };\r\n let numChars = 0;\r\n\r\n let range, justificationRange, numeratorRange, denominatorRange;\r\n\r\n switch (source.type) {\r\n case \"text\": {\r\n numChars = source.content.length;\r\n const ranges = context.computeRangeForTextRun(style, source, charOffset, numChars);\r\n range = ranges.layout;\r\n justificationRange = ranges.justification;\r\n break;\r\n }\r\n case \"fraction\": {\r\n numChars = 1;\r\n const ranges = context.computeRangeForFractionRun(style, source);\r\n range = ranges.layout;\r\n numeratorRange = ranges.numerator;\r\n denominatorRange = ranges.denominator;\r\n break;\r\n }\r\n default: {\r\n // We do this so that blank lines space correctly without special casing later.\r\n range = new Range2d(0, 0, 0, style.lineHeight);\r\n break;\r\n }\r\n }\r\n\r\n return new RunLayout({ source, charOffset, numChars, range, justificationRange, denominatorRange, numeratorRange, offsetFromLine, style, fontId });\r\n }\r\n\r\n /** Compute a string representation, primarily for debugging purposes. */\r\n public stringify(): string {\r\n return this.source.type === \"text\" ? this.source.content.substring(this.charOffset, this.charOffset + this.numChars) : this.source.stringify();\r\n }\r\n\r\n public canWrap(): this is { source: TextRun } {\r\n return this.source.type === \"text\";\r\n }\r\n\r\n private cloneForWrap(args: { ranges: TextLayoutRanges, charOffset: number, numChars: number}): RunLayout {\r\n assert(this.canWrap());\r\n\r\n return new RunLayout({\r\n ...this,\r\n charOffset: args.charOffset,\r\n numChars: args.numChars,\r\n range: args.ranges.layout,\r\n justificationRange: args.ranges.justification,\r\n offsetFromLine: { ...this.offsetFromLine },\r\n });\r\n }\r\n\r\n public split(context: LayoutContext): RunLayout[] {\r\n assert(this.charOffset === 0, \"cannot re-split a run\");\r\n if (!this.canWrap() || this.charOffset > 0) {\r\n return [this];\r\n }\r\n\r\n const segmenter = new (global as any).Intl.Segmenter(undefined, { granularity: \"word\" });\r\n const myText = this.source.content.substring(this.charOffset, this.charOffset + this.numChars);\r\n if (myText.length === 0) {\r\n return [];\r\n }\r\n\r\n const segments = Array.from(segmenter.segment(myText));\r\n if (segments.length <= 1) {\r\n return [this];\r\n }\r\n\r\n return segments.map((segment: any) => {\r\n return this.cloneForWrap({\r\n ranges: context.computeRangeForText(segment.segment, this.style, this.source.baselineShift),\r\n charOffset: segment.index,\r\n numChars: segment.segment.length,\r\n });\r\n });\r\n }\r\n\r\n public toResult(paragraph: Paragraph): RunLayoutResult {\r\n const result: RunLayoutResult = {\r\n sourceRunIndex: paragraph.runs.indexOf(this.source),\r\n fontId: this.fontId,\r\n characterOffset: this.charOffset,\r\n characterCount: this.numChars,\r\n range: this.range.toJSON(),\r\n offsetFromLine: this.offsetFromLine,\r\n textStyle: this.style.toJSON(),\r\n };\r\n\r\n if (this.justificationRange) {\r\n result.justificationRange = this.justificationRange.toJSON();\r\n }\r\n\r\n if (this.numeratorRange) {\r\n result.numeratorRange = this.numeratorRange.toJSON();\r\n }\r\n\r\n if (this.denominatorRange) {\r\n result.denominatorRange = this.denominatorRange.toJSON();\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class LineLayout {\r\n public source: Paragraph;\r\n public range = new Range2d(0, 0, 0, 0);\r\n public justificationRange = new Range2d(0, 0, 0, 0);\r\n public offsetFromDocument = { x: 0, y: 0 };\r\n private _runs: RunLayout[] = [];\r\n\r\n public constructor(source: Paragraph) {\r\n this.source = source;\r\n }\r\n\r\n /** Compute a string representation, primarily for debugging purposes. */\r\n public stringify(): string {\r\n const runs = this._runs.map((run) => run.stringify());\r\n return `${runs.join(\"\")}`;\r\n }\r\n\r\n public get runs(): ReadonlyArray<RunLayout> { return this._runs; }\r\n public get isEmpty() { return this._runs.length === 0; }\r\n public get back(): RunLayout {\r\n assert(!this.isEmpty);\r\n return this._runs[this._runs.length - 1];\r\n }\r\n\r\n public append(run: RunLayout): void {\r\n this._runs.push(run);\r\n this.computeRanges();\r\n }\r\n\r\n /** Invoked every time a run is appended,. */\r\n private computeRanges(): void {\r\n this.range.low.setZero();\r\n this.range.high.setZero();\r\n\r\n // Some runs (fractions) are taller than others.\r\n // We want to center each run vertically inside the line.\r\n let lineHeight = 0;\r\n for (const run of this._runs) {\r\n lineHeight = Math.max(lineHeight, run.range.yLength());\r\n }\r\n\r\n for (const run of this._runs) {\r\n const runHeight = run.range.yLength();\r\n const runOffset = { x: this.range.high.x, y: (lineHeight - runHeight) / 2 };\r\n run.offsetFromLine = runOffset;\r\n\r\n const runLayoutRange = run.range.cloneTranslated(runOffset);\r\n this.range.extendRange(runLayoutRange);\r\n\r\n if (\"linebreak\" !== run.source.type) {\r\n const runJustificationRange = run.justificationRange?.cloneTranslated(runOffset);\r\n this.justificationRange.extendRange(runJustificationRange ?? runLayoutRange);\r\n }\r\n }\r\n }\r\n\r\n public toResult(textBlock: TextBlock): LineLayoutResult {\r\n return {\r\n sourceParagraphIndex: textBlock.paragraphs.indexOf(this.source),\r\n runs: this.runs.map((x) => x.toResult(this.source)),\r\n range: this.range.toJSON(),\r\n justificationRange: this.justificationRange.toJSON(),\r\n offsetFromDocument: this.offsetFromDocument,\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Describes the layout of a text block as a collection of lines containing runs.\r\n * @internal\r\n */\r\nexport class TextBlockLayout {\r\n public source: TextBlock;\r\n public range = new Range2d();\r\n public lines: LineLayout[] = [];\r\n\r\n public constructor(source: TextBlock, context: LayoutContext) {\r\n this.source = source;\r\n\r\n if (source.width > 0) {\r\n this.range.low.x = 0;\r\n this.range.high.x = source.width;\r\n }\r\n\r\n this.populateLines(context);\r\n this.justifyLines();\r\n }\r\n\r\n public toResult(): TextBlockLayoutResult {\r\n return {\r\n lines: this.lines.map((x) => x.toResult(this.source)),\r\n range: this.range.toJSON(),\r\n };\r\n }\r\n\r\n /** Compute a string representation, primarily for debugging purposes. */\r\n public stringify(): string {\r\n return this.lines.map((line) => line.stringify()).join(\"\\n\");\r\n }\r\n\r\n private get _back(): LineLayout {\r\n assert(this.lines.length > 0);\r\n return this.lines[this.lines.length - 1];\r\n }\r\n\r\n private populateLines(context: LayoutContext): void {\r\n const doc = this.source;\r\n if (doc.paragraphs.length === 0) {\r\n return;\r\n }\r\n\r\n const doWrap = doc.width > 0;\r\n let curLine = new LineLayout(doc.paragraphs[0]);\r\n for (let i = 0; i < doc.paragraphs.length; i++) {\r\n const paragraph = doc.paragraphs[i];\r\n if (i > 0) {\r\n curLine = this.flushLine(context, curLine, paragraph);\r\n }\r\n\r\n let runs = paragraph.runs.map((run) => RunLayout.create(run, context));\r\n if (doWrap) {\r\n runs = runs.map((run) => run.split(context)).flat();\r\n }\r\n\r\n for (const run of runs) {\r\n if (\"linebreak\" === run.source.type) {\r\n curLine.append(run);\r\n curLine = this.flushLine(context, curLine);\r\n continue;\r\n }\r\n\r\n if (!doWrap) {\r\n curLine.append(run);\r\n continue;\r\n }\r\n\r\n const runWidth = run.range.xLength();\r\n const lineWidth = curLine.range.xLength();\r\n if (runWidth + lineWidth <= doc.width) {\r\n curLine.append(run);\r\n continue;\r\n }\r\n\r\n if (curLine.runs.length === 0) {\r\n curLine.append(run);\r\n curLine = this.flushLine(context, curLine);\r\n } else {\r\n curLine = this.flushLine(context, curLine);\r\n curLine.append(run);\r\n }\r\n }\r\n }\r\n\r\n if (curLine.runs.length > 0) {\r\n this.flushLine(context, curLine);\r\n }\r\n }\r\n\r\n private justifyLines(): void {\r\n if (this.lines.length <= 1 || \"left\" === this.source.justification) {\r\n return;\r\n }\r\n\r\n // This is the minimum width of the document's bounding box.\r\n const docWidth = this.source.width;\r\n\r\n let minOffset = Number.MAX_VALUE;\r\n for (const line of this.lines) {\r\n const lineWidth = line.justificationRange.xLength();\r\n\r\n let offset = docWidth - lineWidth;\r\n if (\"center\" === this.source.justification) {\r\n offset = offset / 2;\r\n }\r\n\r\n line.offsetFromDocument.x += offset;\r\n minOffset = Math.min(offset, minOffset);\r\n }\r\n\r\n if (minOffset < 0) {\r\n // Shift left to accomodate lines that exceeded the document's minimum width.\r\n this.range.low.x += minOffset;\r\n this.range.high.x += minOffset;\r\n }\r\n }\r\n\r\n private flushLine(context: LayoutContext, line: LineLayout, nextParagraph?: Paragraph): LineLayout {\r\n nextParagraph = nextParagraph ?? line.source;\r\n\r\n // We want to guarantee that each layout line has at least one run.\r\n if (line.runs.length === 0) {\r\n // If we're empty, there should always be a preceding run, and it should be a line break.\r\n if (this.lines.length === 0 || this._back.runs.length === 0) {\r\n return new LineLayout(nextParagraph);\r\n }\r\n\r\n const prevRun = this._back.back.source;\r\n assert(prevRun.type === \"linebreak\");\r\n if (prevRun.type !== \"linebreak\") {\r\n return new LineLayout(nextParagraph);\r\n }\r\n\r\n line.append(RunLayout.create(prevRun.clone(), context));\r\n }\r\n\r\n // Line origin is its baseline.\r\n const lineOffset = { x: 0, y: -line.range.yLength() };\r\n\r\n // Place it below any existing lines\r\n if (this.lines.length > 0) {\r\n lineOffset.y += this._back.offsetFromDocument.y;\r\n lineOffset.y -= context.blockSettings.lineSpacingFactor * context.blockSettings.lineHeight;\r\n }\r\n\r\n line.offsetFromDocument = lineOffset;\r\n\r\n // Update document range from computed line range and position\r\n this.range.extendRange(line.range.cloneTranslated(lineOffset));\r\n\r\n this.lines.push(line);\r\n return new LineLayout(nextParagraph);\r\n }\r\n}\r\n"]}
@@ -6,6 +6,7 @@ import { CategorySelectorProps, DisplayStyleLoadProps, DisplayStyleProps, Displa
6
6
  import { CloudSqlite } from "./CloudSqlite";
7
7
  import { VersionedSqliteDb } from "./SQLiteDb";
8
8
  import { IModelDb } from "./IModelDb";
9
+ import { BlobContainer } from "./BlobContainerService";
9
10
  /**
10
11
  * A ViewStore is a database that stores Views and related data. It is used to store and retrieve views for iTwin.js.
11
12
  * It can either be a local SQLite file, or a CloudSqlite database stored in a cloud container. To use a CloudSqlite
@@ -477,11 +478,24 @@ export declare namespace ViewStore {
477
478
  }
478
479
  /** arguments to construct a `ViewStore.CloudAccess` */
479
480
  export type ViewStoreCtorProps = CloudSqlite.ContainerAccessProps & ViewDbCtorArgs;
481
+ export interface CreateNewContainerProps {
482
+ scope: BlobContainer.Scope;
483
+ metadata: Omit<BlobContainer.Metadata, "containerType">;
484
+ }
480
485
  /** Provides access to a cloud-based `ViewDb` */
481
486
  export class CloudAccess extends CloudSqlite.DbAccess<ViewDb, ReadMethods, ViewStoreRpc.Writer> {
482
487
  constructor(props: ViewStoreCtorProps);
483
- /** Initialize a cloud container for use as a ViewDb. */
484
- static initializeDb(props: CloudSqlite.ContainerAccessProps): Promise<void>;
488
+ /**
489
+ * Initialize a cloud container for use as a ViewDb. This method is called by [[createNewContainer]].
490
+ * It is only necessary to convert an existing container to a ViewStore container.
491
+ * @note this deletes any existing content in the container.
492
+ * @internal
493
+ */
494
+ static initializeDb(props: CloudSqlite.ContainerProps): Promise<void>;
495
+ /** Create and initialize a new BlobContainer to hold a ViewStore
496
+ * @note the current user must have administrator rights to create containers.
497
+ */
498
+ static createNewContainer(args: CreateNewContainerProps): Promise<CloudSqlite.ContainerProps>;
485
499
  }
486
500
  export {};
487
501
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ViewStore.d.ts","sourceRoot":"","sources":["../../src/ViewStore.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAqB,UAAU,EAAuC,YAAY,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACjI,OAAO,EACL,qBAAqB,EAA+B,qBAAqB,EAAE,iBAAiB,EAAE,yBAAyB,EACnE,kBAAkB,EAA+B,cAAc,EACnH,mBAAmB,EAA8B,oBAAoB,EAAE,cAAc,EAAE,mBAAmB,EAAE,YAAY,EACzH,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAStC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,yBAAiB,SAAS,CAAC;IAEzB,MAAM,CAAC,MAAM,SAAS;;;;;;;;;;;;KAYZ,CAAC;IAEX,2BAA2B;IAC3B,KAAK,aAAa,GAAG,UAAU,CAAC;IAEhC,8CAA8C;IAC9C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;IAE3B,4HAA4H;IAC5H,KAAK,SAAS,GAAG,MAAM,CAAC;IAKxB,uCAAuC;IACvC,UAAU,QAAQ;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IACD,KAAK,eAAe,GAAG,QAAQ,CAAC;IAChC,KAAK,WAAW,GAAG,QAAQ,CAAC;IAC5B,KAAK,MAAM,GAAG,QAAQ,CAAC;IACvB,KAAK,SAAS,GAAG,QAAQ,CAAC;IAC1B,KAAK,WAAW,GAAG,QAAQ,CAAC;IAE5B,iCAAiC;IACjC,UAAU,OAAQ,SAAQ,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;QACtD,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,KAAK,CAAC;QACf,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,KAAK,CAAC;QACjB,WAAW,EAAE,KAAK,CAAC;QACnB,YAAY,EAAE,KAAK,CAAC;KACrB;IAED,uCAAuC;IACvC,UAAU,YAAa,SAAQ,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC3D,QAAQ,EAAE,KAAK,CAAC;QAChB,aAAa,CAAC,EAAE,KAAK,CAAC;KACvB;IAED,sCAAsC;IACtC,UAAU,YAAY;QACpB,MAAM,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,aAAa,CAAC;QACpB,MAAM,EAAE,oBAAoB,CAAC;QAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IAED,0EAA0E;IAC1E,MAAM,CAAC,MAAM,SAAS,UAAW,KAAK,KAAG,SAExC,CAAC;IASF,KAAK,aAAa,GAAG,KAAK,GAAG,SAAS,CAAC;IAEvC,gBAAgB;IAChB,MAAM,CAAC,MAAM,OAAO,OAAQ,aAAa,KAAG,KAO3C,CAAC;IAiBF,MAAM,CAAC,MAAM,kBAAkB,GAAa,CAAC;IAE7C,MAAM,WAAW,cAAc;QAC7B,OAAO,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC;QAC9B,MAAM,CAAC,EAAE,QAAQ,CAAC;KACnB;IAED,MAAM,OAAO,MAAO,SAAQ,iBAAkB,YAAW,YAAY,CAAC,MAAM,EAAE,WAAW;QACvE,SAAS,SAAW;QACpC,OAAO,CAAC,OAAO,CAAC,CAAW;QAC3B,OAAO,CAAC,QAAQ,CAAC,CAAsB;QACvC,IAAW,OAAO,IAAI,QAAQ,CAAC,UAAU,CAA2B;QACpE,IAAW,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,EAA8B;QAC7E,IAAW,MAAM,IAAI,QAAQ,CAA0B;QACvD,IAAW,MAAM,CAAC,MAAM,EAAE,QAAQ,EAA4B;oBAE3C,GAAG,CAAC,EAAE,cAAc;QAMvC,6CAA6C;kBAC1B,SAAS;QAyC5B,8FAA8F;QAC9F,OAAO,CAAC,UAAU;QAMlB,gBAAgB;QACT,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS;QAMpD,gBAAgB;QACT,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,KAAK,IAAI;QAW/E,gBAAgB;QACT,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,KAAK;QASvC,gBAAgB;QACT,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,KAAK;QAiBvC,gBAAgB;QACT,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,KAAK;QAYvE,OAAO,CAAC,WAAW;QASnB;;WAEG;QACI,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,KAAK;QAGpD;;WAEG;QACI,sBAAsB,CAAC,IAAI,EAAE,WAAW,GAAG,KAAK;QAGvD;;WAEG;QACI,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,KAAK;QAGvD;;WAEG;QACI,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,KAAK;QAG/C;;WAEG;QACI,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;QAGlC;;WAEG;QACU,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;QAIvD;;WAEG;QACI,wBAAwB,CAAC,IAAI,EAAE,YAAY,GAAG,KAAK;QAW1D,OAAO,CAAC,eAAe;QAMvB,gBAAgB;QACT,aAAa,CAAC,EAAE,EAAE,aAAa;QAGzB,eAAe,CAAC,IAAI,EAAE;YAAE,IAAI,EAAE,YAAY,CAAC,aAAa,CAAA;SAAE;QAMhE,uBAAuB,CAAC,EAAE,EAAE,aAAa;QAGnC,mBAAmB,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,aAAa,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAGrE,0BAA0B,CAAC,EAAE,EAAE,aAAa;QAG5C,sBAAsB,CAAC,EAAE,EAAE,aAAa;QAGxC,kBAAkB,CAAC,EAAE,EAAE,aAAa;QAGpC,aAAa,CAAC,GAAG,EAAE;YAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAA;SAAE;QAI3C,SAAS,CAAC,GAAG,EAAE;YAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAA;SAAE;QAG7C,sBAAsB,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,aAAa,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAGlE,kBAAkB,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,aAAa,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAG9D,cAAc,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,aAAa,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAGhE,YAAY,CAAC,EAAE,EAAE,KAAK;QAGtB,mBAAmB,CAAC,EAAE,EAAE,SAAS;QAG3B,eAAe,CAAC,GAAG,EAAE;YAAE,MAAM,EAAE,SAAS,CAAA;SAAE;QAGvD;;WAEG;QACI,UAAU,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO;QAgBrD,gBAAgB;QACT,eAAe,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,GAAG,YAAY;QAW/D,gBAAgB;QACT,YAAY,CAAC,EAAE,EAAE,KAAK,GAAG,YAAY,GAAG,SAAS;QAaxD,OAAO,CAAC,WAAW;QAWnB;;WAEG;QACI,mBAAmB,CAAC,EAAE,EAAE,KAAK,GAAG,WAAW,GAAG,SAAS;QAG9D;;WAEG;QACI,sBAAsB,CAAC,EAAE,EAAE,KAAK,GAAG,WAAW,GAAG,SAAS;QAGjE;;WAEG;QACI,kBAAkB,CAAC,EAAE,EAAE,KAAK,GAAG,eAAe,GAAG,SAAS;QAGjE,gBAAgB;QACT,cAAc,CAAC,EAAE,EAAE,KAAK,GAAG,WAAW,GAAG,SAAS;QAGzD,gBAAgB;QACT,MAAM,CAAC,EAAE,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS;QAG5C,gBAAgB;QACT,SAAS,CAAC,EAAE,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS;QAIlD,OAAO,CAAC,UAAU;QAOL,gBAAgB,CAAC,GAAG,EAAE;YAAE,MAAM,EAAE,aAAa,CAAC;YAAC,QAAQ,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAW/G,gBAAgB;QACT,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM;QAG/D,gBAAgB;QACT,uBAAuB,CAAC,eAAe,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM;QAG3E,gBAAgB;QACT,0BAA0B,CAAC,kBAAkB,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM;QAGjF,gBAAgB;QACT,sBAAsB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM;QAG1D,gBAAgB;QACT,kBAAkB,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM;QAGzD,gBAAgB;QACT,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM;QAGrD,OAAO,CAAC,UAAU;QAOL,UAAU,CAAC,IAAI,EAAE;YAAE,MAAM,EAAE,aAAa,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAGxE,eAAe,CAAC,IAAI,EAAE;YAAE,OAAO,EAAE,aAAa,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAG9E,mBAAmB,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,aAAa,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAG9E,sBAAsB,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,aAAa,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAGjF,kBAAkB,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,aAAa,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAG7E,cAAc,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,aAAa,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAGzE,YAAY,CAAC,IAAI,EAAE;YAAE,EAAE,EAAE,aAAa,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAGtE,SAAS,CAAC,IAAI,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAOjF,gBAAgB;QACT,YAAY,CAAC,IAAI,EAAE;YAAE,MAAM,EAAE,KAAK,CAAC;YAAC,KAAK,EAAE,KAAK,CAAA;SAAE;QAOzD,OAAO,CAAC,aAAa;QAOrB,gBAAgB;QACT,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE;QAS7C,OAAO,CAAC,UAAU;QAMlB,gBAAgB;QACT,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK;QAO/D,gBAAgB;QACT,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;QAGnD,gBAAgB;QACT,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;QAGtD,gBAAgB;QACT,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;QAGlD,gBAAgB;QACT,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;QAGzC,gBAAgB;QACT,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;QAG9C,gBAAgB;QACT,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;QAI5C,OAAO,CAAC,eAAe;QAmBV,WAAW,CAAC,IAAI,EAAE;YAAE,MAAM,EAAE,aAAa,CAAA;SAAE,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,GAAG,SAAS,CAAC;QAIxF,gBAAgB,CAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAaxF,gBAAgB;QACT,iBAAiB,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE;QAUhD,OAAO,CAAC,SAAS;QAMjB,OAAO,CAAC,oBAAoB;QAS5B,OAAO,CAAC,WAAW;QAGnB,OAAO,CAAC,iBAAiB;QAIzB,OAAO,CAAC,yBAAyB;QASjC,OAAO,CAAC,sBAAsB;QAK9B,OAAO,CAAC,eAAe;QAqBvB,OAAO,CAAC,iBAAiB;QAczB,OAAO,CAAC,WAAW;QAanB,OAAO,CAAC,aAAa;QAarB,OAAO,CAAC,eAAe;QAgBV,YAAY,CAAC,IAAI,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,SAAS,CAAC;QAK9F,aAAa,CAAC,IAAI,EAAE;YAAE,MAAM,CAAC,EAAE,YAAY,CAAC,aAAa,CAAA;SAAE;gBAElD,MAAM;kBAAQ,MAAM;;QAY1C,OAAO,CAAC,gBAAgB;QAoBxB,OAAO,CAAC,mBAAmB;QA+Bd,mBAAmB,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,YAAY,CAAC,aAAa,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,SAAS,CAAC;QAItH,sBAAsB,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,GAAG;YAAE,QAAQ,EAAE,YAAY,CAAC,aAAa,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAM1H,OAAO,CAAC,QAAQ;QAIhB,gBAAgB;QACT,uBAAuB,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,aAAa,GAAG,qBAAqB;QAUlG,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,aAAa,GAAG,OAAO,CAAC,qBAAqB,CAAC;QAI7G,gBAAgB,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,YAAY,CAAC,aAAa,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,SAAS,CAAC;QAInH,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,GAAG;YAAE,QAAQ,EAAE,YAAY,CAAC,aAAa,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAMhH,oBAAoB,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,aAAa,GAAG,kBAAkB;QAU5F,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC;QAGpH,OAAO,CAAC,gBAAgB;QAOX,WAAW,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,cAAc,CAAC,WAAW,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,SAAS,CAAC;QAI9G,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,GAAG;YAAE,QAAQ,EAAE,cAAc,CAAC,WAAW,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAM3G,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,GAAG,mBAAmB;QAU3D,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC;QAInF,4CAA4C;QAC5C,OAAO,CAAC,oBAAoB;QAuCf,eAAe,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,yBAAyB,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,SAAS,CAAC;QAIpI,kBAAkB,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,GAAG;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,yBAAyB,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAKjI,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,GAAG;YAAE,IAAI,CAAC,EAAE,qBAAqB,CAAA;SAAE,GAAG,iBAAiB;QAgDhG,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,GAAG;YAAE,IAAI,CAAC,EAAE,qBAAqB,CAAA;SAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;QAIxH,OAAO,CAAC,uBAAuB;QAkB/B,OAAO,CAAC,iBAAiB;QA4BZ,oBAAoB,CAAC,IAAI,EAAE;YAAE,MAAM,EAAE,aAAa,CAAC;YAAC,cAAc,EAAE,mBAAmB,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAc/G,qBAAqB,CAAC,IAAI,EAAE;YAAE,MAAM,EAAE,aAAa,CAAA;SAAE,GAAG,mBAAmB;QAWrE,iBAAiB,CAAC,IAAI,EAAE;YAAE,MAAM,EAAE,aAAa,CAAA;SAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;QAIhF,qBAAqB,CAAC,IAAI,EAAE;YAAE,MAAM,EAAE,aAAa,CAAC;YAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE;QAQ/G,gBAAgB,CAAC,IAAI,EAAE;YAAE,MAAM,EAAE,aAAa,CAAA;SAAE,GAAG,cAAc,GAAG,SAAS;QAIvE,YAAY,CAAC,IAAI,EAAE;YAAE,MAAM,EAAE,aAAa,CAAA;SAAE,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;QAI/F;;WAEG;QACI,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC,aAAa,GAAG,KAAK;QAkBlE;;;;WAIG;QACI,gBAAgB,CAAC,GAAG,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,aAAa,CAAA;SAAE,GAAG,KAAK;QAiBvE,iBAAiB,CAAC,GAAG,EAAE;YAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;YAAC,OAAO,CAAC,EAAE,aAAa,CAAA;SAAE,GAAG,YAAY,CAAC,QAAQ,GAAG,SAAS;QAI7G,aAAa,CAAC,GAAG,EAAE;YAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;YAAC,OAAO,CAAC,EAAE,aAAa,CAAA;SAAE,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,GAAG,SAAS,CAAC;QAIxH,gBAAgB,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAA;SAAE,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,GAAG,SAAS,CAAC;QAc5G,mBAAmB,CAAC,IAAI,EAAE;YAAE,WAAW,EAAE,aAAa,CAAC;YAAC,KAAK,CAAC,EAAE,YAAY,CAAC,aAAa,CAAA;SAAE;QAgBzG,+FAA+F;QACxF,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,SAAS;QAUhF,OAAO,CAAC,gBAAgB;QA2BjB,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE;QASxE,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAInF,aAAa,CAAC,IAAI,EAAE;YAAE,MAAM,EAAE,aAAa,CAAC;YAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE;QAS7E,iBAAiB,CAAC,IAAI,EAAE;YAAE,MAAM,EAAE,aAAa,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE;QAO9D,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC;QAiCvE,UAAU,CAAC,GAAG,EAAE;YAAE,MAAM,EAAE,aAAa,CAAA;SAAE;KA6BvD;IAID,gDAAgD;IAChD,MAAM,WAAW,WAAY,SAAQ,YAAY,CAAC,MAAM;QACtD,iBAAiB,CAAC,GAAG,EAAE;YAAE,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;YAAC,OAAO,CAAC,EAAE,KAAK,CAAA;SAAE,GAAG,YAAY,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC5G,uBAAuB,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,aAAa,GAAG,qBAAqB,CAAC;QACzG,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,GAAG;YAAE,IAAI,CAAC,EAAE,qBAAqB,CAAA;SAAE,GAAG,iBAAiB,CAAC;QACvG,oBAAoB,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,aAAa,GAAG,kBAAkB,CAAC;QACnG,gBAAgB,CAAC,IAAI,EAAE;YAAE,MAAM,EAAE,SAAS,CAAA;SAAE,GAAG,cAAc,GAAG,SAAS,CAAC;QAC1E,qBAAqB,CAAC,IAAI,EAAE;YAAE,MAAM,EAAE,SAAS,CAAA;SAAE,GAAG,mBAAmB,CAAC;QACxE,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;KAChF;IAED,uDAAuD;IACvD,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,oBAAoB,GAAG,cAAc,CAAC;IAEnF,gDAAgD;IAChD,MAAM,OAAO,WAAY,SAAQ,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC;oBAC1E,KAAK,EAAE,kBAAkB;QAI5C,wDAAwD;eACpC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,oBAAoB;KAGzE;;CACF"}
1
+ {"version":3,"file":"ViewStore.d.ts","sourceRoot":"","sources":["../../src/ViewStore.ts"],"names":[],"mappings":"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"}
@@ -1236,10 +1236,23 @@ var ViewStore;
1236
1236
  constructor(props) {
1237
1237
  super({ dbType: ViewDb, props, dbName: viewDbName });
1238
1238
  }
1239
- /** Initialize a cloud container for use as a ViewDb. */
1239
+ /**
1240
+ * Initialize a cloud container for use as a ViewDb. This method is called by [[createNewContainer]].
1241
+ * It is only necessary to convert an existing container to a ViewStore container.
1242
+ * @note this deletes any existing content in the container.
1243
+ * @internal
1244
+ */
1240
1245
  static async initializeDb(props) {
1241
1246
  return super._initializeDb({ props, dbType: ViewDb, dbName: viewDbName });
1242
1247
  }
1248
+ /** Create and initialize a new BlobContainer to hold a ViewStore
1249
+ * @note the current user must have administrator rights to create containers.
1250
+ */
1251
+ static async createNewContainer(args) {
1252
+ const props = await this.createBlobContainer({ scope: args.scope, metadata: { ...args.metadata, containerType: "viewstore" } });
1253
+ await this.initializeDb(props);
1254
+ return props;
1255
+ }
1243
1256
  }
1244
1257
  ViewStore.CloudAccess = CloudAccess;
1245
1258
  })(ViewStore || (exports.ViewStore = ViewStore = {}));