@malloydata/render 0.0.71-dev230811214741 → 0.0.71

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.
@@ -1,4 +1,4 @@
1
- import { Explore, Tags } from '@malloydata/malloy';
1
+ import { Explore, TagParse } from '@malloydata/malloy';
2
2
  import { StyleDefaults } from '../data_styles';
3
3
  import { ChildRenderers, RenderTree } from '../renderer';
4
4
  import { RendererOptions } from '../renderer_types';
@@ -6,5 +6,5 @@ export declare abstract class ContainerRenderer extends RenderTree {
6
6
  childRenderers: ChildRenderers;
7
7
  protected abstract childrenStyleDefaults: StyleDefaults;
8
8
  get defaultStylesForChildren(): StyleDefaults;
9
- static make<Type extends ContainerRenderer>(c: new (document: Document, options: RendererOptions, tags?: Tags) => Type, document: Document, exploreField: Explore, options: RendererOptions, tags?: Tags): Type;
9
+ static make<Type extends ContainerRenderer>(c: new (document: Document, options: RendererOptions, tags?: TagParse) => Type, document: Document, exploreField: Explore, options: RendererOptions, tags?: TagParse): Type;
10
10
  }
@@ -58,9 +58,9 @@ exports.HTMLCurrencyRenderer = HTMLCurrencyRenderer;
58
58
  class CurrencyRendererFactory extends renderer_factory_1.RendererFactory {
59
59
  constructor() {
60
60
  super();
61
- this.addExtractor((options, value) => {
61
+ this.addExtractor((options, tag) => {
62
62
  var _a;
63
- options.currency = (_a = value) !== null && _a !== void 0 ? _a : data_styles_1.Currency.Dollars;
63
+ options.currency = (_a = tag === null || tag === void 0 ? void 0 : tag.text()) !== null && _a !== void 0 ? _a : data_styles_1.Currency.Dollars;
64
64
  }, this.rendererName);
65
65
  }
66
66
  create(document, _styleDefaults, _rendererOptions, _field, options) {
@@ -76,10 +76,10 @@ HTMLDataVolumeRenderer.tbMultiplier = _a.gbMultiplier * _a.kbMultiplier;
76
76
  class DataVolumeRendererFactory extends renderer_factory_1.RendererFactory {
77
77
  constructor() {
78
78
  super();
79
- this.addExtractor((options, value) => {
79
+ this.addExtractor((options, tag) => {
80
80
  var _b;
81
81
  options.data_volume_unit =
82
- (_b = value) !== null && _b !== void 0 ? _b : data_styles_1.DataVolumeUnit.Bytes;
82
+ (_b = tag === null || tag === void 0 ? void 0 : tag.text()) !== null && _b !== void 0 ? _b : data_styles_1.DataVolumeUnit.Bytes;
83
83
  }, this.rendererName);
84
84
  }
85
85
  create(document, _styleDefaults, _rendererOptions, _field, options) {
@@ -92,7 +92,8 @@ class DurationRendererFactory extends renderer_factory_1.RendererFactory {
92
92
  super();
93
93
  this.addExtractor((options, value) => {
94
94
  var _a;
95
- options.duration_unit = (_a = value) !== null && _a !== void 0 ? _a : data_styles_1.DurationUnit.Seconds;
95
+ options.duration_unit =
96
+ (_a = value === null || value === void 0 ? void 0 : value.text()) !== null && _a !== void 0 ? _a : data_styles_1.DurationUnit.Seconds;
96
97
  }, this.rendererName);
97
98
  }
98
99
  create(document, _styleDefaults, _rendererOptions, _field, options) {
@@ -1,4 +1,4 @@
1
- import { DataArray, Explore, Field, Result, Tags } from '@malloydata/malloy';
1
+ import { DataArray, Explore, Field, Result, TagParse } from '@malloydata/malloy';
2
2
  import { StyleDefaults } from '../data_styles';
3
3
  import { Renderer } from '../renderer';
4
4
  import { RendererOptions } from '../renderer_types';
@@ -12,4 +12,4 @@ export declare class JSONView {
12
12
  constructor(document: Document);
13
13
  render(table: DataArray): Promise<HTMLElement>;
14
14
  }
15
- export declare function makeRenderer(field: Explore | Field, document: Document, options: RendererOptions, styleDefaults: StyleDefaults, queryTimezone: string | undefined, tags?: Tags): Renderer;
15
+ export declare function makeRenderer(field: Explore | Field, document: Document, options: RendererOptions, styleDefaults: StyleDefaults, queryTimezone: string | undefined, tags?: TagParse): Renderer;
@@ -39,7 +39,7 @@ class HTMLView {
39
39
  const table = result.data;
40
40
  const renderer = makeRenderer(table.field, this.document, options, {
41
41
  size: 'large',
42
- }, table.field.structDef.queryTimezone, result.getTags());
42
+ }, table.field.structDef.queryTimezone, result.tagParse());
43
43
  try {
44
44
  // TODO Implement row streaming capability for some renderers: some renderers should be usable
45
45
  // as a builder with `begin(field: StructDef)`, `row(field: StructDef, row: QueryDataRow)`,
@@ -145,7 +145,7 @@ function isContainer(field) {
145
145
  function makeRenderer(field, document, options, styleDefaults, queryTimezone, tags) {
146
146
  const renderDef = getRendererOptions(field, options.dataStyles);
147
147
  options.dataStyles[field.name] = renderDef;
148
- const renderer = new main_renderer_factory_1.MainRendererFactory().create(renderDef, tags === null || tags === void 0 ? void 0 : tags.getMalloyTags(), document, styleDefaults, options, field, queryTimezone);
148
+ const renderer = new main_renderer_factory_1.MainRendererFactory().create(renderDef, tags, document, styleDefaults, options, field, queryTimezone);
149
149
  if (renderer) {
150
150
  return renderer;
151
151
  }
@@ -172,7 +172,7 @@ function makeContainerRenderer(cType, document, explore, options, tags) {
172
172
  const c = container_1.ContainerRenderer.make(cType, document, explore, options, tags);
173
173
  const result = {};
174
174
  explore.intrinsicFields.forEach((field) => {
175
- result[field.name] = makeRenderer(field, document, options, c.defaultStylesForChildren, explore.queryTimezone, field.getTags());
175
+ result[field.name] = makeRenderer(field, document, options, c.defaultStylesForChildren, explore.queryTimezone, field.tagParse());
176
176
  });
177
177
  c.childRenderers = result;
178
178
  return c;
@@ -52,9 +52,9 @@ exports.HTMLNumberRenderer = HTMLNumberRenderer;
52
52
  class NumberRendererFactory extends renderer_factory_1.RendererFactory {
53
53
  constructor() {
54
54
  super();
55
- this.addExtractor((options, value) => {
56
- options.value_format = value;
57
- }, this.rendererName, 'value_format');
55
+ this.addExtractor((options, tagObj) => {
56
+ options.value_format = tagObj === null || tagObj === void 0 ? void 0 : tagObj.text();
57
+ }, this.rendererName, 'format');
58
58
  }
59
59
  activates(field) {
60
60
  return (field.hasParentExplore() &&
@@ -5,11 +5,11 @@ import { Renderer } from '../renderer';
5
5
  export declare class HTMLTableRenderer extends ContainerRenderer {
6
6
  protected childrenStyleDefaults: StyleDefaults;
7
7
  render(table: DataColumn): Promise<HTMLElement>;
8
- calculatePivotDimensions(table: DataColumn): {
8
+ calculatePivotDimensions(table: DataColumn, userSpecifiedDimensions?: Array<string>): {
9
9
  dimensions: SortableField[];
10
10
  nonDimensions: SortableField[];
11
11
  };
12
- generatePivotedCells(table: DataColumn, shouldTranspose: boolean): Promise<Map<string, Map<string, HTMLTableCellElement>>>;
12
+ generatePivotedCells(table: DataColumn, shouldTranspose: boolean, userSpecifiedDimensions?: Array<string>): Promise<Map<string, Map<string, HTMLTableCellElement>>>;
13
13
  generateNoValueCell(field: Field, shouldTranspose: boolean): HTMLTableCellElement;
14
14
  createCellAndRender(childRenderer: Renderer, value: DataColumn, shouldTranspose: boolean): Promise<HTMLTableCellElement>;
15
15
  createEmptyHeaderCell(): HTMLTableCellElement;
@@ -23,6 +23,7 @@
23
23
  */
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.HTMLTableRenderer = void 0;
26
+ const malloy_1 = require("@malloydata/malloy");
26
27
  const drill_1 = require("../drill");
27
28
  const container_1 = require("./container");
28
29
  const number_1 = require("./number");
@@ -44,9 +45,10 @@ class PivotedField {
44
45
  }
45
46
  }
46
47
  class PivotedColumnField {
47
- constructor(pivotedField, field) {
48
+ constructor(pivotedField, field, userDefinedPivotDimensions) {
48
49
  this.pivotedField = pivotedField;
49
50
  this.field = field;
51
+ this.userDefinedPivotDimensions = userDefinedPivotDimensions;
50
52
  }
51
53
  isPivotedColumnField() {
52
54
  return this instanceof PivotedColumnField;
@@ -60,7 +62,7 @@ class HTMLTableRenderer extends container_1.ContainerRenderer {
60
62
  };
61
63
  }
62
64
  async render(table) {
63
- var _a;
65
+ var _a, _b, _c, _d, _e, _f;
64
66
  if (table.isNull()) {
65
67
  return this.document.createElement('span');
66
68
  }
@@ -85,9 +87,14 @@ class HTMLTableRenderer extends container_1.ContainerRenderer {
85
87
  const shouldPivot = childRenderer instanceof HTMLTableRenderer &&
86
88
  (0, utils_1.tagIsPresent)(childRenderer.tags, 'pivot');
87
89
  if (shouldPivot) {
88
- const pivotedFields = new Map();
90
+ const dimensionsTag = (_d = (_c = (_b = (_a = childRenderer.tags) === null || _a === void 0 ? void 0 : _a.tag) === null || _b === void 0 ? void 0 : _b.properties) === null || _c === void 0 ? void 0 : _c['pivot'].properties) === null || _d === void 0 ? void 0 : _d['dimensions'];
91
+ const userDefinedDimensions = dimensionsTag
92
+ ? (_e = new malloy_1.Tag(dimensionsTag)
93
+ .array()) === null || _e === void 0 ? void 0 : _e.map(dimension => dimension.text()).filter(dimension => dimension !== undefined).map(dimension => dimension)
94
+ : undefined;
89
95
  let dimensions = undefined;
90
96
  let nonDimensions = [];
97
+ const pivotedFields = new Map();
91
98
  for (const row of table) {
92
99
  const dc = row.cell(field);
93
100
  if (dc.isNull()) {
@@ -97,7 +104,7 @@ class HTMLTableRenderer extends container_1.ContainerRenderer {
97
104
  throw new Error(`Can not pivot field ${field.name}.`);
98
105
  }
99
106
  if (!dimensions) {
100
- const dimensionsResult = childRenderer.calculatePivotDimensions(dc);
107
+ const dimensionsResult = childRenderer.calculatePivotDimensions(dc, userDefinedDimensions);
101
108
  dimensions = dimensionsResult.dimensions;
102
109
  nonDimensions = dimensionsResult.nonDimensions;
103
110
  }
@@ -141,7 +148,7 @@ class HTMLTableRenderer extends container_1.ContainerRenderer {
141
148
  });
142
149
  for (const pf of sortedPivotedFields) {
143
150
  for (const nonDimension of nonDimensions) {
144
- columnFields.push(new PivotedColumnField(pf, nonDimension.field));
151
+ columnFields.push(new PivotedColumnField(pf, nonDimension.field, userDefinedDimensions));
145
152
  cells[rowIndex][columnIndex] = childRenderer.createHeaderCell(nonDimension.field, shouldTranspose);
146
153
  columnIndex++;
147
154
  }
@@ -223,12 +230,12 @@ class HTMLTableRenderer extends container_1.ContainerRenderer {
223
230
  const childTableRecord = row.cell(field.pivotedField.parentField);
224
231
  await (0, utils_1.yieldTask)();
225
232
  if (field.pivotedField.key !== currentPivotedFieldKey) {
226
- pivotedCells = await childRenderer.generatePivotedCells(childTableRecord, shouldTranspose);
233
+ pivotedCells = await childRenderer.generatePivotedCells(childTableRecord, shouldTranspose, field.userDefinedPivotDimensions);
227
234
  currentPivotedFieldKey = field.pivotedField.key;
228
235
  }
229
236
  const pfKey = field.pivotedField.key;
230
237
  if (pivotedCells.has(pfKey) &&
231
- ((_a = pivotedCells.get(pfKey)) === null || _a === void 0 ? void 0 : _a.has(field.field.name))) {
238
+ ((_f = pivotedCells.get(pfKey)) === null || _f === void 0 ? void 0 : _f.has(field.field.name))) {
232
239
  cells[rowIndex][columnIndex] = pivotedCells
233
240
  .get(pfKey)
234
241
  .get(field.field.name);
@@ -297,12 +304,11 @@ class HTMLTableRenderer extends container_1.ContainerRenderer {
297
304
  `;
298
305
  return tableElement;
299
306
  }
300
- calculatePivotDimensions(table) {
307
+ calculatePivotDimensions(table, userSpecifiedDimensions) {
301
308
  if (!table.isArray() && !table.isRecord()) {
302
309
  throw new Error(`Could not pivot ${table.field.name}`);
303
310
  }
304
311
  let dimensions = undefined;
305
- const userSpecifiedDimensions = (0, utils_1.parseCommaSeparatedParameterTagValue)(this.tags, 'pivot_dimensions');
306
312
  if (userSpecifiedDimensions) {
307
313
  dimensions = table.field.allFieldsWithOrder.filter(f => userSpecifiedDimensions.indexOf(f.field.name) >= 0);
308
314
  if (dimensions.length !== userSpecifiedDimensions.length) {
@@ -323,7 +329,7 @@ class HTMLTableRenderer extends container_1.ContainerRenderer {
323
329
  }
324
330
  return { dimensions, nonDimensions };
325
331
  }
326
- async generatePivotedCells(table, shouldTranspose) {
332
+ async generatePivotedCells(table, shouldTranspose, userSpecifiedDimensions) {
327
333
  const result = new Map();
328
334
  if (table.isNull()) {
329
335
  return result;
@@ -331,7 +337,7 @@ class HTMLTableRenderer extends container_1.ContainerRenderer {
331
337
  if (!table.isArray() && !table.isRecord()) {
332
338
  throw new Error(`Could not pivot ${table.field.name}`);
333
339
  }
334
- const { dimensions, nonDimensions } = this.calculatePivotDimensions(table);
340
+ const { dimensions, nonDimensions } = this.calculatePivotDimensions(table, userSpecifiedDimensions);
335
341
  for (const row of table) {
336
342
  const pf = new PivotedField(table.field, dimensions.map(f => row.cell(f.field.name)), nonDimensions.length);
337
343
  const renderedCells = new Map();
@@ -1,4 +1,4 @@
1
- import { DateTimeframe, Field, Tags, TimestampTimeframe } from '@malloydata/malloy';
1
+ import { DateTimeframe, Field, TagParse, Tags, TimestampTimeframe } from '@malloydata/malloy';
2
2
  import { RenderDef } from '../data_styles';
3
3
  import { RendererOptions } from '../renderer_types';
4
4
  export declare function getColorScale(type: 'temporal' | 'ordinal' | 'quantitative' | 'nominal' | undefined, isRectMark: boolean, hasOverlappingText?: boolean): {
@@ -11,6 +11,6 @@ export declare function createErrorElement(document: Document, error: string | E
11
11
  export declare function createNullElement(document: Document): HTMLElement;
12
12
  export declare function createDrillIcon(document: Document): HTMLElement;
13
13
  export declare function formatTitle(options: RendererOptions, field: Field, renderDef?: RenderDef | undefined, timezone?: string): string;
14
- export declare function tagIsPresent(tags: Tags | undefined, tagToCheck: string): boolean;
14
+ export declare function tagIsPresent(tags: TagParse | undefined, tagToCheck: string): boolean;
15
15
  export declare function parameterTagValue(tags: Tags | undefined, tagToGetValue: string): string | undefined;
16
16
  export declare function parseCommaSeparatedParameterTagValue(tags: Tags | undefined, tagToGetValue: string): string[] | undefined;
@@ -228,8 +228,9 @@ function formatTitle(options, field, renderDef, timezone) {
228
228
  }
229
229
  exports.formatTitle = formatTitle;
230
230
  function tagIsPresent(tags, tagToCheck) {
231
- const tagProperty = tags === null || tags === void 0 ? void 0 : tags.getMalloyTags().properties[tagToCheck];
232
- return tagProperty !== undefined && tagProperty !== false;
231
+ var _a, _b;
232
+ const tagProperty = (_b = (_a = tags === null || tags === void 0 ? void 0 : tags.tag) === null || _a === void 0 ? void 0 : _a.properties) === null || _b === void 0 ? void 0 : _b[tagToCheck];
233
+ return tagProperty !== undefined;
233
234
  }
234
235
  exports.tagIsPresent = tagIsPresent;
235
236
  function parameterTagValue(tags, tagToGetValue) {
@@ -1,4 +1,4 @@
1
- import { Field, Explore, MalloyTags, MalloyTagProperties } from '@malloydata/malloy';
1
+ import { Field, Explore, TagParse } from '@malloydata/malloy';
2
2
  import { DataRenderOptions, RenderDef, StyleDefaults } from './data_styles';
3
3
  import { Renderer } from './renderer';
4
4
  import { RendererFactory } from './renderer_factory';
@@ -29,7 +29,7 @@ import { DataVolumeRendererFactory } from './html/data_volume';
29
29
  import { DurationRendererFactory } from './html/duration';
30
30
  export declare class MainRendererFactory {
31
31
  static renderFactories: (JSONRendererFactory | TextRendererFactory | NumberRendererFactory | ShapeMapRendererFactory | PointMapRendererFactory | ImageRendererFactory | SegmentMapRendererFactory | VegaRendererFactory | LineChartRendererFactory | SparkLineRendererFactory | BarChartRendererFactory | BarSparkLineRendererFactory | AreaSparkLineRendererFactory | ColumnSparkLineRendererFactory | ScatterChartRendererFactory | DateRendererFactory | CurrencyRendererFactory | PercentRendererFactory | BytesRendererFactory | BooleanRendererFactory | LinkRendererFactory | UnsupportedRendererFactory | DataVolumeRendererFactory | DurationRendererFactory)[];
32
- create(renderDef: RenderDef | undefined, tags: MalloyTags | undefined, document: Document, styleDefaults: StyleDefaults, rendererOptions: RendererOptions, field: Field | Explore, timezone?: string | undefined): Renderer | undefined;
32
+ create(renderDef: RenderDef | undefined, tags: TagParse | undefined, document: Document, styleDefaults: StyleDefaults, rendererOptions: RendererOptions, field: Field | Explore, timezone?: string | undefined): Renderer | undefined;
33
33
  matchesRenderDef(renderDef: RenderDef | undefined, factory: RendererFactory<DataRenderOptions>): boolean | "" | undefined;
34
- matchesTag(properties: MalloyTagProperties, factory: RendererFactory<DataRenderOptions>): string | boolean | undefined;
34
+ matchesTag(tagParse: TagParse | undefined, factory: RendererFactory<DataRenderOptions>): boolean | "" | undefined;
35
35
  }
@@ -27,12 +27,9 @@ const data_volume_1 = require("./html/data_volume");
27
27
  const duration_1 = require("./html/duration");
28
28
  class MainRendererFactory {
29
29
  create(renderDef, tags, document, styleDefaults, rendererOptions, field, timezone) {
30
- var _a;
31
- const tagProperties = (_a = tags === null || tags === void 0 ? void 0 : tags.properties) !== null && _a !== void 0 ? _a : {};
32
30
  let factory;
33
31
  for (const f of MainRendererFactory.renderFactories) {
34
- if (((this.matchesRenderDef(renderDef, f) ||
35
- this.matchesTag(tagProperties, f)) &&
32
+ if (((this.matchesRenderDef(renderDef, f) || this.matchesTag(tags, f)) &&
36
33
  f.isValidMatch(field)) ||
37
34
  f.activates(field)) {
38
35
  factory = f;
@@ -40,15 +37,19 @@ class MainRendererFactory {
40
37
  break;
41
38
  }
42
39
  }
43
- return factory === null || factory === void 0 ? void 0 : factory.create(document, styleDefaults, rendererOptions, field, renderDef || factory.parseTagParameters(tagProperties) || {}, timezone);
40
+ return factory === null || factory === void 0 ? void 0 : factory.create(document, styleDefaults, rendererOptions, field, renderDef || factory.parseTagParameters(tags) || {}, timezone);
44
41
  }
45
42
  matchesRenderDef(renderDef, factory) {
46
43
  return (renderDef &&
47
44
  factory.rendererName &&
48
45
  renderDef.renderer === factory.rendererName);
49
46
  }
50
- matchesTag(properties, factory) {
51
- return (properties && factory.rendererName && properties[factory.rendererName]);
47
+ matchesTag(tagParse, factory) {
48
+ var _a;
49
+ const properties = (_a = tagParse === null || tagParse === void 0 ? void 0 : tagParse.tag) === null || _a === void 0 ? void 0 : _a.properties;
50
+ return (properties &&
51
+ factory.rendererName &&
52
+ properties[factory.rendererName] !== undefined);
52
53
  }
53
54
  }
54
55
  exports.MainRendererFactory = MainRendererFactory;
@@ -1,4 +1,4 @@
1
- import { DataColumn, Tags } from '@malloydata/malloy';
1
+ import { DataColumn, TagParse } from '@malloydata/malloy';
2
2
  import { RendererOptions } from './renderer_types';
3
3
  export declare type ChildRenderers = {
4
4
  [fieldName: string]: Renderer;
@@ -9,8 +9,8 @@ export interface Renderer {
9
9
  export declare abstract class RenderTree implements Renderer {
10
10
  protected readonly document: Document;
11
11
  protected readonly options: RendererOptions;
12
- protected readonly tags?: Tags | undefined;
13
- constructor(document: Document, options: RendererOptions, tags?: Tags | undefined);
12
+ protected readonly tags?: TagParse | undefined;
13
+ constructor(document: Document, options: RendererOptions, tags?: TagParse | undefined);
14
14
  protected abstract get childRenderers(): ChildRenderers;
15
15
  abstract render(value: DataColumn): Promise<HTMLElement>;
16
16
  }
@@ -1,15 +1,15 @@
1
- import { Explore, Field, MalloyTagProperties } from '@malloydata/malloy';
1
+ import { Explore, Field, Tag, TagParse } from '@malloydata/malloy';
2
2
  import { Renderer } from './renderer';
3
3
  import { DataRenderOptions, RenderDef, StyleDefaults } from './data_styles';
4
4
  import { RendererOptions } from './renderer_types';
5
- declare type TagPropertyExtractor<T extends DataRenderOptions> = (options: T, extractedValue: string | undefined) => void;
5
+ declare type TagPropertyExtractor<T extends DataRenderOptions> = (options: T, tagObj: Tag | undefined) => void;
6
6
  export declare abstract class RendererFactory<T extends DataRenderOptions> {
7
7
  readonly tagOptionExtractors: Record<string, TagPropertyExtractor<T>>;
8
8
  protected addExtractor(extractor: TagPropertyExtractor<T>, ...tags: string[]): void;
9
9
  activates(_field: Field | Explore): boolean;
10
10
  isValidMatch(_field: Field | Explore): boolean;
11
11
  matches(renderDef: RenderDef): boolean;
12
- parseTagParameters(tagProperties: MalloyTagProperties): T;
12
+ parseTagParameters(tagParse: TagParse | undefined): T;
13
13
  abstract get rendererName(): string | undefined;
14
14
  abstract create(document: Document, styleDefaults: StyleDefaults, rendererOptions: RendererOptions, field: Field | Explore, renderOptions: T, timezone?: string): Renderer;
15
15
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RendererFactory = void 0;
4
+ const malloy_1 = require("@malloydata/malloy");
4
5
  class RendererFactory {
5
6
  constructor() {
6
7
  this.tagOptionExtractors = {};
@@ -20,15 +21,13 @@ class RendererFactory {
20
21
  matches(renderDef) {
21
22
  return renderDef.renderer === this.rendererName;
22
23
  }
23
- parseTagParameters(tagProperties) {
24
+ parseTagParameters(tagParse) {
25
+ var _a;
24
26
  const options = {};
25
27
  for (const tag in this.tagOptionExtractors) {
26
- let tagValue = undefined;
27
- if (tagProperties[tag]) {
28
- if (typeof tagProperties[tag] === 'string') {
29
- tagValue = tagProperties[tag];
30
- }
31
- this.tagOptionExtractors[tag](options, tagValue);
28
+ const tagValue = (_a = tagParse === null || tagParse === void 0 ? void 0 : tagParse.tag.properties) === null || _a === void 0 ? void 0 : _a[tag];
29
+ if (tagValue) {
30
+ this.tagOptionExtractors[tag](options, tagValue ? new malloy_1.Tag(tagValue) : undefined);
32
31
  }
33
32
  }
34
33
  return options;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@malloydata/render",
3
- "version": "0.0.71-dev230811214741",
3
+ "version": "0.0.71",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -18,7 +18,7 @@
18
18
  "prepublishOnly": "npm run build"
19
19
  },
20
20
  "dependencies": {
21
- "@malloydata/malloy": "^0.0.71-dev230811214741",
21
+ "@malloydata/malloy": "^0.0.71",
22
22
  "@types/luxon": "^2.4.0",
23
23
  "lodash": "^4.17.20",
24
24
  "luxon": "^2.4.0",