@emuanalytics/flow-rdf-ui 4.0.13 → 4.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1251,61 +1251,177 @@ declare class FlowUiQueryBuilder extends FlowRdfElement {
1251
1251
  render(): lit_html.TemplateResult<1>;
1252
1252
  }
1253
1253
 
1254
+ /**
1255
+ * An abstract logical expression used to represent a user-defined query or filter.
1256
+ *
1257
+ * A rule set consists of one or more rules, where each rule is a single logical expression
1258
+ * of the form `<field> <operator> <value>` (for example, `name == 'John'`). A rule set combines
1259
+ * its rules using a condition, which can be either `and` or `or`. Rule sets can be nested to
1260
+ * create complex queries.
1261
+ *
1262
+ * Rule sets are typically created by the end-user using the [Query Builder](/flow-rdf-ui/web-components/flow-ui-query-builder) UI component.
1263
+ */
1254
1264
  interface FlowQueryBuilderRuleSet {
1265
+ /** The combining condition for rules in this rule set (`and` or `or`). */
1255
1266
  condition: string;
1267
+ /** One or more rules or rule sets to combine into a logical expression.*/
1256
1268
  rules: Array<FlowQueryBuilderRuleSet | FlowQueryBuilderRule>;
1257
1269
  }
1270
+ /**
1271
+ * A single abstract logical expression. Combined into a {@link FlowQueryBuilderRuleSet} to represent a user-defined query or filter.
1272
+ *
1273
+ * A rule is a single logical expression of the form `<field> <operator> <value>` (for example, `name == 'John'`).
1274
+ *
1275
+ * Supported operators are:
1276
+ *
1277
+ * - `=`: `<field>` exactly equals `<value>`.
1278
+ * - `!=`: `<field>` does not equal `<value>`.
1279
+ * - `<`: `<field>` less than `<value>`.
1280
+ * - `<=`: `<field>` less than or equal to `<value>`.
1281
+ * - `>`: `<field>` greater than `<value>`.
1282
+ * - `>=`: `<field>` greater than or equal to `<value>`.
1283
+ * - `in`: `<field>` in list of values. `<value>` is an array. (select-type fields only)
1284
+ * - `!in`: `<field>` not in list of values. `<value>` is an array. (select-type fields only)
1285
+ * - `contains`: `<field>` contains substring `<value>`. (string fields only)
1286
+ * - `!contains`: `<field>` does not contain substring `<value>`. (string fields only)
1287
+ * - `like`: `<field>` matches a wildcard pattern `<value>`. (string fields only)
1288
+ * - `!like`: `<field>` does not matched a wildcard pattern `<value>`. (string fields only)
1289
+ * - `regex`: `<field>` matches a regular expression pattern `<value>`. (string fields only)
1290
+ * - `!regex`: `<field>` does not match a regular expression pattern `<value>`. (string fields only)
1291
+ *
1292
+ * Wildcard patterns use `*` to match any sequence of characters and `?` to match any single character.
1293
+ *
1294
+ * Regular expressions use the JavaScript regular expression syntax.
1295
+ *
1296
+ * The string-matching operators are case-sensitive by default. Specify `caseInsensitive: true` in the {@link FlowQueryBuilderStringField} field definition to use case-insensitive matching.
1297
+ *
1298
+ */
1258
1299
  interface FlowQueryBuilderRule<ValueType = any> {
1300
+ /** Field identifier. */
1259
1301
  field?: string;
1302
+ /** Rule value. */
1260
1303
  value?: ValueType;
1304
+ /** Rule operator. */
1261
1305
  operator?: string;
1306
+ /** Set to `false` to disable a rule without removing it from its parent ruleset. */
1262
1307
  enabled?: boolean;
1263
1308
  }
1309
+ /**
1310
+ * An individual option for a select-type Query Builder field.
1311
+ */
1264
1312
  interface FlowQueryBuilderOption {
1313
+ /** Display name of the value. */
1265
1314
  name: string;
1315
+ /** Option identifier. */
1266
1316
  value: string;
1267
1317
  }
1318
+ /** The set of field definitions comprising a {@link FlowQueryBuilderConfig} definition. */
1268
1319
  interface FlowQueryBuilderFieldMap {
1269
1320
  [key: string]: FlowQueryBuilderField;
1270
1321
  }
1322
+ /**
1323
+ * Base interface for a Query Builder field definition. The field definition specifies how to display
1324
+ * a field in the Query Builder UI and how to convert the user-entered value to a concrete filter expression.
1325
+ *
1326
+ * The following field types are supported:
1327
+ *
1328
+ * - `string`: A text field, displayed as an input box. Supports string-matching operators.
1329
+ * - `number`: A numeric field, displayed as an numeric input box with stepper controls. Supports numeric comparison operators.
1330
+ * - `date`: A date field, displayed as a date picker. Supports numeric comparison operators.
1331
+ * - `time`: A time field, displayed as a time picker. Supports numeric comparison operators.
1332
+ * - `datetime`: A date-time field, displayed as a date-time picker. Supports numeric comparison operators.
1333
+ * - `select`: A select field, displayed as a dropdown list. Supports `in` and `!in` operators.
1334
+ *
1335
+ * In addition, all field types support equality operators (`=`, `!=`).
1336
+ *
1337
+ * @typeParam ValueType - The underlying type of the field value.
1338
+ */
1271
1339
  interface FlowQueryBuilderFieldBase<ValueType = any> {
1340
+ /** Display name for the field. */
1272
1341
  name: string;
1342
+ /** Field type: `string`, `number`, `datetime`, `date`, `time`, `select`. */
1273
1343
  type: string;
1344
+ /** @internal */
1274
1345
  value?: ValueType;
1346
+ /** Set to `true` to allow the field to be `null`. */
1275
1347
  nullable?: boolean;
1348
+ /** Optionally override supported operators for the field. */
1276
1349
  operators?: string[];
1350
+ /** Default value for the field: static value or value-producing function. */
1277
1351
  defaultValue?: ValueType | (() => ValueType);
1352
+ /** Default operator for the field. */
1278
1353
  defaultOperator?: string;
1354
+ /** Optional function to convert the user-entered value before applying a rule set converter. */
1279
1355
  convertValue?: (value: ValueType) => any;
1356
+ /** Optional validator function to validate the user-entered value. */
1280
1357
  validator?: (rule: FlowQueryBuilderRule<ValueType>) => string;
1281
1358
  }
