@itwin/appui-abstract 4.0.0-dev.10 → 4.0.0-dev.101
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/CHANGELOG.md +144 -1
- package/lib/cjs/appui-abstract/BaseUiItemsProvider.d.ts +5 -5
- package/lib/cjs/appui-abstract/BaseUiItemsProvider.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/BaseUiItemsProvider.js +4 -3
- package/lib/cjs/appui-abstract/BaseUiItemsProvider.js.map +1 -1
- package/lib/cjs/appui-abstract/UiAdmin.js +1 -1
- package/lib/cjs/appui-abstract/UiAdmin.js.map +1 -1
- package/lib/cjs/appui-abstract/UiItemsManager.d.ts +6 -6
- package/lib/cjs/appui-abstract/UiItemsManager.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/UiItemsManager.js +17 -22
- package/lib/cjs/appui-abstract/UiItemsManager.js.map +1 -1
- package/lib/cjs/appui-abstract/UiItemsProvider.d.ts +5 -4
- package/lib/cjs/appui-abstract/UiItemsProvider.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/UiItemsProvider.js.map +1 -1
- package/lib/cjs/appui-abstract/backstage/BackstageItem.d.ts +3 -3
- package/lib/cjs/appui-abstract/backstage/BackstageItem.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/backstage/BackstageItem.js +3 -3
- package/lib/cjs/appui-abstract/backstage/BackstageItem.js.map +1 -1
- package/lib/cjs/appui-abstract/backstage/BackstageItemsManager.js.map +1 -1
- package/lib/cjs/appui-abstract/content/StandardContentLayouts.js +1 -1
- package/lib/cjs/appui-abstract/content/StandardContentLayouts.js.map +1 -1
- package/lib/cjs/appui-abstract/dialogs/DialogItem.d.ts +1 -1
- package/lib/cjs/appui-abstract/dialogs/DialogItem.js.map +1 -1
- package/lib/cjs/appui-abstract/dialogs/UiLayoutDataProvider.js +1 -1
- package/lib/cjs/appui-abstract/dialogs/UiLayoutDataProvider.js.map +1 -1
- package/lib/cjs/appui-abstract/items/AbstractItemProps.d.ts +1 -1
- package/lib/cjs/appui-abstract/items/AbstractItemProps.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/properties/Description.d.ts +1 -4
- package/lib/cjs/appui-abstract/properties/Description.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/properties/Description.js.map +1 -1
- package/lib/cjs/appui-abstract/properties/EditorParams.d.ts +1 -1
- package/lib/cjs/appui-abstract/properties/EditorParams.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/properties/Value.d.ts +1 -1
- package/lib/cjs/appui-abstract/properties/Value.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/statusbar/StatusBarItem.d.ts +6 -6
- package/lib/cjs/appui-abstract/statusbar/StatusBarItem.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/statusbar/StatusBarItem.js +1 -1
- package/lib/cjs/appui-abstract/statusbar/StatusBarItem.js.map +1 -1
- package/lib/cjs/appui-abstract/statusbar/StatusBarItemsManager.js.map +1 -1
- package/lib/cjs/appui-abstract/toolbars/ToolbarItem.d.ts +5 -5
- package/lib/cjs/appui-abstract/toolbars/ToolbarItem.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/toolbars/ToolbarItem.js +1 -1
- package/lib/cjs/appui-abstract/toolbars/ToolbarItem.js.map +1 -1
- package/lib/cjs/appui-abstract/toolbars/ToolbarItemsManager.js.map +1 -1
- package/lib/cjs/appui-abstract/utils/IconSpecUtilities.d.ts +12 -0
- package/lib/cjs/appui-abstract/utils/IconSpecUtilities.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/utils/IconSpecUtilities.js +20 -1
- package/lib/cjs/appui-abstract/utils/IconSpecUtilities.js.map +1 -1
- package/lib/cjs/appui-abstract/utils/callbacks.d.ts +4 -4
- package/lib/cjs/appui-abstract/utils/callbacks.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/utils/filter/filters.d.ts +3 -3
- package/lib/cjs/appui-abstract/utils/filter/filters.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/utils/filter/filters.js +28 -28
- package/lib/cjs/appui-abstract/utils/filter/filters.js.map +1 -1
- package/lib/cjs/appui-abstract/utils/filter/map.js +15 -17
- package/lib/cjs/appui-abstract/utils/filter/map.js.map +1 -1
- package/lib/cjs/appui-abstract/utils/filter/strings.js +2 -2
- package/lib/cjs/appui-abstract/utils/filter/strings.js.map +1 -1
- package/lib/cjs/appui-abstract/widget/AbstractWidgetProps.d.ts +24 -7
- package/lib/cjs/appui-abstract/widget/AbstractWidgetProps.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/widget/AbstractWidgetProps.js.map +1 -1
- package/lib/cjs/appui-abstract/widget/StagePanel.d.ts +19 -4
- package/lib/cjs/appui-abstract/widget/StagePanel.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/widget/StagePanel.js +21 -5
- package/lib/cjs/appui-abstract/widget/StagePanel.js.map +1 -1
- package/lib/cjs/appui-abstract.js +5 -1
- package/lib/cjs/appui-abstract.js.map +1 -1
- package/lib/esm/appui-abstract/BaseUiItemsProvider.d.ts +5 -5
- package/lib/esm/appui-abstract/BaseUiItemsProvider.d.ts.map +1 -1
- package/lib/esm/appui-abstract/BaseUiItemsProvider.js +4 -3
- package/lib/esm/appui-abstract/BaseUiItemsProvider.js.map +1 -1
- package/lib/esm/appui-abstract/UiAdmin.js +2 -1
- package/lib/esm/appui-abstract/UiAdmin.js.map +1 -1
- package/lib/esm/appui-abstract/UiItemsManager.d.ts +6 -6
- package/lib/esm/appui-abstract/UiItemsManager.d.ts.map +1 -1
- package/lib/esm/appui-abstract/UiItemsManager.js +18 -22
- package/lib/esm/appui-abstract/UiItemsManager.js.map +1 -1
- package/lib/esm/appui-abstract/UiItemsProvider.d.ts +5 -4
- package/lib/esm/appui-abstract/UiItemsProvider.d.ts.map +1 -1
- package/lib/esm/appui-abstract/UiItemsProvider.js.map +1 -1
- package/lib/esm/appui-abstract/backstage/BackstageItem.d.ts +3 -3
- package/lib/esm/appui-abstract/backstage/BackstageItem.d.ts.map +1 -1
- package/lib/esm/appui-abstract/backstage/BackstageItem.js +4 -3
- package/lib/esm/appui-abstract/backstage/BackstageItem.js.map +1 -1
- package/lib/esm/appui-abstract/backstage/BackstageItemsManager.js.map +1 -1
- package/lib/esm/appui-abstract/content/StandardContentLayouts.js +2 -1
- package/lib/esm/appui-abstract/content/StandardContentLayouts.js.map +1 -1
- package/lib/esm/appui-abstract/dialogs/DialogItem.d.ts +1 -1
- package/lib/esm/appui-abstract/dialogs/DialogItem.js.map +1 -1
- package/lib/esm/appui-abstract/dialogs/UiLayoutDataProvider.js +2 -1
- package/lib/esm/appui-abstract/dialogs/UiLayoutDataProvider.js.map +1 -1
- package/lib/esm/appui-abstract/items/AbstractItemProps.d.ts +1 -1
- package/lib/esm/appui-abstract/items/AbstractItemProps.d.ts.map +1 -1
- package/lib/esm/appui-abstract/properties/Description.d.ts +1 -4
- package/lib/esm/appui-abstract/properties/Description.d.ts.map +1 -1
- package/lib/esm/appui-abstract/properties/Description.js.map +1 -1
- package/lib/esm/appui-abstract/properties/EditorParams.d.ts +1 -1
- package/lib/esm/appui-abstract/properties/EditorParams.d.ts.map +1 -1
- package/lib/esm/appui-abstract/properties/Value.d.ts +1 -1
- package/lib/esm/appui-abstract/properties/Value.d.ts.map +1 -1
- package/lib/esm/appui-abstract/statusbar/StatusBarItem.d.ts +6 -6
- package/lib/esm/appui-abstract/statusbar/StatusBarItem.d.ts.map +1 -1
- package/lib/esm/appui-abstract/statusbar/StatusBarItem.js +2 -1
- package/lib/esm/appui-abstract/statusbar/StatusBarItem.js.map +1 -1
- package/lib/esm/appui-abstract/statusbar/StatusBarItemsManager.js.map +1 -1
- package/lib/esm/appui-abstract/toolbars/ToolbarItem.d.ts +5 -5
- package/lib/esm/appui-abstract/toolbars/ToolbarItem.d.ts.map +1 -1
- package/lib/esm/appui-abstract/toolbars/ToolbarItem.js +2 -1
- package/lib/esm/appui-abstract/toolbars/ToolbarItem.js.map +1 -1
- package/lib/esm/appui-abstract/toolbars/ToolbarItemsManager.js.map +1 -1
- package/lib/esm/appui-abstract/utils/IconSpecUtilities.d.ts +12 -0
- package/lib/esm/appui-abstract/utils/IconSpecUtilities.d.ts.map +1 -1
- package/lib/esm/appui-abstract/utils/IconSpecUtilities.js +21 -1
- package/lib/esm/appui-abstract/utils/IconSpecUtilities.js.map +1 -1
- package/lib/esm/appui-abstract/utils/callbacks.d.ts +4 -4
- package/lib/esm/appui-abstract/utils/callbacks.d.ts.map +1 -1
- package/lib/esm/appui-abstract/utils/filter/filters.d.ts +3 -3
- package/lib/esm/appui-abstract/utils/filter/filters.d.ts.map +1 -1
- package/lib/esm/appui-abstract/utils/filter/filters.js +28 -28
- package/lib/esm/appui-abstract/utils/filter/filters.js.map +1 -1
- package/lib/esm/appui-abstract/utils/filter/map.js +15 -17
- package/lib/esm/appui-abstract/utils/filter/map.js.map +1 -1
- package/lib/esm/appui-abstract/utils/filter/strings.js +2 -2
- package/lib/esm/appui-abstract/utils/filter/strings.js.map +1 -1
- package/lib/esm/appui-abstract/widget/AbstractWidgetProps.d.ts +24 -7
- package/lib/esm/appui-abstract/widget/AbstractWidgetProps.d.ts.map +1 -1
- package/lib/esm/appui-abstract/widget/AbstractWidgetProps.js.map +1 -1
- package/lib/esm/appui-abstract/widget/StagePanel.d.ts +19 -4
- package/lib/esm/appui-abstract/widget/StagePanel.d.ts.map +1 -1
- package/lib/esm/appui-abstract/widget/StagePanel.js +20 -4
- package/lib/esm/appui-abstract/widget/StagePanel.js.map +1 -1
- package/package.json +26 -19
@@ -5,11 +5,23 @@
|
|
5
5
|
* @public
|
6
6
|
*/
|
7
7
|
export declare class IconSpecUtilities {
|
8
|
+
/** Prefix for an SVG IconSpec loaded with the Sprite loader */
|
9
|
+
static readonly SVG_PREFIX = "svg:";
|
8
10
|
static readonly WEB_COMPONENT_PREFIX = "webSvg:";
|
11
|
+
/** Create an IconSpec for an SVG loaded into web component with sprite loader
|
12
|
+
* This method is deprecated -- use createWebComponentIconSpec()
|
13
|
+
* @public @deprecated in 3.2. Please avoid using the Sprite loader and use IconSpecUtilities.createWebComponentIconSpec() instead.
|
14
|
+
*/
|
15
|
+
static createSvgIconSpec(svgSrc: string): string;
|
9
16
|
/** Create an IconSpec for an SVG loaded into web component with svg-loader
|
10
17
|
* @public
|
11
18
|
*/
|
12
19
|
static createWebComponentIconSpec(srcString: string): string;
|
20
|
+
/** Get the SVG Source from an sprite IconSpec
|
21
|
+
* This method is deprecated -- use getWebComponentSource()
|
22
|
+
* @public @deprecated in 3.2. avoid using the Sprite loader and use IconSpecUtilities.getWebComponentSource() instead.
|
23
|
+
*/
|
24
|
+
static getSvgSource(iconSpec: string): string | undefined;
|
13
25
|
/** Get the SVG Source from an svg-loader IconSpec
|
14
26
|
* @public
|
15
27
|
*/
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"IconSpecUtilities.d.ts","sourceRoot":"","sources":["../../../../src/appui-abstract/utils/IconSpecUtilities.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,gBAAuB,oBAAoB,aAAa;IAExD;;MAEE;WACY,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAInE;;MAEE;WAEY,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAQ1E"}
|
1
|
+
{"version":3,"file":"IconSpecUtilities.d.ts","sourceRoot":"","sources":["../../../../src/appui-abstract/utils/IconSpecUtilities.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,+DAA+D;IAC/D,gBAAuB,UAAU,UAAU;IAC3C,gBAAuB,oBAAoB,aAAa;IAExD;;;MAGE;WACY,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAGvD;;MAEE;WACY,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAInE;;;MAGE;WACY,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAOhE;;MAEE;WAEY,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAQ1E"}
|
@@ -8,13 +8,30 @@
|
|
8
8
|
/** Creates an IconSpec with an SVG source and gets the SVG source from an IconSpec.
|
9
9
|
* @public
|
10
10
|
*/
|
11
|
-
|
11
|
+
class IconSpecUtilities {
|
12
|
+
/** Create an IconSpec for an SVG loaded into web component with sprite loader
|
13
|
+
* This method is deprecated -- use createWebComponentIconSpec()
|
14
|
+
* @public @deprecated in 3.2. Please avoid using the Sprite loader and use IconSpecUtilities.createWebComponentIconSpec() instead.
|
15
|
+
*/
|
16
|
+
static createSvgIconSpec(svgSrc) {
|
17
|
+
return `${IconSpecUtilities.SVG_PREFIX}${svgSrc}`;
|
18
|
+
}
|
12
19
|
/** Create an IconSpec for an SVG loaded into web component with svg-loader
|
13
20
|
* @public
|
14
21
|
*/
|
15
22
|
static createWebComponentIconSpec(srcString) {
|
16
23
|
return `${IconSpecUtilities.WEB_COMPONENT_PREFIX}${srcString}`;
|
17
24
|
}
|
25
|
+
/** Get the SVG Source from an sprite IconSpec
|
26
|
+
* This method is deprecated -- use getWebComponentSource()
|
27
|
+
* @public @deprecated in 3.2. avoid using the Sprite loader and use IconSpecUtilities.getWebComponentSource() instead.
|
28
|
+
*/
|
29
|
+
static getSvgSource(iconSpec) {
|
30
|
+
if (iconSpec.startsWith(IconSpecUtilities.SVG_PREFIX) && iconSpec.length > 4) {
|
31
|
+
return iconSpec.slice(4);
|
32
|
+
}
|
33
|
+
return undefined;
|
34
|
+
}
|
18
35
|
/** Get the SVG Source from an svg-loader IconSpec
|
19
36
|
* @public
|
20
37
|
*/
|
@@ -25,5 +42,8 @@ export class IconSpecUtilities {
|
|
25
42
|
return undefined;
|
26
43
|
}
|
27
44
|
}
|
45
|
+
/** Prefix for an SVG IconSpec loaded with the Sprite loader */
|
46
|
+
IconSpecUtilities.SVG_PREFIX = "svg:";
|
28
47
|
IconSpecUtilities.WEB_COMPONENT_PREFIX = "webSvg:";
|
48
|
+
export { IconSpecUtilities };
|
29
49
|
//# sourceMappingURL=IconSpecUtilities.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"IconSpecUtilities.js","sourceRoot":"","sources":["../../../../src/appui-abstract/utils/IconSpecUtilities.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH;;GAEG;AACH,MAAM,OAAO,iBAAiB;
|
1
|
+
{"version":3,"file":"IconSpecUtilities.js","sourceRoot":"","sources":["../../../../src/appui-abstract/utils/IconSpecUtilities.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH;;GAEG;AACH,MAAa,iBAAiB;IAK5B;;;MAGE;IACK,MAAM,CAAC,iBAAiB,CAAC,MAAc;QAC5C,OAAO,GAAG,iBAAiB,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;IACpD,CAAC;IACD;;MAEE;IACK,MAAM,CAAC,0BAA0B,CAAC,SAAiB;QACxD,OAAO,GAAG,iBAAiB,CAAC,oBAAoB,GAAG,SAAS,EAAE,CAAC;IACjE,CAAC;IAED;;;MAGE;IACK,MAAM,CAAC,YAAY,CAAC,QAAgB;QACzC,IAAI,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5E,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC1B;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IACD;;MAEE;IAEK,MAAM,CAAC,qBAAqB,CAAC,QAAgB;QAClD,IAAI,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACtF,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC1B;QAED,OAAO,SAAS,CAAC;IAEnB,CAAC;;AAxCD,+DAA+D;AACxC,4BAAU,GAAG,MAAM,CAAC;AACpB,sCAAoB,GAAG,SAAS,CAAC;SAH7C,iBAAiB","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Utilities\n */\n\n/** Creates an IconSpec with an SVG source and gets the SVG source from an IconSpec.\n * @public\n */\nexport class IconSpecUtilities {\n /** Prefix for an SVG IconSpec loaded with the Sprite loader */\n public static readonly SVG_PREFIX = \"svg:\";\n public static readonly WEB_COMPONENT_PREFIX = \"webSvg:\";\n\n /** Create an IconSpec for an SVG loaded into web component with sprite loader\n * This method is deprecated -- use createWebComponentIconSpec()\n * @public @deprecated in 3.2. Please avoid using the Sprite loader and use IconSpecUtilities.createWebComponentIconSpec() instead.\n */\n public static createSvgIconSpec(svgSrc: string): string {\n return `${IconSpecUtilities.SVG_PREFIX}${svgSrc}`;\n }\n /** Create an IconSpec for an SVG loaded into web component with svg-loader\n * @public\n */\n public static createWebComponentIconSpec(srcString: string): string {\n return `${IconSpecUtilities.WEB_COMPONENT_PREFIX}${srcString}`;\n }\n\n /** Get the SVG Source from an sprite IconSpec\n * This method is deprecated -- use getWebComponentSource()\n * @public @deprecated in 3.2. avoid using the Sprite loader and use IconSpecUtilities.getWebComponentSource() instead.\n */\n public static getSvgSource(iconSpec: string): string | undefined {\n if (iconSpec.startsWith(IconSpecUtilities.SVG_PREFIX) && iconSpec.length > 4) {\n return iconSpec.slice(4);\n }\n\n return undefined;\n }\n /** Get the SVG Source from an svg-loader IconSpec\n * @public\n */\n\n public static getWebComponentSource(iconSpec: string): string | undefined {\n if (iconSpec.startsWith(IconSpecUtilities.WEB_COMPONENT_PREFIX) && iconSpec.length > 7) {\n return iconSpec.slice(7);\n }\n\n return undefined;\n\n }\n}\n"]}
|
@@ -5,17 +5,17 @@ import { Primitives } from "../properties/PrimitiveTypes";
|
|
5
5
|
/** Signature for number onCommit function.
|
6
6
|
* @public
|
7
7
|
*/
|
8
|
-
export
|
8
|
+
export type OnNumberCommitFunc = (value: number) => void;
|
9
9
|
/** Signature for value onCommit function.
|
10
10
|
* @public
|
11
11
|
*/
|
12
|
-
export
|
12
|
+
export type OnValueCommitFunc = (value: Primitives.Value) => void;
|
13
13
|
/** Signature for onCancel function.
|
14
14
|
* @public
|
15
15
|
*/
|
16
|
-
export
|
16
|
+
export type OnCancelFunc = () => void;
|
17
17
|
/** Signature for onItemExecuted function.
|
18
18
|
* @public
|
19
19
|
*/
|
20
|
-
export
|
20
|
+
export type OnItemExecutedFunc = (item: any) => void;
|
21
21
|
//# sourceMappingURL=callbacks.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"callbacks.d.ts","sourceRoot":"","sources":["../../../../src/appui-abstract/utils/callbacks.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D;;GAEG;AACH,
|
1
|
+
{"version":3,"file":"callbacks.d.ts","sourceRoot":"","sources":["../../../../src/appui-abstract/utils/callbacks.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC;AAElE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC"}
|
@@ -14,7 +14,7 @@ export interface IMatch {
|
|
14
14
|
* @param wordToMatchAgainst string to search for matches
|
15
15
|
* @internal
|
16
16
|
*/
|
17
|
-
export
|
17
|
+
export type IFilter = (word: string, wordToMatchAgainst: string) => IMatch[] | null;
|
18
18
|
/**
|
19
19
|
* @returns A filter which combines the provided set
|
20
20
|
* of filters with an or. The *first* filters that
|
@@ -77,7 +77,7 @@ export declare function isPatternInWord(patternLow: string, patternPos: number,
|
|
77
77
|
* 2. the offset at which matching started
|
78
78
|
* @internal
|
79
79
|
*/
|
80
|
-
export
|
80
|
+
export type FuzzyScore = [number, number, number];
|
81
81
|
/** @internal */
|
82
82
|
export declare namespace FuzzyScore {
|
83
83
|
/**
|
@@ -89,7 +89,7 @@ export declare namespace FuzzyScore {
|
|
89
89
|
function isDefault(score?: FuzzyScore): score is [-100, 0, 0];
|
90
90
|
}
|
91
91
|
/** @internal */
|
92
|
-
export
|
92
|
+
export type FuzzyScorer = (pattern: string, lowPattern: string, patternPos: number, word: string, lowWord: string, wordPos: number, firstMatchCanBeWeak: boolean) => FuzzyScore | undefined;
|
93
93
|
/** @internal */
|
94
94
|
export declare function fuzzyScore(pattern: string, patternLow: string, patternStart: number, word: string, wordLow: string, wordStart: number, firstMatchCanBeWeak: boolean): FuzzyScore | undefined;
|
95
95
|
/** @internal */
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../../../src/appui-abstract/utils/filter/filters.ts"],"names":[],"mappings":"AAIA;;GAEG;AAYH;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;GAKG;AACH,
|
1
|
+
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../../../src/appui-abstract/utils/filter/filters.ts"],"names":[],"mappings":"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"}
|
@@ -86,19 +86,19 @@ function _matchesSubString(word, wordToMatchAgainst, i, j) {
|
|
86
86
|
}
|
87
87
|
// CamelCase
|
88
88
|
function isLower(code) {
|
89
|
-
return 97 /* a */ <= code && code <= 122 /* z */;
|
89
|
+
return 97 /* CharCode.a */ <= code && code <= 122 /* CharCode.z */;
|
90
90
|
}
|
91
91
|
function isUpper(code) {
|
92
|
-
return 65 /* A */ <= code && code <= 90 /* Z */;
|
92
|
+
return 65 /* CharCode.A */ <= code && code <= 90 /* CharCode.Z */;
|
93
93
|
}
|
94
94
|
function isNumber(code) {
|
95
|
-
return 48 /* Digit0 */ <= code && code <= 57 /* Digit9 */;
|
95
|
+
return 48 /* CharCode.Digit0 */ <= code && code <= 57 /* CharCode.Digit9 */;
|
96
96
|
}
|
97
97
|
function isWhitespace(code) {
|
98
|
-
return (code === 32 /* Space */
|
99
|
-
|| code === 9 /* Tab */
|
100
|
-
|| code === 10 /* LineFeed */
|
101
|
-
|| code === 13 /* CarriageReturn */);
|
98
|
+
return (code === 32 /* CharCode.Space */
|
99
|
+
|| code === 9 /* CharCode.Tab */
|
100
|
+
|| code === 10 /* CharCode.LineFeed */
|
101
|
+
|| code === 13 /* CharCode.CarriageReturn */);
|
102
102
|
}
|
103
103
|
const wordSeparators = new Set();
|
104
104
|
'`~!@#$%^&*()-=+[{]}\\|;:\'",.<>/?'
|
@@ -388,16 +388,16 @@ function isSeparatorAtPos(value, index) {
|
|
388
388
|
}
|
389
389
|
const code = value.charCodeAt(index);
|
390
390
|
switch (code) {
|
391
|
-
case 95 /* Underline */:
|
392
|
-
case 45 /* Dash */:
|
393
|
-
case 46 /* Period */:
|
394
|
-
case 32 /* Space */:
|
395
|
-
case 47 /* Slash */:
|
396
|
-
case 92 /* Backslash */:
|
397
|
-
case 39 /* SingleQuote */:
|
398
|
-
case 34 /* DoubleQuote */:
|
399
|
-
case 58 /* Colon */:
|
400
|
-
case 36 /* DollarSign */:
|
391
|
+
case 95 /* CharCode.Underline */:
|
392
|
+
case 45 /* CharCode.Dash */:
|
393
|
+
case 46 /* CharCode.Period */:
|
394
|
+
case 32 /* CharCode.Space */:
|
395
|
+
case 47 /* CharCode.Slash */:
|
396
|
+
case 92 /* CharCode.Backslash */:
|
397
|
+
case 39 /* CharCode.SingleQuote */:
|
398
|
+
case 34 /* CharCode.DoubleQuote */:
|
399
|
+
case 58 /* CharCode.Colon */:
|
400
|
+
case 36 /* CharCode.DollarSign */:
|
401
401
|
return true;
|
402
402
|
default:
|
403
403
|
return false;
|
@@ -410,8 +410,8 @@ function isWhitespaceAtPos(value, index) {
|
|
410
410
|
const code = value.charCodeAt(index);
|
411
411
|
switch (code) {
|
412
412
|
// istanbul ignore next
|
413
|
-
case 32 /* Space */:
|
414
|
-
case 9 /* Tab */:
|
413
|
+
case 32 /* CharCode.Space */:
|
414
|
+
case 9 /* CharCode.Tab */:
|
415
415
|
return true;
|
416
416
|
default:
|
417
417
|
return false;
|
@@ -480,30 +480,30 @@ export function fuzzyScore(pattern, patternLow, patternStart, word, wordLow, wor
|
|
480
480
|
// left or diag
|
481
481
|
if (left > diag) {
|
482
482
|
_table[row][column] = left;
|
483
|
-
_arrows[row][column] = 4 /* Left */;
|
483
|
+
_arrows[row][column] = 4 /* Arrow.Left */;
|
484
484
|
}
|
485
485
|
else if (left === diag) {
|
486
486
|
_table[row][column] = left;
|
487
|
-
_arrows[row][column] = 4 /* Left */ | 2 /* Diag */;
|
487
|
+
_arrows[row][column] = 4 /* Arrow.Left */ | 2 /* Arrow.Diag */;
|
488
488
|
}
|
489
489
|
else {
|
490
490
|
_table[row][column] = diag;
|
491
|
-
_arrows[row][column] = 2 /* Diag */;
|
491
|
+
_arrows[row][column] = 2 /* Arrow.Diag */;
|
492
492
|
}
|
493
493
|
}
|
494
494
|
else {
|
495
495
|
// top or diag
|
496
496
|
if (top > diag) {
|
497
497
|
_table[row][column] = top;
|
498
|
-
_arrows[row][column] = 1 /* Top */;
|
498
|
+
_arrows[row][column] = 1 /* Arrow.Top */;
|
499
499
|
}
|
500
500
|
else if (top === diag) {
|
501
501
|
_table[row][column] = top;
|
502
|
-
_arrows[row][column] = 1 /* Top */ | 2 /* Diag */;
|
502
|
+
_arrows[row][column] = 1 /* Arrow.Top */ | 2 /* Arrow.Diag */;
|
503
503
|
}
|
504
504
|
else {
|
505
505
|
_table[row][column] = diag;
|
506
|
-
_arrows[row][column] = 2 /* Diag */;
|
506
|
+
_arrows[row][column] = 2 /* Arrow.Diag */;
|
507
507
|
}
|
508
508
|
}
|
509
509
|
}
|
@@ -574,7 +574,7 @@ function _findAllMatches2(row, column, total, matches, lastMatched) {
|
|
574
574
|
while (row > 0 && column > 0) {
|
575
575
|
const score = _scores[row][column];
|
576
576
|
const arrow = _arrows[row][column];
|
577
|
-
if (arrow === 4 /* Left */) {
|
577
|
+
if (arrow === 4 /* Arrow.Left */) {
|
578
578
|
// left -> no match, skip a word character
|
579
579
|
column -= 1;
|
580
580
|
if (lastMatched) {
|
@@ -588,8 +588,8 @@ function _findAllMatches2(row, column, total, matches, lastMatched) {
|
|
588
588
|
}
|
589
589
|
else {
|
590
590
|
/* istanbul ignore else */
|
591
|
-
if (arrow & 2 /* Diag */) {
|
592
|
-
if (arrow & 4 /* Left */) {
|
591
|
+
if (arrow & 2 /* Arrow.Diag */) {
|
592
|
+
if (arrow & 4 /* Arrow.Left */) {
|
593
593
|
// left
|
594
594
|
_findAllMatches2(row, column - 1, matches !== 0 ? total - 1 : total, // gap penalty after first match
|
595
595
|
matches, lastMatched);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../../../src/appui-abstract/utils/filter/filters.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Utilities\n */\n\n// file copied from https://github.com/microsoft/vscode/blob/master/src/vs/base/common/filters.ts\n\n/* eslint-disable no-console */\n/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable no-restricted-syntax */\n\nimport { CharCode } from \"./charCode\";\nimport { LRUCache } from \"./map\";\nimport * as strings from \"./strings\";\n\n/** Interface that returns indices of matches\n * @public\n */\nexport interface IMatch {\n start: number;\n end: number;\n}\n\n/**\n * IFilter defines filter function type\n * @param word filter string\n * @param wordToMatchAgainst string to search for matches\n * @internal\n */\nexport type IFilter = (word: string, wordToMatchAgainst: string) => IMatch[] | null;\n\n// Combined filters\n\n/**\n * @returns A filter which combines the provided set\n * of filters with an or. The *first* filters that\n * matches defined the return value of the returned\n * filter.\n * @internal\n */\nexport function or(...filter: IFilter[]): IFilter {\n return function (word: string, wordToMatchAgainst: string): IMatch[] | null {\n for (let i = 0, len = filter.length; i < len; i++) {\n const match = filter[i](word, wordToMatchAgainst);\n if (match) {\n return match;\n }\n }\n return null;\n };\n}\n\n// Prefix\n\n/** @internal */\nexport const matchesStrictPrefix: IFilter = _matchesPrefix.bind(undefined, false);\n/** @internal */\nexport const matchesPrefix: IFilter = _matchesPrefix.bind(undefined, true);\n\nfunction _matchesPrefix(ignoreCase: boolean, word: string, wordToMatchAgainst: string): IMatch[] | null {\n if (!wordToMatchAgainst || wordToMatchAgainst.length < word.length) {\n return null;\n }\n\n let matches: boolean;\n if (ignoreCase) {\n matches = strings.startsWithIgnoreCase(wordToMatchAgainst, word);\n } else {\n matches = wordToMatchAgainst.indexOf(word) === 0;\n }\n\n if (!matches) {\n return null;\n }\n\n return word.length > 0 ? [{ start: 0, end: word.length }] : [];\n}\n\n// Contiguous Substring\n\n/** @internal */\nexport function matchesContiguousSubString(word: string, wordToMatchAgainst: string): IMatch[] | null {\n const index = wordToMatchAgainst.toLowerCase().indexOf(word.toLowerCase());\n if (index === -1) {\n return null;\n }\n\n return [{ start: index, end: index + word.length }];\n}\n\n// Substring\n\n/**\n * Return case insensitive substring matches\n * @param word filter string\n * @param wordToMatchAgainst string to test\n * @internal\n */\nexport function matchesSubString(word: string, wordToMatchAgainst: string): IMatch[] | null {\n return _matchesSubString(word.toLowerCase(), wordToMatchAgainst.toLowerCase(), 0, 0);\n}\n\nfunction _matchesSubString(word: string, wordToMatchAgainst: string, i: number, j: number): IMatch[] | null {\n if (i === word.length) {\n return [];\n } else if (j === wordToMatchAgainst.length) {\n return null;\n } else {\n if (word[i] === wordToMatchAgainst[j]) {\n let result: IMatch[] | null = null;\n if (result = _matchesSubString(word, wordToMatchAgainst, i + 1, j + 1)) {\n return join({ start: j, end: j + 1 }, result);\n }\n return null;\n }\n\n return _matchesSubString(word, wordToMatchAgainst, i, j + 1);\n }\n}\n\n// CamelCase\n\nfunction isLower(code: number): boolean {\n return CharCode.a <= code && code <= CharCode.z;\n}\n\nfunction isUpper(code: number): boolean {\n return CharCode.A <= code && code <= CharCode.Z;\n}\n\nfunction isNumber(code: number): boolean {\n return CharCode.Digit0 <= code && code <= CharCode.Digit9;\n}\n\nfunction isWhitespace(code: number): boolean {\n return (\n code === CharCode.Space\n || code === CharCode.Tab\n || code === CharCode.LineFeed\n || code === CharCode.CarriageReturn\n );\n}\n\nconst wordSeparators = new Set<number>();\n'`~!@#$%^&*()-=+[{]}\\\\|;:\\'\",.<>/?'\n .split(\"\")\n .forEach((s) => wordSeparators.add(s.charCodeAt(0)));\n\nfunction isWordSeparator(code: number): boolean {\n return isWhitespace(code) || wordSeparators.has(code);\n}\n\nfunction charactersMatch(codeA: number, codeB: number): boolean {\n return (codeA === codeB) || (isWordSeparator(codeA) && isWordSeparator(codeB));\n}\n\nfunction isAlphanumeric(code: number): boolean {\n return isLower(code) || isUpper(code) || isNumber(code);\n}\n\nfunction join(head: IMatch, tail: IMatch[]): IMatch[] {\n if (tail.length === 0) {\n tail = [head];\n } else if (head.end === tail[0].start) {\n tail[0].start = head.start;\n } else {\n tail.unshift(head);\n }\n return tail;\n}\n\nfunction nextAnchor(camelCaseWord: string, start: number): number {\n for (let i = start; i < camelCaseWord.length; i++) {\n const c = camelCaseWord.charCodeAt(i);\n if (isUpper(c) || isNumber(c) || (i > 0 && !isAlphanumeric(camelCaseWord.charCodeAt(i - 1)))) {\n return i;\n }\n }\n return camelCaseWord.length;\n}\n\nfunction _matchesCamelCase(word: string, camelCaseWord: string, i: number, j: number): IMatch[] | null {\n if (i === word.length) {\n return [];\n } else if (j === camelCaseWord.length) {\n return null;\n } else if (word[i] !== camelCaseWord[j].toLowerCase()) {\n return null;\n } else {\n let result: IMatch[] | null = null;\n let nextUpperIndex = j + 1;\n result = _matchesCamelCase(word, camelCaseWord, i + 1, j + 1);\n while (!result && (nextUpperIndex = nextAnchor(camelCaseWord, nextUpperIndex)) < camelCaseWord.length) {\n result = _matchesCamelCase(word, camelCaseWord, i + 1, nextUpperIndex);\n nextUpperIndex++;\n }\n return result === null ? null : join({ start: j, end: j + 1 }, result);\n }\n}\n\ninterface ICamelCaseAnalysis {\n upperPercent: number;\n lowerPercent: number;\n alphaPercent: number;\n numericPercent: number;\n}\n\n// Heuristic to avoid computing camel case matcher for words that don't\n// look like camelCaseWords.\nfunction analyzeCamelCaseWord(word: string): ICamelCaseAnalysis {\n let upper = 0, lower = 0, alpha = 0, numeric = 0, code = 0;\n\n for (let i = 0; i < word.length; i++) {\n code = word.charCodeAt(i);\n\n if (isUpper(code)) { upper++; }\n if (isLower(code)) { lower++; }\n if (isAlphanumeric(code)) { alpha++; }\n if (isNumber(code)) { numeric++; }\n }\n\n const upperPercent = upper / word.length;\n const lowerPercent = lower / word.length;\n const alphaPercent = alpha / word.length;\n const numericPercent = numeric / word.length;\n\n return { upperPercent, lowerPercent, alphaPercent, numericPercent };\n}\n\nfunction isUpperCaseWord(analysis: ICamelCaseAnalysis): boolean {\n const { upperPercent, lowerPercent } = analysis;\n return lowerPercent === 0 && upperPercent > 0.6;\n}\n\nfunction isCamelCaseWord(analysis: ICamelCaseAnalysis): boolean {\n const { upperPercent, lowerPercent, alphaPercent, numericPercent } = analysis;\n return lowerPercent > 0.2 && upperPercent < 0.8 && alphaPercent > 0.6 && numericPercent < 0.2;\n}\n\n// Heuristic to avoid computing camel case matcher for words that don't\n// look like camel case patterns.\nfunction isCamelCasePattern(word: string): boolean {\n let upper = 0, lower = 0, code = 0, whitespace = 0;\n\n for (let i = 0; i < word.length; i++) {\n code = word.charCodeAt(i);\n\n if (isUpper(code)) { upper++; }\n if (isLower(code)) { lower++; }\n if (isWhitespace(code)) { whitespace++; }\n }\n\n if ((upper === 0 || lower === 0) && whitespace === 0) {\n return word.length <= 30;\n } else {\n return upper <= 5;\n }\n}\n\n/**\n * Return matches treating \"camelCase\" words separately. For example the filter string \"gp\" would return two matches in string \"Git Pull\".\n * @param word filter string\n * @param wordToMatchAgainst string to test\n * @internal\n */\nexport function matchesCamelCase(word: string, camelCaseWord: string): IMatch[] | null {\n if (!camelCaseWord) {\n return null;\n }\n\n camelCaseWord = camelCaseWord.trim();\n\n if (camelCaseWord.length === 0) {\n return null;\n }\n\n if (!isCamelCasePattern(camelCaseWord)) {\n return null;\n }\n\n if (camelCaseWord.length > 60) {\n return null;\n }\n\n const analysis = analyzeCamelCaseWord(camelCaseWord);\n\n if (!isCamelCaseWord(analysis)) {\n // istanbul ignore next\n if (!isUpperCaseWord(analysis)) {\n return null;\n }\n\n camelCaseWord = camelCaseWord.toLowerCase();\n }\n\n let result: IMatch[] | null = null;\n let i = 0;\n\n word = word.toLowerCase();\n while (i < camelCaseWord.length && (result = _matchesCamelCase(word, camelCaseWord, 0, i)) === null) {\n i = nextAnchor(camelCaseWord, i + 1);\n }\n\n return result;\n}\n\n/**\n * Matches beginning of words supporting non-ASCII languages.\n * @param word Filter string\n * @param target String being searched\n * @param contiguous - If true the filter string must be found \"contiguous\" in the searched string (E.g. \"pul\" will match \"Git: Pull\").\n * Otherwise also matches sub string of the word with beginnings of the words in the target (e.g. \"gp\" or \"g p\" will match \"Git: Pull\").\n * Useful in cases where the target is words (e.g. command labels)\n * @internal\n */\nexport function matchesWords(word: string, target: string, contiguous: boolean = false): IMatch[] | null {\n if (!target || target.length === 0) {\n return null;\n }\n\n let result: IMatch[] | null = null;\n let i = 0;\n\n word = word.toLowerCase();\n target = target.toLowerCase();\n while (i < target.length && (result = _matchesWords(word, target, 0, i, contiguous)) === null) {\n i = nextWord(target, i + 1);\n }\n\n return result;\n}\n\nfunction _matchesWords(word: string, target: string, i: number, j: number, contiguous: boolean): IMatch[] | null {\n if (i === word.length) {\n return [];\n } else if (j === target.length) {\n return null;\n } else if (!charactersMatch(word.charCodeAt(i), target.charCodeAt(j))) {\n return null;\n } else {\n let result: IMatch[] | null = null;\n let nextWordIndex = j + 1;\n result = _matchesWords(word, target, i + 1, j + 1, contiguous);\n // istanbul ignore else\n if (!contiguous) {\n while (!result && (nextWordIndex = nextWord(target, nextWordIndex)) < target.length) {\n result = _matchesWords(word, target, i + 1, nextWordIndex, contiguous);\n nextWordIndex++;\n }\n }\n return result === null ? null : join({ start: j, end: j + 1 }, result);\n }\n}\n\nfunction nextWord(word: string, start: number): number {\n for (let i = start; i < word.length; i++) {\n if (isWordSeparator(word.charCodeAt(i)) ||\n (i > 0 && isWordSeparator(word.charCodeAt(i - 1)))) {\n return i;\n }\n }\n return word.length;\n}\n\n// Fuzzy\n\nconst fuzzyContiguousFilter = or(matchesPrefix, matchesCamelCase, matchesContiguousSubString);\nconst fuzzySeparateFilter = or(matchesPrefix, matchesCamelCase, matchesSubString);\nconst fuzzyRegExpCache = new LRUCache<string, RegExp>(10000); // bounded to 10000 elements\n\n/**\n * Match pattern against word in a fuzzy way. This will only return a single match.\n * @internal\n */\nexport function matchesFuzzy(word: string, wordToMatchAgainst: string, enableSeparateSubstringMatching = false): IMatch[] | null {\n // istanbul ignore next\n if (typeof word !== \"string\" || typeof wordToMatchAgainst !== \"string\") {\n return null; // return early for invalid input\n }\n\n // Form RegExp for wildcard matches\n let regexp = fuzzyRegExpCache.get(word);\n if (!regexp) {\n regexp = new RegExp(strings.convertSimple2RegExpPattern(word), \"i\");\n fuzzyRegExpCache.set(word, regexp);\n }\n\n // RegExp Filter\n const match = regexp.exec(wordToMatchAgainst);\n if (match) {\n return [{ start: match.index, end: match.index + match[0].length }];\n }\n\n // Default Filter\n return enableSeparateSubstringMatching ? /* istanbul ignore next */ fuzzySeparateFilter(word, wordToMatchAgainst) : fuzzyContiguousFilter(word, wordToMatchAgainst);\n}\n\n/**\n * Match pattern against word in a fuzzy way. As in IntelliSense and faster and more\n * powerful than `matchesFuzzy`. This will only return a single match.\n * @internal\n */\nexport function matchesFuzzy2(pattern: string, word: string): IMatch[] | null {\n const score = fuzzyScore(pattern, pattern.toLowerCase(), 0, word, word.toLowerCase(), 0, true);\n return score ? createMatches(score) : null;\n}\n\n// #region --- fuzzyScore ---\n/**\n * @internal\n */\nexport function createMatches(score: undefined | FuzzyScore): IMatch[] {\n // istanbul ignore next\n if (typeof score === \"undefined\") {\n return [];\n }\n\n const matches = score[1].toString(2);\n const wordStart = score[2];\n const res: IMatch[] = [];\n\n for (let pos = wordStart; pos < _maxLen; pos++) {\n if (matches[matches.length - (pos + 1)] === \"1\") {\n const last = res[res.length - 1];\n if (last && last.end === pos) {\n last.end = pos + 1;\n } else {\n res.push({ start: pos, end: pos + 1 });\n }\n }\n }\n return res;\n}\n\nconst _maxLen = 128;\n\nfunction initTable() {\n const table: number[][] = [];\n const row: number[] = [0];\n for (let i = 1; i <= _maxLen; i++) {\n row.push(-i);\n }\n for (let i = 0; i <= _maxLen; i++) {\n const thisRow = row.slice(0);\n thisRow[0] = -i;\n table.push(thisRow);\n }\n return table;\n}\n\nconst _table = initTable();\nconst _scores = initTable();\n// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\nconst _arrows = <Arrow[][]>initTable();\nconst _debug = false;\n\nfunction isSeparatorAtPos(value: string, index: number): boolean {\n if (index < 0 || index >= value.length) {\n return false;\n }\n const code = value.charCodeAt(index);\n switch (code) {\n case CharCode.Underline:\n case CharCode.Dash:\n case CharCode.Period:\n case CharCode.Space:\n case CharCode.Slash:\n case CharCode.Backslash:\n case CharCode.SingleQuote:\n case CharCode.DoubleQuote:\n case CharCode.Colon:\n case CharCode.DollarSign:\n return true;\n default:\n return false;\n }\n}\n\nfunction isWhitespaceAtPos(value: string, index: number): boolean {\n if (index < 0 || index >= value.length) {\n return false;\n }\n const code = value.charCodeAt(index);\n switch (code) {\n // istanbul ignore next\n case CharCode.Space:\n case CharCode.Tab:\n return true;\n default:\n return false;\n }\n}\n\nfunction isUpperCaseAtPos(pos: number, word: string, wordLow: string): boolean {\n return word[pos] !== wordLow[pos];\n}\n\n/** @internal */\nexport function isPatternInWord(patternLow: string, patternPos: number, patternLen: number, wordLow: string, wordPos: number, wordLen: number): boolean {\n while (patternPos < patternLen && wordPos < wordLen) {\n if (patternLow[patternPos] === wordLow[wordPos]) {\n patternPos += 1;\n }\n wordPos += 1;\n }\n return patternPos === patternLen; // pattern must be exhausted\n}\n\nconst enum Arrow { Top = 0b1, Diag = 0b10, Left = 0b100 }\n\n/**\n * A tuple of three values.\n * 0. the score\n * 1. the matches encoded as bitmask (2^53)\n * 2. the offset at which matching started\n * @internal\n */\nexport type FuzzyScore = [number, number, number];\n\n/** @internal */\nexport namespace FuzzyScore { // eslint-disable-line @typescript-eslint/no-redeclare\n /**\n * No matches and value `-100`\n * @internal\n */\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n export const Default: [-100, 0, 0] = <[-100, 0, 0]>Object.freeze([-100, 0, 0]);\n\n // istanbul ignore next\n /** @internal */\n export function isDefault(score?: FuzzyScore): score is [-100, 0, 0] {\n return !score || (score[0] === -100 && score[1] === 0 && score[2] === 0);\n }\n}\n\n/** @internal */\nexport type FuzzyScorer = (pattern: string, lowPattern: string, patternPos: number, word: string, lowWord: string, wordPos: number, firstMatchCanBeWeak: boolean) => FuzzyScore | undefined;\n\n/** @internal */\nexport function fuzzyScore(pattern: string, patternLow: string, patternStart: number, word: string, wordLow: string, wordStart: number, firstMatchCanBeWeak: boolean): FuzzyScore | undefined {\n // istanbul ignore next\n const patternLen = pattern.length > _maxLen ? _maxLen : pattern.length;\n const wordLen = word.length > _maxLen ? _maxLen : word.length;\n\n if (patternStart >= patternLen || wordStart >= wordLen || (patternLen - patternStart) > (wordLen - wordStart)) {\n return undefined;\n }\n\n // Run a simple check if the characters of pattern occur\n // (in order) at all in word. If that isn't the case we\n // stop because no match will be possible\n if (!isPatternInWord(patternLow, patternStart, patternLen, wordLow, wordStart, wordLen)) {\n return undefined;\n }\n\n let row: number = 1;\n let column: number = 1;\n let patternPos = patternStart;\n let wordPos = wordStart;\n\n let hasStrongFirstMatch = false;\n\n // There will be a match, fill in tables\n for (row = 1, patternPos = patternStart; patternPos < patternLen; row++, patternPos++) {\n\n for (column = 1, wordPos = wordStart; wordPos < wordLen; column++, wordPos++) {\n\n const score = _doScore(pattern, patternLow, patternPos, patternStart, word, wordLow, wordPos);\n\n if (patternPos === patternStart && score > 1) {\n hasStrongFirstMatch = true;\n }\n\n _scores[row][column] = score;\n\n const diag = _table[row - 1][column - 1] + (score > 1 ? 1 : score);\n const top = _table[row - 1][column] + -1;\n const left = _table[row][column - 1] + -1;\n\n if (left >= top) {\n // left or diag\n if (left > diag) {\n _table[row][column] = left;\n _arrows[row][column] = Arrow.Left;\n } else if (left === diag) {\n _table[row][column] = left;\n _arrows[row][column] = Arrow.Left | Arrow.Diag;\n } else {\n _table[row][column] = diag;\n _arrows[row][column] = Arrow.Diag;\n }\n } else {\n // top or diag\n if (top > diag) {\n _table[row][column] = top;\n _arrows[row][column] = Arrow.Top;\n } else if (top === diag) {\n _table[row][column] = top;\n _arrows[row][column] = Arrow.Top | Arrow.Diag;\n } else {\n _table[row][column] = diag;\n _arrows[row][column] = Arrow.Diag;\n }\n }\n }\n }\n\n if (!hasStrongFirstMatch && !firstMatchCanBeWeak) {\n return undefined;\n }\n\n _matchesCount = 0;\n _topScore = -100;\n _wordStart = wordStart;\n _firstMatchCanBeWeak = firstMatchCanBeWeak;\n\n _findAllMatches2(row - 1, column - 1, patternLen === wordLen ? 1 : 0, 0, false);\n if (_matchesCount === 0) {\n return undefined;\n }\n\n return [_topScore, _topMatch2, wordStart];\n}\n\nfunction _doScore(pattern: string, patternLow: string, patternPos: number, patternStart: number, word: string, wordLow: string, wordPos: number) {\n if (patternLow[patternPos] !== wordLow[wordPos]) {\n return -1;\n }\n if (wordPos === (patternPos - patternStart)) {\n // common prefix: `foobar <-> foobaz`\n // ^^^^^\n if (pattern[patternPos] === word[wordPos]) {\n return 7;\n } else {\n return 5;\n }\n } else if (isUpperCaseAtPos(wordPos, word, wordLow) && (wordPos === 0 || !isUpperCaseAtPos(wordPos - 1, word, wordLow))) {\n // hitting upper-case: `foo <-> forOthers`\n // ^^ ^\n if (pattern[patternPos] === word[wordPos]) {\n return 7;\n } else {\n return 5;\n }\n } else if (isSeparatorAtPos(wordLow, wordPos) && (wordPos === 0 || !isSeparatorAtPos(wordLow, wordPos - 1))) {\n // hitting a separator: `. <-> foo.bar`\n // ^\n return 5;\n\n } else if (isSeparatorAtPos(wordLow, wordPos - 1) || isWhitespaceAtPos(wordLow, wordPos - 1)) {\n // post separator: `foo <-> bar_foo`\n // ^^^\n return 5;\n\n } else {\n return 1;\n }\n}\n\nlet _matchesCount: number = 0;\nlet _topMatch2: number = 0;\nlet _topScore: number = 0;\nlet _wordStart: number = 0;\nlet _firstMatchCanBeWeak: boolean = false;\n\nfunction _findAllMatches2(row: number, column: number, total: number, matches: number, lastMatched: boolean): void {\n\n if (_matchesCount >= 10 || total < -25) {\n // stop when having already 10 results, or\n // when a potential alignment as already 5 gaps\n return;\n }\n\n let simpleMatchCount = 0;\n\n while (row > 0 && column > 0) {\n\n const score = _scores[row][column];\n const arrow = _arrows[row][column];\n\n if (arrow === Arrow.Left) {\n // left -> no match, skip a word character\n column -= 1;\n if (lastMatched) {\n total -= 5; // new gap penalty\n } else if (matches !== 0) {\n total -= 1; // gap penalty after first match\n }\n lastMatched = false;\n simpleMatchCount = 0;\n } else {\n /* istanbul ignore else */\n if (arrow & Arrow.Diag) {\n if (arrow & Arrow.Left) {\n // left\n _findAllMatches2(\n row,\n column - 1,\n matches !== 0 ? total - 1 : total, // gap penalty after first match\n matches,\n lastMatched\n );\n }\n\n // diag\n total += score;\n row -= 1;\n column -= 1;\n lastMatched = true;\n\n // match -> set a 1 at the word pos\n matches += 2 ** (column + _wordStart);\n\n // count simple matches and boost a row of\n // simple matches when they yield in a\n // strong match.\n if (score === 1) {\n simpleMatchCount += 1;\n\n if (row === 0 && !_firstMatchCanBeWeak) {\n // when the first match is a weak\n // match we discard it\n return undefined;\n }\n\n } else {\n // boost\n total += 1 + (simpleMatchCount * (score - 1));\n simpleMatchCount = 0;\n }\n\n } else {\n // istanbul ignore next\n return undefined;\n }\n }\n }\n\n total -= column >= 3 ? 9 : column * 3; // late start penalty\n\n // dynamically keep track of the current top score\n // and insert the current best score at head, the rest at tail\n _matchesCount += 1;\n if (total > _topScore) {\n _topScore = total;\n _topMatch2 = matches;\n }\n}\n\n// #endregion\n\n// #region --- graceful ---\n/** @internal */\nexport function fuzzyScoreGracefulAggressive(pattern: string, lowPattern: string, patternPos: number, word: string, lowWord: string, wordPos: number, firstMatchCanBeWeak: boolean): FuzzyScore | undefined {\n return fuzzyScoreWithPermutations(pattern, lowPattern, patternPos, word, lowWord, wordPos, true, firstMatchCanBeWeak);\n}\n\n/** @internal */\nexport function fuzzyScoreGraceful(pattern: string, lowPattern: string, patternPos: number, word: string, lowWord: string, wordPos: number, firstMatchCanBeWeak: boolean): FuzzyScore | undefined {\n return fuzzyScoreWithPermutations(pattern, lowPattern, patternPos, word, lowWord, wordPos, false, firstMatchCanBeWeak);\n}\n\nfunction fuzzyScoreWithPermutations(pattern: string, lowPattern: string, patternPos: number, word: string, lowWord: string, wordPos: number, aggressive: boolean, firstMatchCanBeWeak: boolean): FuzzyScore | undefined {\n let top = fuzzyScore(pattern, lowPattern, patternPos, word, lowWord, wordPos, firstMatchCanBeWeak);\n\n if (top && !aggressive) {\n // when using the original pattern yield a result we`\n // return it unless we are aggressive and try to find\n // a better alignment, e.g. `cno` -> `^co^ns^ole` or `^c^o^nsole`.\n return top;\n }\n\n // istanbul ignore else\n if (pattern.length >= 3) {\n // When the pattern is long enough then try a few (max 7)\n // permutations of the pattern to find a better match. The\n // permutations only swap neighbouring characters, e.g\n // `cnoso` becomes `conso`, `cnsoo`, `cnoos`.\n const tries = Math.min(7, pattern.length - 1);\n for (let movingPatternPos = patternPos + 1; movingPatternPos < tries; movingPatternPos++) {\n const newPattern = nextTypoPermutation(pattern, movingPatternPos);\n // istanbul ignore else\n if (newPattern) {\n const candidate = fuzzyScore(newPattern, newPattern.toLowerCase(), patternPos, word, lowWord, wordPos, firstMatchCanBeWeak);\n if (candidate) {\n candidate[0] -= 3; // permutation penalty\n // istanbul ignore else\n if (!top || candidate[0] > top[0]) {\n top = candidate;\n }\n }\n }\n }\n }\n\n return top;\n}\n\nfunction nextTypoPermutation(pattern: string, patternPos: number): string | undefined {\n\n // istanbul ignore next\n if (patternPos + 1 >= pattern.length) {\n return undefined;\n }\n\n const swap1 = pattern[patternPos];\n const swap2 = pattern[patternPos + 1];\n\n // istanbul ignore next\n if (swap1 === swap2) {\n return undefined;\n }\n\n return pattern.slice(0, patternPos)\n + swap2\n + swap1\n + pattern.slice(patternPos + 2);\n}\n\n// #endregion\n"]}
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../../../src/appui-abstract/utils/filter/filters.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Utilities\n */\n\n// file copied from https://github.com/microsoft/vscode/blob/master/src/vs/base/common/filters.ts\n\n/* eslint-disable no-console */\n/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable no-restricted-syntax */\n\nimport { CharCode } from \"./charCode\";\nimport { LRUCache } from \"./map\";\nimport * as strings from \"./strings\";\n\n/** Interface that returns indices of matches\n * @public\n */\nexport interface IMatch {\n start: number;\n end: number;\n}\n\n/**\n * IFilter defines filter function type\n * @param word filter string\n * @param wordToMatchAgainst string to search for matches\n * @internal\n */\nexport type IFilter = (word: string, wordToMatchAgainst: string) => IMatch[] | null;\n\n// Combined filters\n\n/**\n * @returns A filter which combines the provided set\n * of filters with an or. The *first* filters that\n * matches defined the return value of the returned\n * filter.\n * @internal\n */\nexport function or(...filter: IFilter[]): IFilter {\n return function (word: string, wordToMatchAgainst: string): IMatch[] | null {\n for (let i = 0, len = filter.length; i < len; i++) {\n const match = filter[i](word, wordToMatchAgainst);\n if (match) {\n return match;\n }\n }\n return null;\n };\n}\n\n// Prefix\n\n/** @internal */\nexport const matchesStrictPrefix: IFilter = _matchesPrefix.bind(undefined, false);\n/** @internal */\nexport const matchesPrefix: IFilter = _matchesPrefix.bind(undefined, true);\n\nfunction _matchesPrefix(ignoreCase: boolean, word: string, wordToMatchAgainst: string): IMatch[] | null {\n if (!wordToMatchAgainst || wordToMatchAgainst.length < word.length) {\n return null;\n }\n\n let matches: boolean;\n if (ignoreCase) {\n matches = strings.startsWithIgnoreCase(wordToMatchAgainst, word);\n } else {\n matches = wordToMatchAgainst.indexOf(word) === 0;\n }\n\n if (!matches) {\n return null;\n }\n\n return word.length > 0 ? [{ start: 0, end: word.length }] : [];\n}\n\n// Contiguous Substring\n\n/** @internal */\nexport function matchesContiguousSubString(word: string, wordToMatchAgainst: string): IMatch[] | null {\n const index = wordToMatchAgainst.toLowerCase().indexOf(word.toLowerCase());\n if (index === -1) {\n return null;\n }\n\n return [{ start: index, end: index + word.length }];\n}\n\n// Substring\n\n/**\n * Return case insensitive substring matches\n * @param word filter string\n * @param wordToMatchAgainst string to test\n * @internal\n */\nexport function matchesSubString(word: string, wordToMatchAgainst: string): IMatch[] | null {\n return _matchesSubString(word.toLowerCase(), wordToMatchAgainst.toLowerCase(), 0, 0);\n}\n\nfunction _matchesSubString(word: string, wordToMatchAgainst: string, i: number, j: number): IMatch[] | null {\n if (i === word.length) {\n return [];\n } else if (j === wordToMatchAgainst.length) {\n return null;\n } else {\n if (word[i] === wordToMatchAgainst[j]) {\n let result: IMatch[] | null = null;\n if (result = _matchesSubString(word, wordToMatchAgainst, i + 1, j + 1)) {\n return join({ start: j, end: j + 1 }, result);\n }\n return null;\n }\n\n return _matchesSubString(word, wordToMatchAgainst, i, j + 1);\n }\n}\n\n// CamelCase\n\nfunction isLower(code: number): boolean {\n return CharCode.a <= code && code <= CharCode.z;\n}\n\nfunction isUpper(code: number): boolean {\n return CharCode.A <= code && code <= CharCode.Z;\n}\n\nfunction isNumber(code: number): boolean {\n return CharCode.Digit0 <= code && code <= CharCode.Digit9;\n}\n\nfunction isWhitespace(code: number): boolean {\n return (\n code === CharCode.Space\n || code === CharCode.Tab\n || code === CharCode.LineFeed\n || code === CharCode.CarriageReturn\n );\n}\n\nconst wordSeparators = new Set<number>();\n'`~!@#$%^&*()-=+[{]}\\\\|;:\\'\",.<>/?'\n .split(\"\")\n .forEach((s) => wordSeparators.add(s.charCodeAt(0)));\n\nfunction isWordSeparator(code: number): boolean {\n return isWhitespace(code) || wordSeparators.has(code);\n}\n\nfunction charactersMatch(codeA: number, codeB: number): boolean {\n return (codeA === codeB) || (isWordSeparator(codeA) && isWordSeparator(codeB));\n}\n\nfunction isAlphanumeric(code: number): boolean {\n return isLower(code) || isUpper(code) || isNumber(code);\n}\n\nfunction join(head: IMatch, tail: IMatch[]): IMatch[] {\n if (tail.length === 0) {\n tail = [head];\n } else if (head.end === tail[0].start) {\n tail[0].start = head.start;\n } else {\n tail.unshift(head);\n }\n return tail;\n}\n\nfunction nextAnchor(camelCaseWord: string, start: number): number {\n for (let i = start; i < camelCaseWord.length; i++) {\n const c = camelCaseWord.charCodeAt(i);\n if (isUpper(c) || isNumber(c) || (i > 0 && !isAlphanumeric(camelCaseWord.charCodeAt(i - 1)))) {\n return i;\n }\n }\n return camelCaseWord.length;\n}\n\nfunction _matchesCamelCase(word: string, camelCaseWord: string, i: number, j: number): IMatch[] | null {\n if (i === word.length) {\n return [];\n } else if (j === camelCaseWord.length) {\n return null;\n } else if (word[i] !== camelCaseWord[j].toLowerCase()) {\n return null;\n } else {\n let result: IMatch[] | null = null;\n let nextUpperIndex = j + 1;\n result = _matchesCamelCase(word, camelCaseWord, i + 1, j + 1);\n while (!result && (nextUpperIndex = nextAnchor(camelCaseWord, nextUpperIndex)) < camelCaseWord.length) {\n result = _matchesCamelCase(word, camelCaseWord, i + 1, nextUpperIndex);\n nextUpperIndex++;\n }\n return result === null ? null : join({ start: j, end: j + 1 }, result);\n }\n}\n\ninterface ICamelCaseAnalysis {\n upperPercent: number;\n lowerPercent: number;\n alphaPercent: number;\n numericPercent: number;\n}\n\n// Heuristic to avoid computing camel case matcher for words that don't\n// look like camelCaseWords.\nfunction analyzeCamelCaseWord(word: string): ICamelCaseAnalysis {\n let upper = 0, lower = 0, alpha = 0, numeric = 0, code = 0;\n\n for (let i = 0; i < word.length; i++) {\n code = word.charCodeAt(i);\n\n if (isUpper(code)) { upper++; }\n if (isLower(code)) { lower++; }\n if (isAlphanumeric(code)) { alpha++; }\n if (isNumber(code)) { numeric++; }\n }\n\n const upperPercent = upper / word.length;\n const lowerPercent = lower / word.length;\n const alphaPercent = alpha / word.length;\n const numericPercent = numeric / word.length;\n\n return { upperPercent, lowerPercent, alphaPercent, numericPercent };\n}\n\nfunction isUpperCaseWord(analysis: ICamelCaseAnalysis): boolean {\n const { upperPercent, lowerPercent } = analysis;\n return lowerPercent === 0 && upperPercent > 0.6;\n}\n\nfunction isCamelCaseWord(analysis: ICamelCaseAnalysis): boolean {\n const { upperPercent, lowerPercent, alphaPercent, numericPercent } = analysis;\n return lowerPercent > 0.2 && upperPercent < 0.8 && alphaPercent > 0.6 && numericPercent < 0.2;\n}\n\n// Heuristic to avoid computing camel case matcher for words that don't\n// look like camel case patterns.\nfunction isCamelCasePattern(word: string): boolean {\n let upper = 0, lower = 0, code = 0, whitespace = 0;\n\n for (let i = 0; i < word.length; i++) {\n code = word.charCodeAt(i);\n\n if (isUpper(code)) { upper++; }\n if (isLower(code)) { lower++; }\n if (isWhitespace(code)) { whitespace++; }\n }\n\n if ((upper === 0 || lower === 0) && whitespace === 0) {\n return word.length <= 30;\n } else {\n return upper <= 5;\n }\n}\n\n/**\n * Return matches treating \"camelCase\" words separately. For example the filter string \"gp\" would return two matches in string \"Git Pull\".\n * @param word filter string\n * @param wordToMatchAgainst string to test\n * @internal\n */\nexport function matchesCamelCase(word: string, camelCaseWord: string): IMatch[] | null {\n if (!camelCaseWord) {\n return null;\n }\n\n camelCaseWord = camelCaseWord.trim();\n\n if (camelCaseWord.length === 0) {\n return null;\n }\n\n if (!isCamelCasePattern(camelCaseWord)) {\n return null;\n }\n\n if (camelCaseWord.length > 60) {\n return null;\n }\n\n const analysis = analyzeCamelCaseWord(camelCaseWord);\n\n if (!isCamelCaseWord(analysis)) {\n // istanbul ignore next\n if (!isUpperCaseWord(analysis)) {\n return null;\n }\n\n camelCaseWord = camelCaseWord.toLowerCase();\n }\n\n let result: IMatch[] | null = null;\n let i = 0;\n\n word = word.toLowerCase();\n while (i < camelCaseWord.length && (result = _matchesCamelCase(word, camelCaseWord, 0, i)) === null) {\n i = nextAnchor(camelCaseWord, i + 1);\n }\n\n return result;\n}\n\n/**\n * Matches beginning of words supporting non-ASCII languages.\n * @param word Filter string\n * @param target String being searched\n * @param contiguous - If true the filter string must be found \"contiguous\" in the searched string (E.g. \"pul\" will match \"Git: Pull\").\n * Otherwise also matches sub string of the word with beginnings of the words in the target (e.g. \"gp\" or \"g p\" will match \"Git: Pull\").\n * Useful in cases where the target is words (e.g. command labels)\n * @internal\n */\nexport function matchesWords(word: string, target: string, contiguous: boolean = false): IMatch[] | null {\n if (!target || target.length === 0) {\n return null;\n }\n\n let result: IMatch[] | null = null;\n let i = 0;\n\n word = word.toLowerCase();\n target = target.toLowerCase();\n while (i < target.length && (result = _matchesWords(word, target, 0, i, contiguous)) === null) {\n i = nextWord(target, i + 1);\n }\n\n return result;\n}\n\nfunction _matchesWords(word: string, target: string, i: number, j: number, contiguous: boolean): IMatch[] | null {\n if (i === word.length) {\n return [];\n } else if (j === target.length) {\n return null;\n } else if (!charactersMatch(word.charCodeAt(i), target.charCodeAt(j))) {\n return null;\n } else {\n let result: IMatch[] | null = null;\n let nextWordIndex = j + 1;\n result = _matchesWords(word, target, i + 1, j + 1, contiguous);\n // istanbul ignore else\n if (!contiguous) {\n while (!result && (nextWordIndex = nextWord(target, nextWordIndex)) < target.length) {\n result = _matchesWords(word, target, i + 1, nextWordIndex, contiguous);\n nextWordIndex++;\n }\n }\n return result === null ? null : join({ start: j, end: j + 1 }, result);\n }\n}\n\nfunction nextWord(word: string, start: number): number {\n for (let i = start; i < word.length; i++) {\n if (isWordSeparator(word.charCodeAt(i)) ||\n (i > 0 && isWordSeparator(word.charCodeAt(i - 1)))) {\n return i;\n }\n }\n return word.length;\n}\n\n// Fuzzy\n\nconst fuzzyContiguousFilter = or(matchesPrefix, matchesCamelCase, matchesContiguousSubString);\nconst fuzzySeparateFilter = or(matchesPrefix, matchesCamelCase, matchesSubString);\nconst fuzzyRegExpCache = new LRUCache<string, RegExp>(10000); // bounded to 10000 elements\n\n/**\n * Match pattern against word in a fuzzy way. This will only return a single match.\n * @internal\n */\nexport function matchesFuzzy(word: string, wordToMatchAgainst: string, enableSeparateSubstringMatching = false): IMatch[] | null {\n // istanbul ignore next\n if (typeof word !== \"string\" || typeof wordToMatchAgainst !== \"string\") {\n return null; // return early for invalid input\n }\n\n // Form RegExp for wildcard matches\n let regexp = fuzzyRegExpCache.get(word);\n if (!regexp) {\n regexp = new RegExp(strings.convertSimple2RegExpPattern(word), \"i\");\n fuzzyRegExpCache.set(word, regexp);\n }\n\n // RegExp Filter\n const match = regexp.exec(wordToMatchAgainst);\n if (match) {\n return [{ start: match.index, end: match.index + match[0].length }];\n }\n\n // Default Filter\n return enableSeparateSubstringMatching ? /* istanbul ignore next */ fuzzySeparateFilter(word, wordToMatchAgainst) : fuzzyContiguousFilter(word, wordToMatchAgainst);\n}\n\n/**\n * Match pattern against word in a fuzzy way. As in IntelliSense and faster and more\n * powerful than `matchesFuzzy`. This will only return a single match.\n * @internal\n */\nexport function matchesFuzzy2(pattern: string, word: string): IMatch[] | null {\n const score = fuzzyScore(pattern, pattern.toLowerCase(), 0, word, word.toLowerCase(), 0, true);\n return score ? createMatches(score) : null;\n}\n\n// #region --- fuzzyScore ---\n/**\n * @internal\n */\nexport function createMatches(score: undefined | FuzzyScore): IMatch[] {\n // istanbul ignore next\n if (typeof score === \"undefined\") {\n return [];\n }\n\n const matches = score[1].toString(2);\n const wordStart = score[2];\n const res: IMatch[] = [];\n\n for (let pos = wordStart; pos < _maxLen; pos++) {\n if (matches[matches.length - (pos + 1)] === \"1\") {\n const last = res[res.length - 1];\n if (last && last.end === pos) {\n last.end = pos + 1;\n } else {\n res.push({ start: pos, end: pos + 1 });\n }\n }\n }\n return res;\n}\n\nconst _maxLen = 128;\n\nfunction initTable() {\n const table: number[][] = [];\n const row: number[] = [0];\n for (let i = 1; i <= _maxLen; i++) {\n row.push(-i);\n }\n for (let i = 0; i <= _maxLen; i++) {\n const thisRow = row.slice(0);\n thisRow[0] = -i;\n table.push(thisRow);\n }\n return table;\n}\n\nconst _table = initTable();\nconst _scores = initTable();\n// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\nconst _arrows = <Arrow[][]>initTable();\nconst _debug = false;\n\nfunction isSeparatorAtPos(value: string, index: number): boolean {\n if (index < 0 || index >= value.length) {\n return false;\n }\n const code = value.charCodeAt(index);\n switch (code) {\n case CharCode.Underline:\n case CharCode.Dash:\n case CharCode.Period:\n case CharCode.Space:\n case CharCode.Slash:\n case CharCode.Backslash:\n case CharCode.SingleQuote:\n case CharCode.DoubleQuote:\n case CharCode.Colon:\n case CharCode.DollarSign:\n return true;\n default:\n return false;\n }\n}\n\nfunction isWhitespaceAtPos(value: string, index: number): boolean {\n if (index < 0 || index >= value.length) {\n return false;\n }\n const code = value.charCodeAt(index);\n switch (code) {\n // istanbul ignore next\n case CharCode.Space:\n case CharCode.Tab:\n return true;\n default:\n return false;\n }\n}\n\nfunction isUpperCaseAtPos(pos: number, word: string, wordLow: string): boolean {\n return word[pos] !== wordLow[pos];\n}\n\n/** @internal */\nexport function isPatternInWord(patternLow: string, patternPos: number, patternLen: number, wordLow: string, wordPos: number, wordLen: number): boolean {\n while (patternPos < patternLen && wordPos < wordLen) {\n if (patternLow[patternPos] === wordLow[wordPos]) {\n patternPos += 1;\n }\n wordPos += 1;\n }\n return patternPos === patternLen; // pattern must be exhausted\n}\n\nconst enum Arrow { Top = 0b1, Diag = 0b10, Left = 0b100 }\n\n/**\n * A tuple of three values.\n * 0. the score\n * 1. the matches encoded as bitmask (2^53)\n * 2. the offset at which matching started\n * @internal\n */\nexport type FuzzyScore = [number, number, number];\n\n/** @internal */\nexport namespace FuzzyScore { // eslint-disable-line @typescript-eslint/no-redeclare\n /**\n * No matches and value `-100`\n * @internal\n */\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n export const Default: [-100, 0, 0] = <[-100, 0, 0]>Object.freeze([-100, 0, 0]);\n\n // istanbul ignore next\n /** @internal */\n export function isDefault(score?: FuzzyScore): score is [-100, 0, 0] {\n return !score || (score[0] === -100 && score[1] === 0 && score[2] === 0);\n }\n}\n\n/** @internal */\nexport type FuzzyScorer = (pattern: string, lowPattern: string, patternPos: number, word: string, lowWord: string, wordPos: number, firstMatchCanBeWeak: boolean) => FuzzyScore | undefined;\n\n/** @internal */\nexport function fuzzyScore(pattern: string, patternLow: string, patternStart: number, word: string, wordLow: string, wordStart: number, firstMatchCanBeWeak: boolean): FuzzyScore | undefined {\n // istanbul ignore next\n const patternLen = pattern.length > _maxLen ? _maxLen : pattern.length;\n const wordLen = word.length > _maxLen ? _maxLen : word.length;\n\n if (patternStart >= patternLen || wordStart >= wordLen || (patternLen - patternStart) > (wordLen - wordStart)) {\n return undefined;\n }\n\n // Run a simple check if the characters of pattern occur\n // (in order) at all in word. If that isn't the case we\n // stop because no match will be possible\n if (!isPatternInWord(patternLow, patternStart, patternLen, wordLow, wordStart, wordLen)) {\n return undefined;\n }\n\n let row: number = 1;\n let column: number = 1;\n let patternPos = patternStart;\n let wordPos = wordStart;\n\n let hasStrongFirstMatch = false;\n\n // There will be a match, fill in tables\n for (row = 1, patternPos = patternStart; patternPos < patternLen; row++, patternPos++) {\n\n for (column = 1, wordPos = wordStart; wordPos < wordLen; column++, wordPos++) {\n\n const score = _doScore(pattern, patternLow, patternPos, patternStart, word, wordLow, wordPos);\n\n if (patternPos === patternStart && score > 1) {\n hasStrongFirstMatch = true;\n }\n\n _scores[row][column] = score;\n\n const diag = _table[row - 1][column - 1] + (score > 1 ? 1 : score);\n const top = _table[row - 1][column] + -1;\n const left = _table[row][column - 1] + -1;\n\n if (left >= top) {\n // left or diag\n if (left > diag) {\n _table[row][column] = left;\n _arrows[row][column] = Arrow.Left;\n } else if (left === diag) {\n _table[row][column] = left;\n _arrows[row][column] = Arrow.Left | Arrow.Diag;\n } else {\n _table[row][column] = diag;\n _arrows[row][column] = Arrow.Diag;\n }\n } else {\n // top or diag\n if (top > diag) {\n _table[row][column] = top;\n _arrows[row][column] = Arrow.Top;\n } else if (top === diag) {\n _table[row][column] = top;\n _arrows[row][column] = Arrow.Top | Arrow.Diag;\n } else {\n _table[row][column] = diag;\n _arrows[row][column] = Arrow.Diag;\n }\n }\n }\n }\n\n if (!hasStrongFirstMatch && !firstMatchCanBeWeak) {\n return undefined;\n }\n\n _matchesCount = 0;\n _topScore = -100;\n _wordStart = wordStart;\n _firstMatchCanBeWeak = firstMatchCanBeWeak;\n\n _findAllMatches2(row - 1, column - 1, patternLen === wordLen ? 1 : 0, 0, false);\n if (_matchesCount === 0) {\n return undefined;\n }\n\n return [_topScore, _topMatch2, wordStart];\n}\n\nfunction _doScore(pattern: string, patternLow: string, patternPos: number, patternStart: number, word: string, wordLow: string, wordPos: number) {\n if (patternLow[patternPos] !== wordLow[wordPos]) {\n return -1;\n }\n if (wordPos === (patternPos - patternStart)) {\n // common prefix: `foobar <-> foobaz`\n // ^^^^^\n if (pattern[patternPos] === word[wordPos]) {\n return 7;\n } else {\n return 5;\n }\n } else if (isUpperCaseAtPos(wordPos, word, wordLow) && (wordPos === 0 || !isUpperCaseAtPos(wordPos - 1, word, wordLow))) {\n // hitting upper-case: `foo <-> forOthers`\n // ^^ ^\n if (pattern[patternPos] === word[wordPos]) {\n return 7;\n } else {\n return 5;\n }\n } else if (isSeparatorAtPos(wordLow, wordPos) && (wordPos === 0 || !isSeparatorAtPos(wordLow, wordPos - 1))) {\n // hitting a separator: `. <-> foo.bar`\n // ^\n return 5;\n\n } else if (isSeparatorAtPos(wordLow, wordPos - 1) || isWhitespaceAtPos(wordLow, wordPos - 1)) {\n // post separator: `foo <-> bar_foo`\n // ^^^\n return 5;\n\n } else {\n return 1;\n }\n}\n\nlet _matchesCount: number = 0;\nlet _topMatch2: number = 0;\nlet _topScore: number = 0;\nlet _wordStart: number = 0;\nlet _firstMatchCanBeWeak: boolean = false;\n\nfunction _findAllMatches2(row: number, column: number, total: number, matches: number, lastMatched: boolean): void {\n\n if (_matchesCount >= 10 || total < -25) {\n // stop when having already 10 results, or\n // when a potential alignment as already 5 gaps\n return;\n }\n\n let simpleMatchCount = 0;\n\n while (row > 0 && column > 0) {\n\n const score = _scores[row][column];\n const arrow = _arrows[row][column];\n\n if (arrow === Arrow.Left) {\n // left -> no match, skip a word character\n column -= 1;\n if (lastMatched) {\n total -= 5; // new gap penalty\n } else if (matches !== 0) {\n total -= 1; // gap penalty after first match\n }\n lastMatched = false;\n simpleMatchCount = 0;\n } else {\n /* istanbul ignore else */\n if (arrow & Arrow.Diag) {\n if (arrow & Arrow.Left) {\n // left\n _findAllMatches2(\n row,\n column - 1,\n matches !== 0 ? total - 1 : total, // gap penalty after first match\n matches,\n lastMatched\n );\n }\n\n // diag\n total += score;\n row -= 1;\n column -= 1;\n lastMatched = true;\n\n // match -> set a 1 at the word pos\n matches += 2 ** (column + _wordStart);\n\n // count simple matches and boost a row of\n // simple matches when they yield in a\n // strong match.\n if (score === 1) {\n simpleMatchCount += 1;\n\n if (row === 0 && !_firstMatchCanBeWeak) {\n // when the first match is a weak\n // match we discard it\n return undefined;\n }\n\n } else {\n // boost\n total += 1 + (simpleMatchCount * (score - 1));\n simpleMatchCount = 0;\n }\n\n } else {\n // istanbul ignore next\n return undefined;\n }\n }\n }\n\n total -= column >= 3 ? 9 : column * 3; // late start penalty\n\n // dynamically keep track of the current top score\n // and insert the current best score at head, the rest at tail\n _matchesCount += 1;\n if (total > _topScore) {\n _topScore = total;\n _topMatch2 = matches;\n }\n}\n\n// #endregion\n\n// #region --- graceful ---\n/** @internal */\nexport function fuzzyScoreGracefulAggressive(pattern: string, lowPattern: string, patternPos: number, word: string, lowWord: string, wordPos: number, firstMatchCanBeWeak: boolean): FuzzyScore | undefined {\n return fuzzyScoreWithPermutations(pattern, lowPattern, patternPos, word, lowWord, wordPos, true, firstMatchCanBeWeak);\n}\n\n/** @internal */\nexport function fuzzyScoreGraceful(pattern: string, lowPattern: string, patternPos: number, word: string, lowWord: string, wordPos: number, firstMatchCanBeWeak: boolean): FuzzyScore | undefined {\n return fuzzyScoreWithPermutations(pattern, lowPattern, patternPos, word, lowWord, wordPos, false, firstMatchCanBeWeak);\n}\n\nfunction fuzzyScoreWithPermutations(pattern: string, lowPattern: string, patternPos: number, word: string, lowWord: string, wordPos: number, aggressive: boolean, firstMatchCanBeWeak: boolean): FuzzyScore | undefined {\n let top = fuzzyScore(pattern, lowPattern, patternPos, word, lowWord, wordPos, firstMatchCanBeWeak);\n\n if (top && !aggressive) {\n // when using the original pattern yield a result we`\n // return it unless we are aggressive and try to find\n // a better alignment, e.g. `cno` -> `^co^ns^ole` or `^c^o^nsole`.\n return top;\n }\n\n // istanbul ignore else\n if (pattern.length >= 3) {\n // When the pattern is long enough then try a few (max 7)\n // permutations of the pattern to find a better match. The\n // permutations only swap neighbouring characters, e.g\n // `cnoso` becomes `conso`, `cnsoo`, `cnoos`.\n const tries = Math.min(7, pattern.length - 1);\n for (let movingPatternPos = patternPos + 1; movingPatternPos < tries; movingPatternPos++) {\n const newPattern = nextTypoPermutation(pattern, movingPatternPos);\n // istanbul ignore else\n if (newPattern) {\n const candidate = fuzzyScore(newPattern, newPattern.toLowerCase(), patternPos, word, lowWord, wordPos, firstMatchCanBeWeak);\n if (candidate) {\n candidate[0] -= 3; // permutation penalty\n // istanbul ignore else\n if (!top || candidate[0] > top[0]) {\n top = candidate;\n }\n }\n }\n }\n }\n\n return top;\n}\n\nfunction nextTypoPermutation(pattern: string, patternPos: number): string | undefined {\n\n // istanbul ignore next\n if (patternPos + 1 >= pattern.length) {\n return undefined;\n }\n\n const swap1 = pattern[patternPos];\n const swap2 = pattern[patternPos + 1];\n\n // istanbul ignore next\n if (swap1 === swap2) {\n return undefined;\n }\n\n return pattern.slice(0, patternPos)\n + swap2\n + swap1\n + pattern.slice(patternPos + 2);\n}\n\n// #endregion\n"]}
|
@@ -30,44 +30,42 @@ export class LinkedMap {
|
|
30
30
|
return this._size;
|
31
31
|
}
|
32
32
|
get first() {
|
33
|
-
|
34
|
-
return (_b = this._head) === null || _b === void 0 ? void 0 : _b.value;
|
33
|
+
return this._head?.value;
|
35
34
|
}
|
36
35
|
get last() {
|
37
|
-
|
38
|
-
return (_b = this._tail) === null || _b === void 0 ? void 0 : _b.value;
|
36
|
+
return this._tail?.value;
|
39
37
|
}
|
40
38
|
has(key) {
|
41
39
|
return this._map.has(key);
|
42
40
|
}
|
43
|
-
get(key, touch = 0 /* None */) {
|
41
|
+
get(key, touch = 0 /* Touch.None */) {
|
44
42
|
const item = this._map.get(key);
|
45
43
|
if (!item) {
|
46
44
|
return undefined;
|
47
45
|
}
|
48
|
-
if (touch !== 0 /* None */) {
|
46
|
+
if (touch !== 0 /* Touch.None */) {
|
49
47
|
this.touch(item, touch);
|
50
48
|
}
|
51
49
|
return item.value;
|
52
50
|
}
|
53
|
-
set(key, value, touch = 0 /* None */) {
|
51
|
+
set(key, value, touch = 0 /* Touch.None */) {
|
54
52
|
let item = this._map.get(key);
|
55
53
|
if (item) {
|
56
54
|
item.value = value;
|
57
|
-
if (touch !== 0 /* None */) {
|
55
|
+
if (touch !== 0 /* Touch.None */) {
|
58
56
|
this.touch(item, touch);
|
59
57
|
}
|
60
58
|
}
|
61
59
|
else {
|
62
60
|
item = { key, value, next: undefined, previous: undefined };
|
63
61
|
switch (touch) {
|
64
|
-
case 0 /* None */:
|
62
|
+
case 0 /* Touch.None */:
|
65
63
|
this.addItemLast(item);
|
66
64
|
break;
|
67
|
-
case 1 /* AsOld */:
|
65
|
+
case 1 /* Touch.AsOld */:
|
68
66
|
this.addItemFirst(item);
|
69
67
|
break;
|
70
|
-
case 2 /* AsNew */:
|
68
|
+
case 2 /* Touch.AsNew */:
|
71
69
|
this.addItemLast(item);
|
72
70
|
break;
|
73
71
|
default:
|
@@ -289,10 +287,10 @@ export class LinkedMap {
|
|
289
287
|
if (!this._head || !this._tail) {
|
290
288
|
throw new Error("Invalid list");
|
291
289
|
}
|
292
|
-
if ((touch !== 1 /* AsOld */ && touch !== 2 /* AsNew */)) {
|
290
|
+
if ((touch !== 1 /* Touch.AsOld */ && touch !== 2 /* Touch.AsNew */)) {
|
293
291
|
return;
|
294
292
|
}
|
295
|
-
if (touch === 1 /* AsOld */) {
|
293
|
+
if (touch === 1 /* Touch.AsOld */) {
|
296
294
|
if (item === this._head) {
|
297
295
|
return;
|
298
296
|
}
|
@@ -317,7 +315,7 @@ export class LinkedMap {
|
|
317
315
|
this._head = item;
|
318
316
|
this._state++;
|
319
317
|
}
|
320
|
-
else if (touch === 2 /* AsNew */) {
|
318
|
+
else if (touch === 2 /* Touch.AsNew */) {
|
321
319
|
if (item === this._tail) {
|
322
320
|
return;
|
323
321
|
}
|
@@ -380,14 +378,14 @@ export class LRUCache extends LinkedMap {
|
|
380
378
|
this._ratio = Math.min(Math.max(0, ratio), 1);
|
381
379
|
this.checkTrim();
|
382
380
|
}
|
383
|
-
get(key, touch = 2 /* AsNew */) {
|
381
|
+
get(key, touch = 2 /* Touch.AsNew */) {
|
384
382
|
return super.get(key, touch);
|
385
383
|
}
|
386
384
|
peek(key) {
|
387
|
-
return super.get(key, 0 /* None */);
|
385
|
+
return super.get(key, 0 /* Touch.None */);
|
388
386
|
}
|
389
387
|
set(key, value) {
|
390
|
-
super.set(key, value, 2 /* AsNew */);
|
388
|
+
super.set(key, value, 2 /* Touch.AsNew */);
|
391
389
|
this.checkTrim();
|
392
390
|
return this;
|
393
391
|
}
|