@omegagrid/tree 0.11.16 → 0.11.17
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterModel.d.ts","sourceRoot":"","sources":["../../src/model/filterModel.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,MAAM,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,aAAqE,CAAC;AAqD7G,qBAAa,WAAW;IASJ,KAAK,EAAE,SAAS;IAPnC,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,SAAS,CAA4B;IAE7C,IAAI,IAAI,WAAwB;IAEhC,IAAI,SAAS,YAAsD;gBAEhD,KAAK,EAAE,SAAS;IAEnC,MAAM,CAAC,IAAI,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"filterModel.d.ts","sourceRoot":"","sources":["../../src/model/filterModel.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,MAAM,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,aAAqE,CAAC;AAqD7G,qBAAa,WAAW;IASJ,KAAK,EAAE,SAAS;IAPnC,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,SAAS,CAA4B;IAE7C,IAAI,IAAI,WAAwB;IAEhC,IAAI,SAAS,YAAsD;gBAEhD,KAAK,EAAE,SAAS;IAEnC,MAAM,CAAC,IAAI,EAAE,MAAM;IAiCnB,KAAK;CAUL"}
|
|
@@ -63,6 +63,8 @@ export class FilterModel {
|
|
|
63
63
|
filter(term) {
|
|
64
64
|
this._term = term;
|
|
65
65
|
const matcher = createMatcher(this._term, this._property, this.model.nodes);
|
|
66
|
+
// a match of the key selects the node, only the matches of the value are highlighted
|
|
67
|
+
const keyMatcher = this.model.options?.searchKeys ? createMatcher(this._term, 'key', this.model.nodes) : null;
|
|
66
68
|
const hasTerm = splitTerms(term).length > 0;
|
|
67
69
|
let matches;
|
|
68
70
|
this.model.nodes.forEach(node => {
|
|
@@ -70,7 +72,7 @@ export class FilterModel {
|
|
|
70
72
|
node.htmlValue = null;
|
|
71
73
|
if (hasTerm) {
|
|
72
74
|
matches = matcher(node);
|
|
73
|
-
node.filterState = matches.length > 0 ? tree.FilterState.Matched : tree.FilterState.Filtered;
|
|
75
|
+
node.filterState = matches.length > 0 || keyMatcher?.(node).length > 0 ? tree.FilterState.Matched : tree.FilterState.Filtered;
|
|
74
76
|
}
|
|
75
77
|
else {
|
|
76
78
|
node.filterState = tree.FilterState.Matched;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterModel.js","sourceRoot":"","sources":["../../src/model/filterModel.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"filterModel.js","sourceRoot":"","sources":["../../src/model/filterModel.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint \"@typescript-eslint/no-unused-vars\": \"off\" */\n\nimport { html, utils } from '@omegagrid/core';\nimport { tree } from '@omegagrid/core';\nimport { TreeModel } from './treeModel';\nimport { NodeModel } from './nodeModel';\n\nexport type FilterSettings = {\n\tterm: string;\n\tpropertyc: string;\n};\n\nexport type Matches = [number, number][];\n\n/**\n * Splits a search expression into terms - a comma separates them, the same way it separates\n * the values of a selection, so a selection text can be edited and searched again.\n */\nexport const splitTerms = (term: string) => (term ?? '').split(',').map(t => t.trim()).filter(t => t !== '');\n\n/** Sorts the matched ranges and merges the overlapping ones, the highlighting expects them in order. */\nconst mergeMatches = (matches: Matches) => {\n\tconst merged: Matches = [];\n\tmatches.sort((a, b) => a[0] - b[0] || a[1] - b[1]).forEach(match => {\n\t\tconst last = merged[merged.length - 1];\n\t\tif (last && match[0] <= last[1]) last[1] = Math.max(last[1], match[1]);\n\t\telse merged.push([match[0], match[1]]);\n\t});\n\treturn merged;\n};\n\nconst normalizeValue = (value: unknown) => utils.removeAccents((value ?? '').toString()).toLowerCase();\n\n/** Matches an item whose whole value is the term, the match covers the whole value. */\nconst createExactMatcher = <TItem>(term: string, property: keyof TItem) => {\n\tconst normalizedTerm = normalizeValue(term);\n\treturn (item: TItem) => {\n\t\tconst value = (item[property] ?? '').toString();\n\t\treturn (normalizeValue(value) === normalizedTerm ? [[0, value.length]] : []) as Matches;\n\t}\n};\n\n/** Matches an item having the term anywhere in its value, the matches are the found ranges. */\nconst createTermMatcher = <TItem>(term: string, property: keyof TItem) => {\n\tconst regex = new RegExp(`${utils.escapeRegExp(utils.removeAccents(term))}`, 'ig');\n\tlet match: RegExpExecArray;\n\treturn (item: TItem) => {\n\t\tconst matches: Matches = [];\n\t\twhile (match = regex.exec(utils.removeAccents((item[property] ?? \"\").toString()))) {\n\t\t\tmatches.push([match.index, regex.lastIndex]);\n\t\t}\n\t\treturn matches;\n\t}\n};\n\n/**\n * Matcher of a whole search expression - a match of any of its terms counts. A single term is\n * searched anywhere in the values, but in a list of terms a term equal to a value of some item\n * matches just that item, so a text of a selection can be edited and searched again.\n */\nconst createMatcher = (term: string, property: keyof NodeModel, nodes: NodeModel[]) => {\n\tconst terms = splitTerms(term);\n\tconst values = terms.length > 1 ? new Set(nodes.map(node => normalizeValue(node[property]))) : null;\n\tconst matchers = terms.map(t => values?.has(normalizeValue(t))\n\t\t? createExactMatcher<NodeModel>(t, property)\n\t\t: createTermMatcher<NodeModel>(t, property)\n\t);\n\treturn (node: NodeModel) => mergeMatches(matchers.flatMap(matcher => matcher(node)));\n};\n\n\nexport class FilterModel {\n\n\tprivate _term: string = null;\n\tprivate _property: keyof NodeModel = 'value';\n\n\tget term() { return this._term }\n\n\tget hasFilter() { return this._term !== '' && this._term !== null }\n\n\tconstructor(public model: TreeModel) { }\n\n\tfilter(term: string) {\n\t\tthis._term = term;\n\t\tconst matcher = createMatcher(this._term, this._property, this.model.nodes as NodeModel[]);\n\t\t// a match of the key selects the node, only the matches of the value are highlighted\n\t\tconst keyMatcher = this.model.options?.searchKeys ? createMatcher(this._term, 'key', this.model.nodes as NodeModel[]) : null;\n\t\tconst hasTerm = splitTerms(term).length > 0;\n\t\tlet matches: Matches;\n\n\t\tthis.model.nodes.forEach(node => {\n\t\t\tnode.collapsed = false;\n\t\t\tnode.htmlValue = null;\n\t\t\tif (hasTerm) {\n\t\t\t\tmatches = matcher(node);\n\t\t\t\tnode.filterState = matches.length > 0 || keyMatcher?.(node).length > 0 ? tree.FilterState.Matched : tree.FilterState.Filtered;\n\t\t\t} else {\n\t\t\t\tnode.filterState = tree.FilterState.Matched;\n\t\t\t\tnode.collapse();\n\t\t\t}\n\t\t\t\n\t\t\tif (node.filterState == tree.FilterState.Matched) {\n\t\t\t\tnode.walkUp(parentNode => {\n\t\t\t\t\tif (parentNode.filterState == tree.FilterState.Filtered) parentNode.filterState = tree.FilterState.ChildMatched;\n\t\t\t\t});\n\n\t\t\t\tif (hasTerm) {\n\t\t\t\t\tnode.htmlValue = html.highlightText(node.value, matches)\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.model.indexVisibleNodes();\n\t}\n\n\tclear() {\n\t\tthis._term = null;\n\t\tthis.model.nodes.forEach(node => {\n\t\t\tnode.filterState = tree.FilterState.Matched;\n\t\t\tnode.collapsed = false;\n\t\t\tnode.htmlValue = null;\n\t\t});\n\t\tthis.model.indexVisibleNodes();\n\t}\n\n}"]}
|
package/dist/options.d.ts
CHANGED
|
@@ -19,6 +19,8 @@ export type Options = {
|
|
|
19
19
|
allowEmpty?: boolean;
|
|
20
20
|
autoClose?: boolean;
|
|
21
21
|
search?: boolean;
|
|
22
|
+
/** the search matches the keys of the nodes too, not just their values */
|
|
23
|
+
searchKeys?: boolean;
|
|
22
24
|
fileDrop?: boolean;
|
|
23
25
|
pageSize?: number;
|
|
24
26
|
customSearch?: boolean;
|
package/dist/options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,MAAM,OAAO,GAAG;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,UAAU,GAAC,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,GAAC,UAAU,GAAC,QAAQ,GAAC,KAAK,CAAC;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAClD,WAAW,CAAC,EAAE,iBAAiB,GAAC,MAAM,GAAC,CAAC,iBAAiB,GAAC,MAAM,CAAC,EAAE,CAAC;IACpE,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,KAAK,MAAM,GAAC,cAAc,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC;IACvF,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;CAC9D,GAAG,aAAa,CAAC;AAElB,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG;IAC3C,YAAY,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,KAAK,MAAM,GAAC,cAAc,CAAC,CAAC,CAAC,CAAA;CAC3F,CAAA;AAsBD,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,WAAW,GAAE,OAAc,GAAG,OAAO,CAO5F"}
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,MAAM,OAAO,GAAG;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,UAAU,GAAC,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,GAAC,UAAU,GAAC,QAAQ,GAAC,KAAK,CAAC;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAClD,WAAW,CAAC,EAAE,iBAAiB,GAAC,MAAM,GAAC,CAAC,iBAAiB,GAAC,MAAM,CAAC,EAAE,CAAC;IACpE,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,KAAK,MAAM,GAAC,cAAc,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC;IACvF,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;CAC9D,GAAG,aAAa,CAAC;AAElB,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG;IAC3C,YAAY,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,KAAK,MAAM,GAAC,cAAc,CAAC,CAAC,CAAC,CAAA;CAC3F,CAAA;AAsBD,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,WAAW,GAAE,OAAc,GAAG,OAAO,CAO5F"}
|
package/dist/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAgD,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAgD,UAAU,EAAE,MAAM,SAAS,CAAC;AAqCnF,MAAM,eAAe,GAAqB;IACzC,UAAU,EAAE,SAAS,CAAC,mBAAmB;IACzC,qBAAqB,EAAE,SAAS,CAAC,uBAAuB;IACxD,UAAU,EAAE,UAAU,CAAC,cAAc;IACrC,WAAW,EAAE,EAAE;IACf,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,IAAI;IAClB,mBAAmB,EAAE,IAAI;IACzB,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,EAAE;IAClB,eAAe,EAAE,EAAE;IACnB,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,KAAK;IAChB,aAAa,EAAE,IAAI;IACnB,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;CACpB,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,OAA0B,EAAE,cAAuB,IAAI;IAClF,OAAO;QACN,GAAG,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC;QAC1C,GAAG,eAAe;QAClB,GAAG,WAAW;QACd,GAAG,OAAO;KACV,CAAC;AACH,CAAC","sourcesContent":["import constants from \"./constants\";\nimport { initCommonOptions, CommonOptions } from \"@omegagrid/core\";\nimport { NodeModel } from \"./model/nodeModel\";\nimport { FolderOptions, ItemProperty, ItemTypeOptions, SelectMode } from \"./types\";\nimport { TemplateResult } from \"lit-html\";\nimport { CSSResultOrNative } from \"lit\";\nimport { SelectedItemParams } from \"./model\";\n\nexport type Options = {\n\talwaysRefresh?: boolean,\n\tnodeHeight?: number,\n\trenderingNodeTreshold?: number,\n\tselectMode?: SelectMode|string,\n\tselectAllMode?: 'none'|'filtered'|'always'|false,\n\tlevelIndent?: number,\n\tmaxLevel?: number,\n\tglobalLevels?: boolean,\n\tlevelsAlwaysVisible?: boolean,\n\tcheckboxes?: boolean,\n\texpanders?: boolean,\n\tallowEmpty?: boolean,\n\tautoClose?: boolean,\n\tsearch?: boolean,\n\t/** the search matches the keys of the nodes too, not just their values */\n\tsearchKeys?: boolean,\n\tfileDrop?: boolean,\n\tpageSize?: number,\n\tcustomSearch?: boolean,\n\tfolderOptions?: FolderOptions,\n\titemProperties?: ItemProperty[],\n\titemTypeOptions?: Record<string, ItemTypeOptions>,\n\tcustomStyle?: CSSResultOrNative|string|(CSSResultOrNative|string)[],\n\tnodeRenderer?: (div: HTMLDivElement, node: NodeModel) => string|TemplateResult<1>|void,\n\tafterRenderer?: (div: HTMLDivElement, node: NodeModel) => void\n} & CommonOptions;\n\nexport type TreeDropdownOptions = Options & {\n\ttextRenderer?: (selectedItems: Map<string, SelectedItemParams>) => string|TemplateResult<1>\n}\n\nconst DEFAULT_OPTIONS: Partial<Options> = {\n\tnodeHeight: constants.DEFAULT_NODE_HEIGHT,\n\trenderingNodeTreshold: constants.RENDERING_NODE_TRESHOLD,\n\tselectMode: SelectMode.MultipleLevels,\n\tlevelIndent: 10,\n\tmaxLevel: null,\n\tglobalLevels: true,\n\tlevelsAlwaysVisible: true,\n\tallowEmpty: true,\n\titemProperties: [],\n\titemTypeOptions: {},\n\texpanders: true,\n\tsearch: false,\n\tcheckboxes: true,\n\tautoClose: false,\n\tfolderOptions: null,\n\talwaysRefresh: false,\n\tselectAllMode: false\n};\n\nexport function initOptions(options?: Partial<Options>, origOptions: Options = null): Options {\n\treturn {\n\t\t...initCommonOptions(options, origOptions),\n\t\t...DEFAULT_OPTIONS,\n\t\t...origOptions,\n\t\t...options,\n\t};\n}"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omegagrid/tree",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.17",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"description": "Universal treeview component",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"_prepublish": "yarn test && yarn lint"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@omegagrid/core": "^0.11.
|
|
31
|
-
"@omegagrid/localize": "^0.11.
|
|
30
|
+
"@omegagrid/core": "^0.11.17",
|
|
31
|
+
"@omegagrid/localize": "^0.11.17",
|
|
32
32
|
"date-fns": "^3.2.0",
|
|
33
33
|
"lit": "^3.1.1",
|
|
34
34
|
"lit-html": "^3.1.1",
|