1359
+ /**
1360
+ * Field definition for a string-type Query Builder field.
1361
+ */
1282
1362
  interface FlowQueryBuilderStringField extends FlowQueryBuilderFieldBase<string> {
1283
1363
  type: 'string';
1364
+ /** Set to `true` to perform case-insensitive matching for `like` and `regex` operators. */
1365
+ caseInsensitive?: boolean;
1284
1366
  }
1367
+ /**
1368
+ * Field definition for a number-type Query Builder field.
1369
+ */
1285
1370
  interface FlowQueryBuilderNumberField extends FlowQueryBuilderFieldBase<number> {
1286
1371
  type: 'number';
1372
+ /** Minimum allowed value for the field. */
1287
1373
  min?: number;
1374
+ /** Maximum allowed value for the field. */
1288
1375
  max?: number;
1376
+ /** Step size used by the field stepper controls. */
1289
1377
  step?: number;
1290
1378
  }
1379
+ /**
1380
+ * Base interface for date/time-type Query Builder fields.
1381
+ *
1382
+ * Note that the underlying value type for date/time fields is an ISO 8601 string.
1383
+ */
1291
1384
  interface FlowQueryBuilderDateTimeFieldBase extends FlowQueryBuilderFieldBase<string> {
1385
+ /** Luxon date format for display of the field value. */
1292
1386
  dateFormat?: string | (() => string);
1387
+ /** Time zone specifier for display of the field value. */
1293
1388
  timezone?: string | (() => string);
1389
+ /** Locale code for display of the field value. */
1294
1390
  locale?: string | (() => string);
1295
1391
  }
1296
- interface FlowQueryBuilderDateTimeField extends FlowQueryBuilderDateTimeFieldBase {
1392
+ /**
1393
+ * Field definition for a datetime-type Query Builder field.
1394
+ */ interface FlowQueryBuilderDateTimeField extends FlowQueryBuilderDateTimeFieldBase {
1297
1395
  type: 'datetime';
1298
1396
  }
1397
+ /**
1398
+ * Field definition for a date-type Query Builder field.
1399
+ */
1299
1400
  interface FlowQueryBuilderDateField extends FlowQueryBuilderDateTimeFieldBase {
1300
1401
  type: 'date';
1301
1402
  }
1403
+ /**
1404
+ * Field definition for a time-type Query Builder field.
1405
+ */
1302
1406
  interface FlowQueryBuilderTimeField extends FlowQueryBuilderDateTimeFieldBase {
1303
1407
  type: 'time';
1304
1408
  }
1409
+ /**
1410
+ * Field definition for a select-type Query Builder field.
1411
+ *
1412
+ * The underlying value type for select fields is a string (single-select) or an array of strings (multi-select).
1413
+ * When the `in` or `!in` operator is selected, the field acts as a multi-select field. For other operators,
1414
+ * the field acts as a single-select field.
1415
+ *
1416
+ */
1305
1417
  interface FlowQueryBuilderSelectField extends FlowQueryBuilderFieldBase<string | string[]> {
1306
1418
  type: 'select';
1419
+ /** The selectable options for the field. */
1307
1420
  options?: FlowQueryBuilderOption[];
1308
1421
  }
1422
+ /**
1423
+ * Map of field type names to field definitions for expansion of type parameters.
1424
+ */
1309
1425
  interface FlowQueryBuilderFieldTypeMap {
1310
1426
  string: FlowQueryBuilderStringField;
1311
1427
  number: FlowQueryBuilderNumberField;
@@ -1315,8 +1431,17 @@ interface FlowQueryBuilderFieldTypeMap {
1315
1431
  select: FlowQueryBuilderSelectField;
1316
1432
  }
1317
1433
  type FlowQueryBuilderFieldType = keyof FlowQueryBuilderFieldTypeMap;
1434
+ /**
1435
+ * The set of field types supported by the Query Builder. See {@link FlowQueryBuilderFieldBase}.
1436
+ */
1318
1437
  type FlowQueryBuilderField = FlowQueryBuilderFieldTypeMap[keyof FlowQueryBuilderFieldTypeMap];
1319
1438
  type FlowQueryBuilderTemplateFn<FieldType extends FlowQueryBuilderFieldType> = (rule: FlowQueryBuilderRule<FlowQueryBuilderFieldTypeMap[FieldType]['value']>, field: FlowQueryBuilderFieldTypeMap[FieldType], qb: FlowUiQueryBuilder, update: () => void) => TemplateResult;
1439
+ /**
1440
+ * Configuration for a [Query Builder](/flow-rdf-ui/web-components/flow-ui-query-builder) instance.
1441
+ *
1442
+ * The configuration specifies the set of fields available,
1443
+ * how to display those fields in the Query Builder UI, and how to convert the user-defined query to a concrete filter expression.
1444
+ */
1320
1445
  interface FlowQueryBuilderConfig {
1321
1446
  fields: FlowQueryBuilderFieldMap;
1322
1447
  }
@@ -1324,12 +1449,25 @@ interface FlowQueryBuilderFieldDefinition<Field extends FlowQueryBuilderFieldTyp
1324
1449
  operators: string[];
1325
1450
  template: FlowQueryBuilderTemplateFn<Field>;
1326
1451
  }
1452
+ /**
1453
+ * Options common to all Query Builder converters. These options are used to modify how a Query Builder
1454
+ * ruleset is converted to one of the supported concrete filter implementations:
1455
+ *
1456
+ * - Flo.w query definition - {@link flowQueryConverter}
1457
+ * - JavaScript filter function - {@link javascriptFilterConverter}
1458
+ * - Map layer filter - {@link mapLayerFilterConverter}
1459
+ */
1327
1460
  interface FlowQueryBuilderConverterOptions {
1461
+ /** Subset of fields defined in the query ruleset to include in the converted result. */
1328
1462
  includeFields?: string[];
1463
+ /** Subset of fields defined in the query ruleset to exclude from the converted result. */
1329
1464
  excludeFields?: string[];
1465
+ /** Map of fields to rename in the converted result. */
1330
1466
  renameFields?: Record<string, string>;
1467
+ /** Set to `true` to throw an exception on error. By default, the problematic Query Builder field is ignored. */
1468
+ throwOnError?: boolean;
1331
1469
  }
1332
- type FlowQueryBuilderConverter = (ruleSet: FlowQueryBuilderRuleSet, config: FlowQueryBuilderConfig, options?: FlowQueryBuilderConverterOptions) => any;
1470
+ type FlowQueryBuilderConverter<R = any> = (ruleSet: FlowQueryBuilderRuleSet, config: FlowQueryBuilderConfig, options?: FlowQueryBuilderConverterOptions) => R;
1333
1471
 
1334
1472
  /**
1335
1473
  * Recursively applies filters to the supplied {@link FlowQueryBuilderRuleSet}
@@ -1412,9 +1550,141 @@ declare const isRuleSet: (r: unknown) => r is FlowQueryBuilderRuleSet;
1412
1550
  */
1413
1551
  declare const isRuleOrRuleset: (r: unknown) => r is FlowQueryBuilderRule | FlowQueryBuilderRuleSet;
1414
1552
 
1415
- declare const converter$1: FlowQueryBuilderConverter;
1553
+ declare const converter$2: FlowQueryBuilderConverter;
1416
1554
 
1417
- declare const converter: FlowQueryBuilderConverter;
1555
+ declare class JavaScriptFilterError extends Error {
1556
+ constructor(msg: string);
1557
+ }
1558
+ /**
1559
+ * A JavaScript function that implements the logical expression defined by a user-specified {@link FlowQueryBuilderRuleSet}. The function
1560
+ * accepts a data object as an argument and returns a boolean result indicating whether the data object matches the rule set.
1561
+ *
1562
+ * The filter function is typically created by using the {@link javascriptFilterConverter} converter function, prior to applying
1563
+ * the filter to a collection of data objects returned from a dataset query.
1564
+ *
1565
+ * The filter function has an additional `expression` property that contains the generated JavaScript expression for debugging purposes.
1566
+ *
1567
+ * @typeParam TData The type of the data object to be filtered.
1568
+ */
1569
+ type JavaScriptFilterFn<TData = object> = ((data: TData) => boolean) & {
1570
+ /** The generated filter expression (for debugging purposes). */
1571
+ expression: string;
1572
+ };
1573
+ /**
1574
+ * A Query Builder converter that generates a JavaScript filter function from a user-specified {@link FlowQueryBuilderRuleSet}.
1575
+ *
1576
+ * The generated filter function accepts a data object as an argument and returns a boolean result indicating whether the data object
1577
+ * matches the rule set.
1578
+ *
1579
+ * This converter is typically used to apply a user-defined filter produced by the [Query Builder](/flow-rdf-ui/web-components/flow-ui-query-builder) component to a collection of data objects returned
1580
+ * from a Flo.w reactive query. The filter is applied client-side as an alternative to server-side filtering using the {@link flowQueryConverter} converter.
1581
+ *
1582
+ * See [Examples](#filtering-reactive-query-results) for example usage.
1583
+ *
1584
+ *
1585
+ * ### The generated filter function
1586
+ *
1587
+ * The abstract logical expression defined by the Query Builder ruleset is compiled into a safe and efficient JavaScript function that is designed
1588
+ * to be passed to the Array.filter method. To view the generated JavaScript expression for debugging purposes, inspect the `expression` property
1589
+ * of the returned filter function. Note that the generated expression makes use of two internal helper functions: `get(prop, data)` to retrieve a
1590
+ * sanitized property from the data object, and `regex(regex, value, caseInsensitive)` to compile, cache and evaluate regular expressions.
1591
+ *
1592
+ * Optionally, specify a type parameter when calling {@link javascriptFilterConverter} to strongly type the `data` parameter of the resulting filter function.
1593
+ *
1594
+ * @param ruleset Flo.w Query Builder ruleset to convert
1595
+ * @param config Flo.w Query Builder field configuration
1596
+ * @param options Converter options
1597
+ *
1598
+ * @typeParam TData The type of the data object to be filtered. Optionally specify to strongly type the returned filter function.
1599
+ *
1600
+ * @returns A function that accepts a data object and returns a boolean result indicating whether the data object matches the ruleset
1601
+ *
1602
+ * @example
1603
+ ### Basic usage
1604
+ ```typescript
1605
+ // Query Builder field configuration
1606
+ const config = {
1607
+ fields: {
1608
+ name: {name: 'Area Name', type: 'string', caseInsensitive: true },
1609
+ no2: {name: 'NO₂ (ppm)', type: 'number' };
1610
+ }
1611
+ };
1612
+
1613
+ // Query Builder ruleset
1614
+ const ruleset = {
1615
+ "condition": "and",
1616
+ "rules": [
1617
+ {
1618
+ "enabled": true,
1619
+ "operator": "like",
1620
+ "value": "bar*",
1621
+ "field": "name"
1622
+ },
1623
+ {
1624
+ "enabled": true,
1625
+ "operator": ">",
1626
+ "value": 20,
1627
+ "field": "no2"
1628
+ }
1629
+ ]
1630
+ }
1631
+
1632
+ const filterFn = javascriptFilterConverter(ruleset, config);
1633
+ filterFn.expression; // -> 'return (regex("^bar.*$", get("name", data), true)) && (get("no2", data) > 20);'
1634
+
1635
+ const data = [...]; // Array of data objects
1636
+ const filteredData = data.filter(filterFn);
1637
+ ```
1638
+
1639
+ @example
1640
+ ### Filtering reactive query results
1641
+
1642
+ The filter is applied to the results of a Flo.w reactive query in a computed property. The computed property will be re-evaluated whenever
1643
+ the query results or the filter ruleset changes.
1644
+
1645
+ The computed property can be bound to a map data source to display the filtered results on a map.
1646
+
1647
+ ```typescript
1648
+ // Reactive state store
1649
+ class AppState extends StateStore {
1650
+ ...
1651
+
1652
+ // User-defined Query Builder ruleset bound to Query Builder component
1653
+ @observable.ref
1654
+ queryBuilderRuleSet: FlowQueryBuilderRuleSet = { condition: 'and', rules: [] };
1655
+
1656
+ // Reactive query
1657
+ airQualityQuery = query<FeatureCollection<Geometry>>(() => {
1658
+
1659
+ const queryDefinition: QueryDefinition = {
1660
+ datasetId: 'airquality',
1661
+ format: 'geojson'
1662
+ };
1663
+
1664
+ return queryDefinition;
1665
+ });
1666
+
1667
+ // Application of client-side filter to query results
1668
+ @computed
1669
+ get filteredAirQuality() {
1670
+ // Bail out if results not yet retrieved
1671
+ if (!this.airQualityQuery.results) {
1672
+ return null;
1673
+ }
1674
+
1675
+ // Apply javascript filter to features
1676
+ const filterFn = javascriptFilterConverter(this.queryBuilderRuleSet, queryBuilderConfig);
1677
+ const filteredFeatures = this.airQualityQuery.results.features.filter((f) => filterFn(f.properties));
1678
+
1679
+ // Note: return a new FeatureCollection rather than mutating query results in-place
1680
+ return featureCollection(filteredFeatures);
1681
+ }
1682
+ }
1683
+ ```
1684
+ */
1685
+ declare const converter$1: <TData = object>(ruleset: FlowQueryBuilderRuleSet, config: FlowQueryBuilderConfig, options?: FlowQueryBuilderConverterOptions) => JavaScriptFilterFn<TData>;
1686
+
1687
+ declare const converter: FlowQueryBuilderConverter<string | undefined>;
1418
1688
 
1419
1689
  /**
1420
1690
  * Call this function to register all Flo.w RDF UI custom elements.
@@ -2186,8 +2456,7 @@ declare class FlowUiChart extends FlowRdfElement {
2186
2456
  plugins: Plugin[];
2187
2457
  /** Trigger a repaint of the chart. */
2188
2458
  repaint(): void;
2189
- firstUpdated(): void;
2190
- connectedCallback(): void;
2459
+ connectedCallback(): Promise<void>;
2191
2460
  disconnectedCallback(): void;
2192
2461
  render(): lit_html.TemplateResult<1>;
2193
2462
  }
@@ -3573,6 +3842,7 @@ declare class FlowUiMap extends FlowRdfElement {
3573
3842
  private _map?;
3574
3843
  private _initialized;
3575
3844
  private _resolveInitialized;
3845
+ private _pendingCenter?;
3576
3846
  private _mapLoading;
3577
3847
  /**
3578
3848
  * The map ID. If not provided, a unique ID will be generated.
@@ -5688,4 +5958,4 @@ declare global {
5688
5958
  }
5689
5959
  }
5690
5960
 
5691
- export { type BaseColorMapperField, type BaseColorStopOptions, type ColorMapperField, type ColorMapperOptions, type ColorMapperValue, type ColorStopOptions, type ColorStopValue, type FlowQueryBuilderConfig, type FlowQueryBuilderConverter, type FlowQueryBuilderConverterOptions, type FlowQueryBuilderDateField, type FlowQueryBuilderDateTimeField, type FlowQueryBuilderDateTimeFieldBase, type FlowQueryBuilderField, type FlowQueryBuilderFieldBase, type FlowQueryBuilderFieldDefinition, type FlowQueryBuilderFieldMap, type FlowQueryBuilderFieldType, type FlowQueryBuilderFieldTypeMap, type FlowQueryBuilderNumberField, type FlowQueryBuilderOption, type FlowQueryBuilderRule, type FlowQueryBuilderRuleSet, type FlowQueryBuilderSelectField, type FlowQueryBuilderStringField, type FlowQueryBuilderTemplateFn, type FlowQueryBuilderTimeField, type FlowAfterCollapseEvent as FlowUiAfterCollapseEvent, type FlowAfterExpandEvent as FlowUiAfterExpandEvent, type FlowAfterHideEvent as FlowUiAfterHideEvent, type FlowAfterShowEvent as FlowUiAfterShowEvent, FlowUiAlert, FlowUiAnimation, FlowUiAvatar, FlowUiBadge, type FlowBlurEvent as FlowUiBlurEvent, FlowUiBreadcrumb, FlowUiBreadcrumbItem, FlowUiButton, FlowUiButtonGroup, FlowUiCalendar, type FlowCancelEvent as FlowUiCancelEvent, FlowUiCard, FlowUiCarousel, FlowUiCarouselItem, type FlowChangeEvent as FlowUiChangeEvent, FlowUiChart, FlowUiCheckbox, type FlowClearEvent as FlowUiClearEvent, type FlowCloseEvent as FlowUiCloseEvent, type FlowCollapseEvent as FlowUiCollapseEvent, FlowUiColorMapper, FlowUiColorPicker, FlowUiColorStop, FlowUiDateTimePicker, FlowUiDetails, FlowUiDialog, FlowUiDivider, type FlowDragEvent as FlowUiDragEvent, type FlowDragStartEvent as FlowUiDragStartEvent, FlowUiDrawer, FlowUiDropdown, type FlowErrorEvent as FlowUiErrorEvent, type FlowExpandEvent as FlowUiExpandEvent, type FlowFinishEvent as FlowUiFinishEvent, type FlowFocusEvent as FlowUiFocusEvent, FlowUiGauge, type FlowHideEvent as FlowUiHideEvent, type FlowHoverEvent as FlowUiHoverEvent, FlowUiIcon, FlowUiIconButton, type FlowInitialFocusEvent as FlowUiInitialFocusEvent, FlowUiInput, type FlowInputEvent as FlowUiInputEvent, type FlowInvalidEvent as FlowUiInvalidEvent, type FlowLazyChangeEvent as FlowUiLazyChangeEvent, type FlowLazyLoadEvent as FlowUiLazyLoadEvent, type FlowLoadEvent as FlowUiLoadEvent, FlowUiMap, type FlowMapLoadEvent as FlowUiMapLoadEvent, FlowUiMenu, FlowUiMenuItem, FlowUiMenuLabel, type FlowMutationEvent as FlowUiMutationEvent, FlowUiMutationObserver, FlowUiOption, FlowUiPanel, FlowUiPanelHeader, type FlowPanelToggleEvent as FlowUiPanelToggleEvent, FlowUiPopup, FlowUiProgressBar, FlowUiProgressRing, FlowUiQueryBuilder, FlowUiRadio, FlowUiRadioGroup, FlowUiRange, type FlowRemoveEvent as FlowUiRemoveEvent, type FlowRepositionEvent as FlowUiRepositionEvent, type FlowRequestCloseEvent as FlowUiRequestCloseEvent, type FlowResizeEvent as FlowUiResizeEvent, FlowUiResizeObserver, FlowUiScrollView, FlowUiSelect, type FlowSelectEvent as FlowUiSelectEvent, type FlowShowEvent as FlowUiShowEvent, type FlowSlideChange as FlowUiSlideChange, FlowUiSpinner, FlowUiSplitView, FlowUiSplitViewDivider, FlowUiSplitViewPane, FlowUiSplitViewToggleButton, type FlowStartEvent as FlowUiStartEvent, FlowUiStepper, FlowUiStepperPanel, FlowUiSwitch, FlowUiTab, FlowUiTabGroup, type FlowTabHideEvent as FlowUiTabHideEvent, FlowUiTabPanel, type FlowTabShowEvent as FlowUiTabShowEvent, FlowUiTag, FlowUiTextarea, FlowUiTimer, FlowUiToolButton, FlowUiToolButtonGroup, FlowUiTooltip, FlowUiTree, FlowUiTreeItem, type FlowDragEndEvent as FlowUiUiDragEndEvent, FlowUiVisuallyHidden, LocalizeController, type NumberColorMapperField, type NumberColorStopOptions, type SelectColorMapperField, type SelectColorStopOptions, type StringColorMapperField, type StringColorStopOptions, type Translation, addIcons, colorMapperValueToMaplibreExpression, escapeMaplibreString, filterRuleSet, converter$1 as flowQueryConverter, getAnimationNames, getEasingNames, initialize, initializeChartJs, isRule, isRuleOrRuleset, isRuleSet, converter as mapLayerFilterConverter, registerChartComponent, registerComponents, registerIconLibrary, registerTranslation, renameRuleSetFields, setDefaultLocale, setDefaultTimeZone, transformRuleSet, unregisterIconLibrary };
5961
+ export { type BaseColorMapperField, type BaseColorStopOptions, type ColorMapperField, type ColorMapperOptions, type ColorMapperValue, type ColorStopOptions, type ColorStopValue, type FlowQueryBuilderConfig, type FlowQueryBuilderConverter, type FlowQueryBuilderConverterOptions, type FlowQueryBuilderDateField, type FlowQueryBuilderDateTimeField, type FlowQueryBuilderDateTimeFieldBase, type FlowQueryBuilderField, type FlowQueryBuilderFieldBase, type FlowQueryBuilderFieldDefinition, type FlowQueryBuilderFieldMap, type FlowQueryBuilderFieldType, type FlowQueryBuilderFieldTypeMap, type FlowQueryBuilderNumberField, type FlowQueryBuilderOption, type FlowQueryBuilderRule, type FlowQueryBuilderRuleSet, type FlowQueryBuilderSelectField, type FlowQueryBuilderStringField, type FlowQueryBuilderTemplateFn, type FlowQueryBuilderTimeField, type FlowAfterCollapseEvent as FlowUiAfterCollapseEvent, type FlowAfterExpandEvent as FlowUiAfterExpandEvent, type FlowAfterHideEvent as FlowUiAfterHideEvent, type FlowAfterShowEvent as FlowUiAfterShowEvent, FlowUiAlert, FlowUiAnimation, FlowUiAvatar, FlowUiBadge, type FlowBlurEvent as FlowUiBlurEvent, FlowUiBreadcrumb, FlowUiBreadcrumbItem, FlowUiButton, FlowUiButtonGroup, FlowUiCalendar, type FlowCancelEvent as FlowUiCancelEvent, FlowUiCard, FlowUiCarousel, FlowUiCarouselItem, type FlowChangeEvent as FlowUiChangeEvent, FlowUiChart, FlowUiCheckbox, type FlowClearEvent as FlowUiClearEvent, type FlowCloseEvent as FlowUiCloseEvent, type FlowCollapseEvent as FlowUiCollapseEvent, FlowUiColorMapper, FlowUiColorPicker, FlowUiColorStop, FlowUiDateTimePicker, FlowUiDetails, FlowUiDialog, FlowUiDivider, type FlowDragEvent as FlowUiDragEvent, type FlowDragStartEvent as FlowUiDragStartEvent, FlowUiDrawer, FlowUiDropdown, type FlowErrorEvent as FlowUiErrorEvent, type FlowExpandEvent as FlowUiExpandEvent, type FlowFinishEvent as FlowUiFinishEvent, type FlowFocusEvent as FlowUiFocusEvent, FlowUiGauge, type FlowHideEvent as FlowUiHideEvent, type FlowHoverEvent as FlowUiHoverEvent, FlowUiIcon, FlowUiIconButton, type FlowInitialFocusEvent as FlowUiInitialFocusEvent, FlowUiInput, type FlowInputEvent as FlowUiInputEvent, type FlowInvalidEvent as FlowUiInvalidEvent, type FlowLazyChangeEvent as FlowUiLazyChangeEvent, type FlowLazyLoadEvent as FlowUiLazyLoadEvent, type FlowLoadEvent as FlowUiLoadEvent, FlowUiMap, type FlowMapLoadEvent as FlowUiMapLoadEvent, FlowUiMenu, FlowUiMenuItem, FlowUiMenuLabel, type FlowMutationEvent as FlowUiMutationEvent, FlowUiMutationObserver, FlowUiOption, FlowUiPanel, FlowUiPanelHeader, type FlowPanelToggleEvent as FlowUiPanelToggleEvent, FlowUiPopup, FlowUiProgressBar, FlowUiProgressRing, FlowUiQueryBuilder, FlowUiRadio, FlowUiRadioGroup, FlowUiRange, type FlowRemoveEvent as FlowUiRemoveEvent, type FlowRepositionEvent as FlowUiRepositionEvent, type FlowRequestCloseEvent as FlowUiRequestCloseEvent, type FlowResizeEvent as FlowUiResizeEvent, FlowUiResizeObserver, FlowUiScrollView, FlowUiSelect, type FlowSelectEvent as FlowUiSelectEvent, type FlowShowEvent as FlowUiShowEvent, type FlowSlideChange as FlowUiSlideChange, FlowUiSpinner, FlowUiSplitView, FlowUiSplitViewDivider, FlowUiSplitViewPane, FlowUiSplitViewToggleButton, type FlowStartEvent as FlowUiStartEvent, FlowUiStepper, FlowUiStepperPanel, FlowUiSwitch, FlowUiTab, FlowUiTabGroup, type FlowTabHideEvent as FlowUiTabHideEvent, FlowUiTabPanel, type FlowTabShowEvent as FlowUiTabShowEvent, FlowUiTag, FlowUiTextarea, FlowUiTimer, FlowUiToolButton, FlowUiToolButtonGroup, FlowUiTooltip, FlowUiTree, FlowUiTreeItem, type FlowDragEndEvent as FlowUiUiDragEndEvent, FlowUiVisuallyHidden, JavaScriptFilterError, type JavaScriptFilterFn, LocalizeController, type NumberColorMapperField, type NumberColorStopOptions, type SelectColorMapperField, type SelectColorStopOptions, type StringColorMapperField, type StringColorStopOptions, type Translation, addIcons, colorMapperValueToMaplibreExpression, escapeMaplibreString, filterRuleSet, converter$2 as flowQueryConverter, getAnimationNames, getEasingNames, initialize, initializeChartJs, isRule, isRuleOrRuleset, isRuleSet, converter$1 as javascriptFilterConverter, converter as mapLayerFilterConverter, registerChartComponent, registerComponents, registerIconLibrary, registerTranslation, renameRuleSetFields, setDefaultLocale, setDefaultTimeZone, transformRuleSet, unregisterIconLibrary };
package/dist/index.mjs CHANGED
@@ -75,5 +75,6 @@ export { registerTranslation } from './internal/localize.mjs';
75
75
  export { LocalizeController } from './utilities/localize.mjs';
76
76
  export { filterRuleSet, isRule, isRuleOrRuleset, isRuleSet, renameRuleSetFields, transformRuleSet } from './components/query-builder/helpers.mjs';
77
77
  export { default as flowQueryConverter } from './components/query-builder/converters/flow-query-converters.mjs';
78
+ export { default as javascriptFilterConverter } from './components/query-builder/converters/javascript-filter-converter.mjs';
78
79
  export { default as mapLayerFilterConverter } from './components/query-builder/converters/map-layer-filter-converter.mjs';
79
80
  export { registerComponents } from './utilities/register-components.mjs';
@@ -1,3 +1,3 @@
1
- const version = "4.0.12";
1
+ const version = "4.0.15";
2
2
 
3
3
  export { version };
@@ -0,0 +1,5 @@
1
+ const escape = function(val) {
2
+ return val.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&");
3
+ };
4
+
5
+ export { escape };
@@ -35,35 +35,6 @@
35
35
  ],
36
36
  "references": []
37
37
  },
38
- {
39
- "name": "flow-ui-badge",
40
- "description": "Badges are used to draw attention and display statuses or counts.\n\n\n---\n\n\n\n\n### **Slots:**\n - _default_ - The badge's content.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
41
- "attributes": [
42
- {
43
- "name": "variant",
44
- "description": "The badge's theme variant.",
45
- "values": [
46
- { "name": "primary" },
47
- { "name": "secondary" },
48
- { "name": "success" },
49
- { "name": "neutral" },
50
- { "name": "warning" },
51
- { "name": "danger" }
52
- ]
53
- },
54
- {
55
- "name": "pill",
56
- "description": "Draws a pill-style badge with rounded edges.",
57
- "values": []
58
- },
59
- {
60
- "name": "pulse",
61
- "description": "Makes the badge pulsate to draw attention.",
62
- "values": []
63
- }
64
- ],
65
- "references": []
66
- },
67
38
  {
68
39
  "name": "flow-ui-animation",
69
40
  "description": "Animate elements declaratively with over 100 animation presets. Powered by the [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API).\n\n\n---\n\n\n\n\n### **Events:**\n - **flow-ui-cancel** - Emitted when the animation is canceled.\n- **flow-ui-finish** - Emitted when the animation finishes.\n- **flow-ui-start** - Emitted when the animation starts or restarts.\n\n### **Methods:**\n - **cancel()** - Clears all keyframe effects caused by this animation and aborts its playback.\n- **finish()** - Sets the playback time to the end of the animation corresponding to the current playback direction.\n\n### **Slots:**\n - _default_ - The element to animate. Avoid slotting in more than one element, as subsequent ones will be ignored. To animate multiple elements, either wrap them in a single container or use multiple `<flow-ui-animation>` elements.",
@@ -126,33 +97,6 @@
126
97
  ],
127
98
  "references": []
128
99
  },
129
- {
130
- "name": "flow-ui-breadcrumb-item",
131
- "description": "Breadcrumb Items are used inside [breadcrumbs](./flow-ui-breadcrumb) to represent different links.\n\n\n---\n\n\n\n\n### **Slots:**\n - _default_ - The breadcrumb item's label.\n- **prefix** - An optional prefix, usually an icon or icon button.\n- **suffix** - An optional suffix, usually an icon or icon button.\n- **separator** - The separator to use for the breadcrumb item. This will only change the separator for this item. If you want to change it for all items in the group, set the separator on `<flow-ui-breadcrumb>` instead.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **label** - The breadcrumb item's label.\n- **prefix** - The container that wraps the prefix.\n- **suffix** - The container that wraps the suffix.\n- **separator** - The container that wraps the separator.",
132
- "attributes": [
133
- {
134
- "name": "href",
135
- "description": "Optional URL to direct the user to when the breadcrumb item is activated. When set, a link will be rendered\ninternally. When unset, a button will be rendered instead.",
136
- "values": []
137
- },
138
- {
139
- "name": "target",
140
- "description": "Tells the browser where to open the link. Only used when `href` is set.",
141
- "values": [
142
- { "name": "_blank" },
143
- { "name": "_parent" },
144
- { "name": "_self" },
145
- { "name": "_top" }
146
- ]
147
- },
148
- {
149
- "name": "rel",
150
- "description": "The `rel` attribute to use on the link. Only used when `href` is set.",
151
- "values": []
152
- }
153
- ],
154
- "references": []
155
- },
156
100
  {
157
101
  "name": "flow-ui-avatar",
158
102
  "description": "Avatars are used to represent a person or object.\n\n\n---\n\n\n\n\n### **Slots:**\n - **icon** - The default icon to use when no image or initials are present. Works best with `<flow-ui-icon>`.\n\n### **CSS Properties:**\n - **--size** - The size of the avatar. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **icon** - The container that wraps the avatar's icon.\n- **initials** - The container that wraps the avatar's initials.\n- **image** - The avatar image. Only shown when the `image` attribute is set.",
@@ -190,41 +134,40 @@
190
134
  "references": []
191
135
  },
192
136
  {
193
- "name": "flow-ui-calendar",
194
- "description": "A calendar component for selecting dates and times.\n\n\n---\n\n\n\n\n### **Events:**\n - **flow-ui-input** - Emitted when the calendar value changes.\n- **flow-ui-change** - Emitted when the calendar value changes.\n\n### **CSS Properties:**\n - **--width** - The width of the calendar in CSS units. Set automatically if `size` is set. _(default: undefined)_\n- **--font-size** - The font size of the calendar. Set automatically if `size` is set. _(default: undefined)_\n- **--day-font-size** - The font size of the day labels. Set automatically if `size` is set. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
137
+ "name": "flow-ui-breadcrumb",
138
+ "description": "Breadcrumbs provide a group of links so users can easily navigate a website's hierarchy.\n\n\n---\n\n\n\n\n### **Slots:**\n - _default_ - One or more breadcrumb items to display.\n- **separator** - The separator to use between breadcrumb items. Works best with `<flow-ui-icon>`.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
195
139
  "attributes": [
196
140
  {
197
- "name": "value",
198
- "description": "The value of the control. (ISO8601 date/time string)",
141
+ "name": "label",
142
+ "description": "The label to use for the breadcrumb control. This will not be shown on the screen, but it will be announced by\nscreen readers and other assistive devices to provide more context for users.",
143
+ "values": []
144
+ }
145
+ ],
146
+ "references": []
147
+ },
148
+ {
149
+ "name": "flow-ui-breadcrumb-item",
150
+ "description": "Breadcrumb Items are used inside [breadcrumbs](./flow-ui-breadcrumb) to represent different links.\n\n\n---\n\n\n\n\n### **Slots:**\n - _default_ - The breadcrumb item's label.\n- **prefix** - An optional prefix, usually an icon or icon button.\n- **suffix** - An optional suffix, usually an icon or icon button.\n- **separator** - The separator to use for the breadcrumb item. This will only change the separator for this item. If you want to change it for all items in the group, set the separator on `<flow-ui-breadcrumb>` instead.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **label** - The breadcrumb item's label.\n- **prefix** - The container that wraps the prefix.\n- **suffix** - The container that wraps the suffix.\n- **separator** - The container that wraps the separator.",
151
+ "attributes": [
152
+ {
153
+ "name": "href",
154
+ "description": "Optional URL to direct the user to when the breadcrumb item is activated. When set, a link will be rendered\ninternally. When unset, a button will be rendered instead.",
199
155
  "values": []
200
156
  },
201
157
  {
202
- "name": "display-mode",
203
- "description": "Select whether to show date only, time only or both date and time.",
158
+ "name": "target",
159
+ "description": "Tells the browser where to open the link. Only used when `href` is set.",
204
160
  "values": [
205
- { "name": "date" },
206
- { "name": "time" },
207
- { "name": "datetime" }
161
+ { "name": "_blank" },
162
+ { "name": "_parent" },
163
+ { "name": "_self" },
164
+ { "name": "_top" }
208
165
  ]
209
166
  },
210
167
  {
211
- "name": "timezone",
212
- "description": "Set the timezone for display. If not set the default timezone will be used. (TZ name e.g. `'Europe/London'`)",
213
- "values": []
214
- },
215
- {
216
- "name": "locale",
217
- "description": "Set the locale for display. If not set the default locale will be used. (e.g `'en-GB'`)",
168
+ "name": "rel",
169
+ "description": "The `rel` attribute to use on the link. Only used when `href` is set.",
218
170
  "values": []
219
- },
220
- {
221
- "name": "size",
222
- "description": "Set the size of the calendar.",
223
- "values": [
224
- { "name": "small" },
225
- { "name": "medium" },
226
- { "name": "large" }
227
- ]
228
171
  }
229
172
  ],
230
173
  "references": []
@@ -379,6 +322,35 @@
379
322
  ],
380
323
  "references": []
381
324
  },
325
+ {
326
+ "name": "flow-ui-badge",
327
+ "description": "Badges are used to draw attention and display statuses or counts.\n\n\n---\n\n\n\n\n### **Slots:**\n - _default_ - The badge's content.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
328
+ "attributes": [
329
+ {
330
+ "name": "variant",
331
+ "description": "The badge's theme variant.",
332
+ "values": [
333
+ { "name": "primary" },
334
+ { "name": "secondary" },
335
+ { "name": "success" },
336
+ { "name": "neutral" },
337
+ { "name": "warning" },
338
+ { "name": "danger" }
339
+ ]
340
+ },
341
+ {
342
+ "name": "pill",
343
+ "description": "Draws a pill-style badge with rounded edges.",
344
+ "values": []
345
+ },
346
+ {
347
+ "name": "pulse",
348
+ "description": "Makes the badge pulsate to draw attention.",
349
+ "values": []
350
+ }
351
+ ],
352
+ "references": []
353
+ },
382
354
  {
383
355
  "name": "flow-ui-button-group",
384
356
  "description": "Button groups can be used to group related buttons into sections.\n\n\n---\n\n\n\n\n### **Slots:**\n - _default_ - One or more `<flow-ui-button>` elements to display in the button group.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
@@ -397,13 +369,41 @@
397
369
  "references": []
398
370
  },
399
371
  {
400
- "name": "flow-ui-breadcrumb",
401
- "description": "Breadcrumbs provide a group of links so users can easily navigate a website's hierarchy.\n\n\n---\n\n\n\n\n### **Slots:**\n - _default_ - One or more breadcrumb items to display.\n- **separator** - The separator to use between breadcrumb items. Works best with `<flow-ui-icon>`.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
372
+ "name": "flow-ui-calendar",
373
+ "description": "A calendar component for selecting dates and times.\n\n\n---\n\n\n\n\n### **Events:**\n - **flow-ui-input** - Emitted when the calendar value changes.\n- **flow-ui-change** - Emitted when the calendar value changes.\n\n### **CSS Properties:**\n - **--width** - The width of the calendar in CSS units. Set automatically if `size` is set. _(default: undefined)_\n- **--font-size** - The font size of the calendar. Set automatically if `size` is set. _(default: undefined)_\n- **--day-font-size** - The font size of the day labels. Set automatically if `size` is set. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
402
374
  "attributes": [
403
375
  {
404
- "name": "label",
405
- "description": "The label to use for the breadcrumb control. This will not be shown on the screen, but it will be announced by\nscreen readers and other assistive devices to provide more context for users.",
376
+ "name": "value",
377
+ "description": "The value of the control. (ISO8601 date/time string)",
378
+ "values": []
379
+ },
380
+ {
381
+ "name": "display-mode",
382
+ "description": "Select whether to show date only, time only or both date and time.",
383
+ "values": [
384
+ { "name": "date" },
385
+ { "name": "time" },
386
+ { "name": "datetime" }
387
+ ]
388
+ },
389
+ {
390
+ "name": "timezone",
391
+ "description": "Set the timezone for display. If not set the default timezone will be used. (TZ name e.g. `'Europe/London'`)",
406
392
  "values": []
393
+ },
394
+ {
395
+ "name": "locale",
396
+ "description": "Set the locale for display. If not set the default locale will be used. (e.g `'en-GB'`)",
397
+ "values": []
398
+ },
399
+ {
400
+ "name": "size",
401
+ "description": "Set the size of the calendar.",
402
+ "values": [
403
+ { "name": "small" },
404
+ { "name": "medium" },
405
+ { "name": "large" }
406
+ ]
407
407
  }
408
408
  ],
409
409
  "references": []
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emuanalytics/flow-rdf-ui",
3
- "version": "4.0.13",
3
+ "version": "4.0.15",
4
4
  "type": "module",
5
5
  "module": "dist/index.mjs",
6
6
  "types": "dist/index.d.ts",