@datagrok-libraries/bio 5.0.0 → 5.1.0
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/index.d.ts +6 -4
- package/index.d.ts.map +1 -1
- package/index.js +5 -3
- package/index.ts +16 -4
- package/package.json +1 -1
- package/src/utils/macromolecule.d.ts +22 -0
- package/src/utils/macromolecule.d.ts.map +1 -1
- package/src/utils/macromolecule.js +38 -26
- package/src/utils/notation-converter.d.ts +2 -2
- package/src/utils/notation-converter.d.ts.map +1 -1
- package/src/utils/notation-converter.js +2 -2
- package/src/utils/splitter.d.ts.map +1 -1
- package/src/utils/splitter.js +2 -3
- package/src/utils/units-handler.d.ts +1 -19
- package/src/utils/units-handler.d.ts.map +1 -1
- package/src/utils/units-handler.js +23 -38
- package/src/viewers/phylocanvas-gl-viewer.d.ts +7 -0
- package/src/viewers/phylocanvas-gl-viewer.d.ts.map +1 -0
- package/src/viewers/phylocanvas-gl-viewer.js +2 -0
- package/src/viewers/vd-regions-viewer.d.ts +2 -2
- package/src/viewers/vd-regions-viewer.d.ts.map +1 -1
- package/src/viewers/vd-regions-viewer.js +1 -1
- package/src/viewers/viewer.d.ts +9 -0
- package/src/viewers/viewer.d.ts.map +1 -0
- package/src/viewers/viewer.js +2 -0
- package/src/viewers/web-logo.js +2 -2
package/index.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { AminoacidsPalettes } from './src/aminoacids';
|
|
2
2
|
import { NucleotidesPalettes } from './src/nucleotides';
|
|
3
|
-
import { SeqPalette } from './src/seq-palettes';
|
|
3
|
+
import { SeqPalette, SeqPaletteBase } from './src/seq-palettes';
|
|
4
4
|
import { UnknownSeqPalettes } from './src/unknown';
|
|
5
5
|
import { DrawStyle, printLeftOrCentered } from './src/utils/cell-renderer';
|
|
6
6
|
import { FastaFileHandler } from './src/utils/fasta-handler';
|
|
7
|
-
import { getSplitter, splitterAsFasta, getSplitterForColumn, SplitterFunc, monomerToShort, splitterAsHelm, getStats, pickUpPalette, getAlphabetSimilarity } from './src/utils/macromolecule';
|
|
7
|
+
import { getSplitter, splitterAsFasta, getSplitterForColumn, SplitterFunc, monomerToShort, splitterAsHelm, getStats, pickUpPalette, getPaletteByType, getAlphabetSimilarity, ALPHABET, NOTATION, TAGS } from './src/utils/macromolecule';
|
|
8
8
|
import { NotationConverter } from './src/utils/notation-converter';
|
|
9
|
-
import {
|
|
9
|
+
import { splitAlignedSequences } from './src/utils/splitter';
|
|
10
|
+
import { UnitsHandler } from './src/utils/units-handler';
|
|
10
11
|
import { VdRegion, VdRegionType } from './src/vd-regions';
|
|
12
|
+
import { IPhylocanvasGlViewer } from './src/viewers/phylocanvas-gl-viewer';
|
|
11
13
|
import { IVdRegionsViewer } from './src/viewers/vd-regions-viewer';
|
|
12
14
|
import { PositionInfo, PositionMonomerInfo, WebLogo } from './src/viewers/web-logo';
|
|
13
|
-
export { NOTATION, NotationConverter, SplitterFunc, getStats, getAlphabetSimilarity, getSplitter, splitterAsFasta, splitterAsHelm, getSplitterForColumn, monomerToShort, SeqPalette, AminoacidsPalettes, NucleotidesPalettes, UnknownSeqPalettes, pickUpPalette, PositionInfo, PositionMonomerInfo, WebLogo, UnitsHandler, DrawStyle, printLeftOrCentered, VdRegionType, VdRegion, IVdRegionsViewer,
|
|
15
|
+
export { ALPHABET, NOTATION, TAGS, NotationConverter, SplitterFunc, getStats, getAlphabetSimilarity, getSplitter, splitterAsFasta, splitterAsHelm, getSplitterForColumn, monomerToShort, splitAlignedSequences, SeqPalette, SeqPaletteBase, AminoacidsPalettes, NucleotidesPalettes, UnknownSeqPalettes, pickUpPalette, getPaletteByType, PositionInfo, PositionMonomerInfo, WebLogo, UnitsHandler, DrawStyle, printLeftOrCentered, FastaFileHandler, VdRegionType, VdRegion, IVdRegionsViewer, IPhylocanvasGlViewer, };
|
|
14
16
|
//# sourceMappingURL=index.d.ts.map
|
package/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AACjD,OAAO,EAAC,SAAS,EAAE,mBAAmB,EAAC,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EACL,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,QAAQ,EACR,QAAQ,EACR,IAAI,EACL,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAC,iBAAiB,EAAC,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAC,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAC,QAAQ,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAC,oBAAoB,EAAC,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAC,YAAY,EAAE,mBAAmB,EAAE,OAAO,EAAC,MAAM,wBAAwB,CAAC;AAElF,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,OAAO,EACP,YAAY,EACZ,SAAS,EACT,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,GACrB,CAAC"}
|
package/index.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { AminoacidsPalettes } from './src/aminoacids';
|
|
2
2
|
import { NucleotidesPalettes } from './src/nucleotides';
|
|
3
|
+
import { SeqPaletteBase } from './src/seq-palettes';
|
|
3
4
|
import { UnknownSeqPalettes } from './src/unknown';
|
|
4
5
|
import { DrawStyle, printLeftOrCentered } from './src/utils/cell-renderer';
|
|
5
6
|
import { FastaFileHandler } from './src/utils/fasta-handler';
|
|
6
|
-
import { getSplitter, splitterAsFasta, getSplitterForColumn, monomerToShort, splitterAsHelm, getStats, pickUpPalette, getAlphabetSimilarity } from './src/utils/macromolecule';
|
|
7
|
+
import { getSplitter, splitterAsFasta, getSplitterForColumn, monomerToShort, splitterAsHelm, getStats, pickUpPalette, getPaletteByType, getAlphabetSimilarity } from './src/utils/macromolecule';
|
|
7
8
|
import { NotationConverter } from './src/utils/notation-converter';
|
|
9
|
+
import { splitAlignedSequences } from './src/utils/splitter';
|
|
8
10
|
import { UnitsHandler } from './src/utils/units-handler';
|
|
9
11
|
import { VdRegion, VdRegionType } from './src/vd-regions';
|
|
10
12
|
import { PositionInfo, PositionMonomerInfo, WebLogo } from './src/viewers/web-logo';
|
|
11
|
-
export { NotationConverter, getStats, getAlphabetSimilarity, getSplitter, splitterAsFasta, splitterAsHelm, getSplitterForColumn, monomerToShort, AminoacidsPalettes, NucleotidesPalettes, UnknownSeqPalettes, pickUpPalette, PositionInfo, PositionMonomerInfo, WebLogo, UnitsHandler, DrawStyle, printLeftOrCentered, VdRegionType, VdRegion,
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
export { NotationConverter, getStats, getAlphabetSimilarity, getSplitter, splitterAsFasta, splitterAsHelm, getSplitterForColumn, monomerToShort, splitAlignedSequences, SeqPaletteBase, AminoacidsPalettes, NucleotidesPalettes, UnknownSeqPalettes, pickUpPalette, getPaletteByType, PositionInfo, PositionMonomerInfo, WebLogo, UnitsHandler, DrawStyle, printLeftOrCentered, FastaFileHandler, VdRegionType, VdRegion, };
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQWEsY0FBYyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxTQUFTLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsV0FBVyxFQUNYLGVBQWUsRUFDZixvQkFBb0IsRUFFcEIsY0FBYyxFQUNkLGNBQWMsRUFDZCxRQUFRLEVBQ1IsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixxQkFBcUIsRUFJdEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUd4RCxPQUFPLEVBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRWxGLE9BQU8sRUFJTCxpQkFBaUIsRUFFakIsUUFBUSxFQUNSLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsZUFBZSxFQUNmLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLHFCQUFxQixFQUVyQixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxZQUFZLEVBQ1osU0FBUyxFQUNULG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFFBQVEsR0FHVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBbWlub2FjaWRzUGFsZXR0ZXN9IGZyb20gJy4vc3JjL2FtaW5vYWNpZHMnO1xuaW1wb3J0IHtOdWNsZW90aWRlc1BhbGV0dGVzfSBmcm9tICcuL3NyYy9udWNsZW90aWRlcyc7XG5pbXBvcnQge1NlcVBhbGV0dGUsIFNlcVBhbGV0dGVCYXNlfSBmcm9tICcuL3NyYy9zZXEtcGFsZXR0ZXMnO1xuaW1wb3J0IHtVbmtub3duU2VxUGFsZXR0ZXN9IGZyb20gJy4vc3JjL3Vua25vd24nO1xuaW1wb3J0IHtEcmF3U3R5bGUsIHByaW50TGVmdE9yQ2VudGVyZWR9IGZyb20gJy4vc3JjL3V0aWxzL2NlbGwtcmVuZGVyZXInO1xuaW1wb3J0IHtGYXN0YUZpbGVIYW5kbGVyfSBmcm9tICcuL3NyYy91dGlscy9mYXN0YS1oYW5kbGVyJztcbmltcG9ydCB7XG4gIGdldFNwbGl0dGVyLFxuICBzcGxpdHRlckFzRmFzdGEsXG4gIGdldFNwbGl0dGVyRm9yQ29sdW1uLFxuICBTcGxpdHRlckZ1bmMsXG4gIG1vbm9tZXJUb1Nob3J0LFxuICBzcGxpdHRlckFzSGVsbSxcbiAgZ2V0U3RhdHMsXG4gIHBpY2tVcFBhbGV0dGUsXG4gIGdldFBhbGV0dGVCeVR5cGUsXG4gIGdldEFscGhhYmV0U2ltaWxhcml0eSxcbiAgQUxQSEFCRVQsXG4gIE5PVEFUSU9OLFxuICBUQUdTXG59IGZyb20gJy4vc3JjL3V0aWxzL21hY3JvbW9sZWN1bGUnO1xuaW1wb3J0IHtOb3RhdGlvbkNvbnZlcnRlcn0gZnJvbSAnLi9zcmMvdXRpbHMvbm90YXRpb24tY29udmVydGVyJztcbmltcG9ydCB7c3BsaXRBbGlnbmVkU2VxdWVuY2VzfSBmcm9tICcuL3NyYy91dGlscy9zcGxpdHRlcic7XG5pbXBvcnQge1VuaXRzSGFuZGxlcn0gZnJvbSAnLi9zcmMvdXRpbHMvdW5pdHMtaGFuZGxlcic7XG5pbXBvcnQge1ZkUmVnaW9uLCBWZFJlZ2lvblR5cGV9IGZyb20gJy4vc3JjL3ZkLXJlZ2lvbnMnO1xuaW1wb3J0IHtJUGh5bG9jYW52YXNHbFZpZXdlcn0gZnJvbSAnLi9zcmMvdmlld2Vycy9waHlsb2NhbnZhcy1nbC12aWV3ZXInO1xuaW1wb3J0IHtJVmRSZWdpb25zVmlld2VyfSBmcm9tICcuL3NyYy92aWV3ZXJzL3ZkLXJlZ2lvbnMtdmlld2VyJztcbmltcG9ydCB7UG9zaXRpb25JbmZvLCBQb3NpdGlvbk1vbm9tZXJJbmZvLCBXZWJMb2dvfSBmcm9tICcuL3NyYy92aWV3ZXJzL3dlYi1sb2dvJztcblxuZXhwb3J0IHtcbiAgQUxQSEFCRVQsXG4gIE5PVEFUSU9OLFxuICBUQUdTLFxuICBOb3RhdGlvbkNvbnZlcnRlcixcbiAgU3BsaXR0ZXJGdW5jLFxuICBnZXRTdGF0cyxcbiAgZ2V0QWxwaGFiZXRTaW1pbGFyaXR5LFxuICBnZXRTcGxpdHRlcixcbiAgc3BsaXR0ZXJBc0Zhc3RhLFxuICBzcGxpdHRlckFzSGVsbSxcbiAgZ2V0U3BsaXR0ZXJGb3JDb2x1bW4sXG4gIG1vbm9tZXJUb1Nob3J0LFxuICBzcGxpdEFsaWduZWRTZXF1ZW5jZXMsXG4gIFNlcVBhbGV0dGUsXG4gIFNlcVBhbGV0dGVCYXNlLFxuICBBbWlub2FjaWRzUGFsZXR0ZXMsXG4gIE51Y2xlb3RpZGVzUGFsZXR0ZXMsXG4gIFVua25vd25TZXFQYWxldHRlcyxcbiAgcGlja1VwUGFsZXR0ZSxcbiAgZ2V0UGFsZXR0ZUJ5VHlwZSxcbiAgUG9zaXRpb25JbmZvLFxuICBQb3NpdGlvbk1vbm9tZXJJbmZvLFxuICBXZWJMb2dvLFxuICBVbml0c0hhbmRsZXIsXG4gIERyYXdTdHlsZSxcbiAgcHJpbnRMZWZ0T3JDZW50ZXJlZCxcbiAgRmFzdGFGaWxlSGFuZGxlcixcbiAgVmRSZWdpb25UeXBlLFxuICBWZFJlZ2lvbixcbiAgSVZkUmVnaW9uc1ZpZXdlcixcbiAgSVBoeWxvY2FudmFzR2xWaWV3ZXIsXG59OyJdfQ==
|
package/index.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {AminoacidsPalettes} from './src/aminoacids';
|
|
2
2
|
import {NucleotidesPalettes} from './src/nucleotides';
|
|
3
|
-
import {SeqPalette} from './src/seq-palettes';
|
|
3
|
+
import {SeqPalette, SeqPaletteBase} from './src/seq-palettes';
|
|
4
4
|
import {UnknownSeqPalettes} from './src/unknown';
|
|
5
5
|
import {DrawStyle, printLeftOrCentered} from './src/utils/cell-renderer';
|
|
6
6
|
import {FastaFileHandler} from './src/utils/fasta-handler';
|
|
@@ -13,16 +13,24 @@ import {
|
|
|
13
13
|
splitterAsHelm,
|
|
14
14
|
getStats,
|
|
15
15
|
pickUpPalette,
|
|
16
|
-
|
|
16
|
+
getPaletteByType,
|
|
17
|
+
getAlphabetSimilarity,
|
|
18
|
+
ALPHABET,
|
|
19
|
+
NOTATION,
|
|
20
|
+
TAGS
|
|
17
21
|
} from './src/utils/macromolecule';
|
|
18
22
|
import {NotationConverter} from './src/utils/notation-converter';
|
|
19
|
-
import {
|
|
23
|
+
import {splitAlignedSequences} from './src/utils/splitter';
|
|
24
|
+
import {UnitsHandler} from './src/utils/units-handler';
|
|
20
25
|
import {VdRegion, VdRegionType} from './src/vd-regions';
|
|
26
|
+
import {IPhylocanvasGlViewer} from './src/viewers/phylocanvas-gl-viewer';
|
|
21
27
|
import {IVdRegionsViewer} from './src/viewers/vd-regions-viewer';
|
|
22
28
|
import {PositionInfo, PositionMonomerInfo, WebLogo} from './src/viewers/web-logo';
|
|
23
29
|
|
|
24
30
|
export {
|
|
31
|
+
ALPHABET,
|
|
25
32
|
NOTATION,
|
|
33
|
+
TAGS,
|
|
26
34
|
NotationConverter,
|
|
27
35
|
SplitterFunc,
|
|
28
36
|
getStats,
|
|
@@ -32,19 +40,23 @@ export {
|
|
|
32
40
|
splitterAsHelm,
|
|
33
41
|
getSplitterForColumn,
|
|
34
42
|
monomerToShort,
|
|
43
|
+
splitAlignedSequences,
|
|
35
44
|
SeqPalette,
|
|
45
|
+
SeqPaletteBase,
|
|
36
46
|
AminoacidsPalettes,
|
|
37
47
|
NucleotidesPalettes,
|
|
38
48
|
UnknownSeqPalettes,
|
|
39
49
|
pickUpPalette,
|
|
50
|
+
getPaletteByType,
|
|
40
51
|
PositionInfo,
|
|
41
52
|
PositionMonomerInfo,
|
|
42
53
|
WebLogo,
|
|
43
54
|
UnitsHandler,
|
|
44
55
|
DrawStyle,
|
|
45
56
|
printLeftOrCentered,
|
|
57
|
+
FastaFileHandler,
|
|
46
58
|
VdRegionType,
|
|
47
59
|
VdRegion,
|
|
48
60
|
IVdRegionsViewer,
|
|
49
|
-
|
|
61
|
+
IPhylocanvasGlViewer,
|
|
50
62
|
};
|
package/package.json
CHANGED
|
@@ -6,6 +6,26 @@ import * as DG from 'datagrok-api/dg';
|
|
|
6
6
|
* @return { SeqColStats }, sameLength: boolean } stats of column sequences
|
|
7
7
|
*/
|
|
8
8
|
import { SeqPalette } from '../seq-palettes';
|
|
9
|
+
import * as bio from '../../index';
|
|
10
|
+
/** enum type to simplify setting "user-friendly" notation if necessary */
|
|
11
|
+
export declare const enum NOTATION {
|
|
12
|
+
FASTA = "fasta",
|
|
13
|
+
SEPARATOR = "separator",
|
|
14
|
+
HELM = "helm"
|
|
15
|
+
}
|
|
16
|
+
export declare const enum ALPHABET {
|
|
17
|
+
DNA = "DNA",
|
|
18
|
+
RNA = "RNA",
|
|
19
|
+
PT = "PT",
|
|
20
|
+
UN = "UN"
|
|
21
|
+
}
|
|
22
|
+
export declare const enum TAGS {
|
|
23
|
+
aligned = "aligned",
|
|
24
|
+
alphabet = "alphabet",
|
|
25
|
+
alphabetSize = ".alphabetSize",
|
|
26
|
+
alphabetIsMultichar = ".alphabetIsMultichar",
|
|
27
|
+
separator = "separator"
|
|
28
|
+
}
|
|
9
29
|
export declare type SeqColStats = {
|
|
10
30
|
freq: MonomerFreqs;
|
|
11
31
|
sameLength: boolean;
|
|
@@ -54,11 +74,13 @@ export declare function monomerToShort(amino: string, maxLengthOfMonomer: number
|
|
|
54
74
|
* @return {number} Cosine similarity
|
|
55
75
|
*/
|
|
56
76
|
export declare function getAlphabetSimilarity(freq: MonomerFreqs, alphabet: Set<string>, gapSymbol?: string): number;
|
|
77
|
+
export declare function detectAlphabet(stats: SeqColStats): string;
|
|
57
78
|
/** Selects a suitable palette based on column data
|
|
58
79
|
* @param {DG.Column} seqCol Column to look for a palette
|
|
59
80
|
* @param {number} minLength minimum length of sequence to detect palette (empty strings are allowed)
|
|
60
81
|
* @return {SeqPalette} Palette corresponding to the alphabet of the sequences in the column
|
|
61
82
|
*/
|
|
62
83
|
export declare function pickUpPalette(seqCol: DG.Column, minLength?: number): SeqPalette;
|
|
84
|
+
export declare function getPaletteByType(paletteType: string): bio.SeqPalette;
|
|
63
85
|
export declare function pickUpSeqCol(df: DG.DataFrame): DG.Column | null;
|
|
64
86
|
//# sourceMappingURL=macromolecule.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"macromolecule.d.ts","sourceRoot":"","sources":["macromolecule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAKtC;;;;;GAKG;AACH,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"macromolecule.d.ts","sourceRoot":"","sources":["macromolecule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAKtC;;;;;GAKG;AACH,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAM3C,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AAEnC,0EAA0E;AAC1E,0BAAkB,QAAQ;IACxB,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,IAAI,SAAS;CACd;AAED,0BAAkB,QAAQ;IACxB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,EAAE,OAAO;IACT,EAAE,OAAO;CACV;AAED,0BAAkB,IAAI;IACpB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,YAAY,kBAAkB;IAC9B,mBAAmB,yBAAyB;IAC5C,SAAS,cAAc;CACxB;AAED,oBAAY,WAAW,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAA;AACrE,oBAAY,YAAY,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;AACrD,oBAAY,YAAY,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AAEnD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,WAAW,CAsBlG;AAED,eAAO,MAAM,SAAS,EAAE,MAA8B,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,CAYlD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,GAAG,SAAqB,GAAG,YAAY,CAI/G;AAMD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,CAgBjD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,GAAG,SAAqB,GAAG,YAAY,CAWjH;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,GAAG,YAAY,CAOjE;AAID,+CAA+C;AAC/C,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAKhF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,GAAE,MAAY,GAAG,MAAM,CAchH;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAazD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,GAAE,MAAU,GAAG,UAAU,CAYlF;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,UAAU,CAYpE;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAS/D"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import * as DG from 'datagrok-api/dg';
|
|
2
2
|
import { Vector } from '@datagrok-libraries/utils/src/type-declarations';
|
|
3
3
|
import { vectorLength, vectorDotProduct } from '@datagrok-libraries/utils/src/vector-operations';
|
|
4
|
-
import { Aminoacids, AminoacidsPalettes } from '../aminoacids';
|
|
5
|
-
import { Nucleotides, NucleotidesPalettes } from '../nucleotides';
|
|
6
|
-
import { UnknownSeqPalettes } from '../unknown';
|
|
7
4
|
import wu from 'wu';
|
|
8
5
|
import { UnitsHandler } from '../utils/units-handler';
|
|
6
|
+
import * as bio from '../../index';
|
|
7
|
+
;
|
|
9
8
|
export function getStats(seqCol, minLength, splitter) {
|
|
10
9
|
const freq = {};
|
|
11
10
|
let sameLength = true;
|
|
@@ -102,7 +101,7 @@ export function getSplitterForColumn(col) {
|
|
|
102
101
|
if (col.semType !== DG.SEMTYPE.MACROMOLECULE)
|
|
103
102
|
throw new Error(`Get splitter for semType "${DG.SEMTYPE.MACROMOLECULE}" only.`);
|
|
104
103
|
const units = col.getTag(DG.TAGS.UNITS);
|
|
105
|
-
const separator = col.getTag(
|
|
104
|
+
const separator = col.getTag("separator" /* TAGS.separator */);
|
|
106
105
|
return getSplitter(units, separator);
|
|
107
106
|
}
|
|
108
107
|
const longMonomerPartRe = /(\w+)/g;
|
|
@@ -134,36 +133,49 @@ export function getAlphabetSimilarity(freq, alphabet, gapSymbol = '-') {
|
|
|
134
133
|
const alphabetV = new Vector(alphabetA);
|
|
135
134
|
return vectorDotProduct(freqV, alphabetV) / (vectorLength(freqV) * vectorLength(alphabetV));
|
|
136
135
|
}
|
|
136
|
+
export function detectAlphabet(stats) {
|
|
137
|
+
const alphabetCandidates = [
|
|
138
|
+
["PT" /* ALPHABET.PT */, UnitsHandler.PeptideFastaAlphabet],
|
|
139
|
+
["DNA" /* ALPHABET.DNA */, UnitsHandler.DnaFastaAlphabet],
|
|
140
|
+
["RNA" /* ALPHABET.RNA */, UnitsHandler.RnaFastaAlphabet],
|
|
141
|
+
];
|
|
142
|
+
// Calculate likelihoods for alphabet_candidates
|
|
143
|
+
const alphabetCandidatesSim = alphabetCandidates.map((c) => getAlphabetSimilarity(stats.freq, c[1]));
|
|
144
|
+
const maxCos = Math.max(...alphabetCandidatesSim);
|
|
145
|
+
const alphabet = maxCos > 0.65 ? alphabetCandidates[alphabetCandidatesSim.indexOf(maxCos)][0] : 'UN';
|
|
146
|
+
return alphabet;
|
|
147
|
+
}
|
|
137
148
|
/** Selects a suitable palette based on column data
|
|
138
149
|
* @param {DG.Column} seqCol Column to look for a palette
|
|
139
150
|
* @param {number} minLength minimum length of sequence to detect palette (empty strings are allowed)
|
|
140
151
|
* @return {SeqPalette} Palette corresponding to the alphabet of the sequences in the column
|
|
141
152
|
*/
|
|
142
153
|
export function pickUpPalette(seqCol, minLength = 5) {
|
|
143
|
-
let
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
break;
|
|
148
|
-
case Nucleotides.SemTypeMultipleAlignment:
|
|
149
|
-
res = NucleotidesPalettes.Chromatogram;
|
|
150
|
-
break;
|
|
154
|
+
let alphabet;
|
|
155
|
+
if (seqCol.semType == DG.SEMTYPE.MACROMOLECULE) {
|
|
156
|
+
const uh = new UnitsHandler(seqCol);
|
|
157
|
+
alphabet = uh.alphabet;
|
|
151
158
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
// Calculate likelihoods for alphabet_candidates
|
|
158
|
-
const alphabetCandidatesSim = alphabetCandidates
|
|
159
|
-
.map((c) => getAlphabetSimilarity(stats.freq, c[0]));
|
|
160
|
-
const maxCos = Math.max(...alphabetCandidatesSim);
|
|
161
|
-
if (maxCos > 0.55)
|
|
162
|
-
res = alphabetCandidates[alphabetCandidatesSim.indexOf(maxCos)][1];
|
|
163
|
-
else
|
|
164
|
-
res = UnknownSeqPalettes.Color;
|
|
159
|
+
else {
|
|
160
|
+
const stats = getStats(seqCol, minLength, splitterAsFasta);
|
|
161
|
+
alphabet = detectAlphabet(stats);
|
|
162
|
+
}
|
|
163
|
+
const res = getPaletteByType(alphabet);
|
|
165
164
|
return res;
|
|
166
165
|
}
|
|
166
|
+
export function getPaletteByType(paletteType) {
|
|
167
|
+
switch (paletteType) {
|
|
168
|
+
case 'PT':
|
|
169
|
+
return bio.AminoacidsPalettes.GrokGroups;
|
|
170
|
+
case 'NT':
|
|
171
|
+
case 'DNA':
|
|
172
|
+
case 'RNA':
|
|
173
|
+
return bio.NucleotidesPalettes.Chromatogram;
|
|
174
|
+
// other
|
|
175
|
+
default:
|
|
176
|
+
return bio.UnknownSeqPalettes.Color;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
167
179
|
export function pickUpSeqCol(df) {
|
|
168
180
|
var _a;
|
|
169
181
|
const semTypeColList = df.columns.bySemTypeAll(DG.SEMTYPE.MACROMOLECULE);
|
|
@@ -175,4 +187,4 @@ export function pickUpSeqCol(df) {
|
|
|
175
187
|
resCol = semTypeColList[0];
|
|
176
188
|
return resCol;
|
|
177
189
|
}
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjcm9tb2xlY3VsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1hY3JvbW9sZWN1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDdkUsT0FBTyxFQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBUy9GLE9BQU8sRUFBQyxVQUFVLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUM5QyxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEIsT0FBTyxFQUFXLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBTTlELE1BQU0sVUFBVSxRQUFRLENBQUMsTUFBaUIsRUFBRSxTQUFpQixFQUFFLFFBQXNCO0lBQ25GLE1BQU0sSUFBSSxHQUE0QixFQUFFLENBQUM7SUFDekMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztJQUV2QixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUU7UUFDbkMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTNCLElBQUksV0FBVyxJQUFJLElBQUk7WUFDckIsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7YUFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFdBQVc7WUFDbEMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUVyQixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFO1lBQzNCLEtBQUssTUFBTSxDQUFDLElBQUks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QUFrQixDQUFDLEtBQUssQ0FBQztJQUVqQyxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLEVBQWdCOztJQUMzQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pFLElBQUksTUFBTSxHQUFxQixNQUFBLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUN6RCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNyRCxDQUFDLENBQUMsbUNBQUksSUFBSSxDQUFDO0lBQ1gsSUFBSSxDQUFDLE1BQU0sSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDdEMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcblxuaW1wb3J0IHtWZWN0b3J9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7dmVjdG9yTGVuZ3RoLCB2ZWN0b3JEb3RQcm9kdWN0fSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5cbi8qKiBTdGF0cyBvZiBzZXF1ZW5jZXMgd2l0aCBzcGVjaWZpZWQgc3BsaXR0ZXIgZnVuYywgcmV0dXJucyB7IGZyZXEsIHNhbWVMZW5ndGggfS5cbiAqIEBwYXJhbSB7REcuQ29sdW1ufSBzZXFDb2xcbiAqIEBwYXJhbSB7bnVtYmVyfSBtaW5MZW5ndGhcbiAqIEBwYXJhbSB7U3BsaXR0ZXJGdW5jfSBzcGxpdHRlclxuICogQHJldHVybiB7IFNlcUNvbFN0YXRzIH0sIHNhbWVMZW5ndGg6IGJvb2xlYW4gfSBzdGF0cyBvZiBjb2x1bW4gc2VxdWVuY2VzXG4gKi9cbmltcG9ydCB7U2VxUGFsZXR0ZX0gZnJvbSAnLi4vc2VxLXBhbGV0dGVzJztcbmltcG9ydCB7QW1pbm9hY2lkcywgQW1pbm9hY2lkc1BhbGV0dGVzfSBmcm9tICcuLi9hbWlub2FjaWRzJztcbmltcG9ydCB7TnVjbGVvdGlkZXMsIE51Y2xlb3RpZGVzUGFsZXR0ZXN9IGZyb20gJy4uL251Y2xlb3RpZGVzJztcbmltcG9ydCB7VW5rbm93blNlcVBhbGV0dGVzfSBmcm9tICcuLi91bmtub3duJztcbmltcG9ydCB3dSBmcm9tICd3dSc7XG5pbXBvcnQge05PVEFUSU9OLCBVbml0c0hhbmRsZXJ9IGZyb20gJy4uL3V0aWxzL3VuaXRzLWhhbmRsZXInO1xuXG5leHBvcnQgdHlwZSBTZXFDb2xTdGF0cyA9IHsgZnJlcTogTW9ub21lckZyZXFzLCBzYW1lTGVuZ3RoOiBib29sZWFuIH1cbmV4cG9ydCB0eXBlIFNwbGl0dGVyRnVuYyA9IChzZXE6IHN0cmluZykgPT4gc3RyaW5nW107XG5leHBvcnQgdHlwZSBNb25vbWVyRnJlcXMgPSB7IFttOiBzdHJpbmddOiBudW1iZXIgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXRzKHNlcUNvbDogREcuQ29sdW1uLCBtaW5MZW5ndGg6IG51bWJlciwgc3BsaXR0ZXI6IFNwbGl0dGVyRnVuYyk6IFNlcUNvbFN0YXRzIHtcbiAgY29uc3QgZnJlcTogeyBbbTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgbGV0IHNhbWVMZW5ndGggPSB0cnVlO1xuICBsZXQgZmlyc3RMZW5ndGggPSBudWxsO1xuXG4gIGZvciAoY29uc3Qgc2VxIG9mIHNlcUNvbC5jYXRlZ29yaWVzKSB7XG4gICAgY29uc3QgbVNlcSA9IHNwbGl0dGVyKHNlcSk7XG5cbiAgICBpZiAoZmlyc3RMZW5ndGggPT0gbnVsbClcbiAgICAgIGZpcnN0TGVuZ3RoID0gbVNlcS5sZW5ndGg7XG4gICAgZWxzZSBpZiAobVNlcS5sZW5ndGggIT09IGZpcnN0TGVuZ3RoKVxuICAgICAgc2FtZUxlbmd0aCA9IGZhbHNlO1xuXG4gICAgaWYgKG1TZXEubGVuZ3RoID4gbWluTGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IG0gb2YgbVNlcSkge1xuICAgICAgICBpZiAoIShtIGluIGZyZXEpKVxuICAgICAgICAgIGZyZXFbbV0gPSAwO1xuICAgICAgICBmcmVxW21dICs9IDE7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB7ZnJlcTogZnJlcSwgc2FtZUxlbmd0aDogc2FtZUxlbmd0aH07XG59XG5cbmV4cG9ydCBjb25zdCBtb25vbWVyUmU6IFJlZ0V4cCA9IC9cXFsoXFx3KylcXF18KFxcdyl8KC0pL2c7XG5cbi8qKiBTcGxpdCBzZXF1ZW5jZSBmb3Igc2luZ2xlIGNoYXJhY3RlciBtb25vbWVycywgc3F1YXJlIGJyYWNrZXRzIG11bHRpY2hhciBtb25vbWVyIG5hbWVzIG9yIGdhcCBzeW1ib2wuXG4gKiBAcGFyYW0ge2FueX0gc2VxIG9iamVjdCB3aXRoIHNlcXVlbmNlXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX0gYXJyYXkgb2YgbW9ub21lcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0dGVyQXNGYXN0YShzZXE6IGFueSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIHd1PFJlZ0V4cE1hdGNoQXJyYXk+KHNlcS50b1N0cmluZygpLm1hdGNoQWxsKG1vbm9tZXJSZSkpXG4gICAgLm1hcCgobWE6IFJlZ0V4cE1hdGNoQXJyYXkpID0+IHtcbiAgICAgIGxldCBtUmVzOiBzdHJpbmc7XG4gICAgICBjb25zdCBtOiBzdHJpbmcgPSBtYVswXTtcbiAgICAgIGlmIChtLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgbVJlcyA9IG1hWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbVJlcyA9IG07XG4gICAgICB9XG4gICAgICByZXR1cm4gbVJlcztcbiAgICB9KS50b0FycmF5KCk7XG59XG5cbi8qKiBHZXRzIG1ldGhvZCB0byBzcGxpdCBzZXF1ZW5jZSBieSBzZXBhcmF0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3JcbiAqIEBwYXJhbSBsaW1pdFxuICogQHJldHVybiB7U3BsaXR0ZXJGdW5jfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvcjogc3RyaW5nLCBsaW1pdDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKTogU3BsaXR0ZXJGdW5jIHtcbiAgcmV0dXJuIChzZXE6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBzZXEuc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCk7XG4gIH07XG59XG5cbmNvbnN0IGhlbG1SZTogUmVnRXhwID0gLyhQRVBUSURFMXxETkExfFJOQTEpXFx7KFtefV0rKX0vZztcbmNvbnN0IGhlbG1QcDFSZTogUmVnRXhwID0gL1xcWyhbXlxcW1xcXV0rKV0vZztcblxuXG4vKiogU3BsaXRzIEhlbG0gc3RyaW5nIHRvIG1vbm9tZXJzLCBidXQgZG9lcyBub3QgcmVwbGFjZSBtb25vbWVyIG5hbWVzIHRvIG90aGVyIG5vdGF0aW9uIChlLmcuIGZvciBSTkEpLlxuICogT25seSBmb3IgbGluZWFyIHBvbHltZXJzLCBkb2VzIG5vdCBzcGxpdCBSTkEgZm9yIHJpYm9zZSBhbmQgcGhvc3BoYXRlIG1vbm9tZXJzLlxuICogQHBhcmFtIHtzdHJpbmd9IHNlcSBTb3VyY2Ugc3RyaW5nIG9mIEhFTE0gbm90YXRpb25cbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXR0ZXJBc0hlbG0oc2VxOiBhbnkpOiBzdHJpbmdbXSB7XG4gIGhlbG1SZS5sYXN0SW5kZXggPSAwO1xuICBjb25zdCBlYTogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IGhlbG1SZS5leGVjKHNlcS50b1N0cmluZygpKTtcbiAgY29uc3QgaW5TZXE6IHN0cmluZyB8IG51bGwgPSBlYSA/IGVhWzJdIDogbnVsbDtcblxuICBjb25zdCBtbVBvc3RQcm9jZXNzID0gKG1tOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIGhlbG1QcDFSZS5sYXN0SW5kZXggPSAwO1xuICAgIGNvbnN0IHBwMU0gPSBoZWxtUHAxUmUuZXhlYyhtbSk7XG4gICAgaWYgKHBwMU0gJiYgcHAxTS5sZW5ndGggPj0gMilcbiAgICAgIHJldHVybiBwcDFNWzFdO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBtbTtcbiAgfTtcblxuICBjb25zdCBtbUxpc3Q6IHN0cmluZ1tdID0gaW5TZXEgPyBpblNlcS5zcGxpdCgnLicpIDogW107XG4gIHJldHVybiBtbUxpc3QubWFwKG1tUG9zdFByb2Nlc3MpO1xufVxuXG4vKiogR2V0IHNwbGl0dGVyIG1ldGhvZCB0byBzcGxpdCBzZXF1ZW5jZXMgdG8gbW9ub21lcnNcbiAqIEBwYXJhbSB7c3RyaW5nfSB1bml0c1xuICogQHBhcmFtIHtzdHJpbmd9IHNlcGFyYXRvclxuICogQHBhcmFtIGxpbWl0XG4gKiBAcmV0dXJuIHtTcGxpdHRlckZ1bmN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcGxpdHRlcih1bml0czogc3RyaW5nLCBzZXBhcmF0b3I6IHN0cmluZywgbGltaXQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IFNwbGl0dGVyRnVuYyB7XG4gIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoTk9UQVRJT04uRkFTVEEpKVxuICAgIHJldHVybiBzcGxpdHRlckFzRmFzdGE7XG4gIGVsc2UgaWYgKHVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChOT1RBVElPTi5TRVBBUkFUT1IpKVxuICAgIHJldHVybiBnZXRTcGxpdHRlcldpdGhTZXBhcmF0b3Ioc2VwYXJhdG9yLCBsaW1pdCk7XG4gIGVsc2UgaWYgKHVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChOT1RBVElPTi5IRUxNKSlcbiAgICByZXR1cm4gc3BsaXR0ZXJBc0hlbG07XG4gIGVsc2VcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdW5pdHMgJHt1bml0c30gLmApO1xuXG4gIC8vIFRPRE86IFNwbGl0dGVyIGZvciBIRUxNXG59XG5cbi8qKiBHZW5lcmF0ZSBzcGxpdHRlciBmdW5jdGlvbiBmb3Igc2VxdWVuY2UgY29sdW1uXG4gKiBAcGFyYW0ge0RHLkNvbHVtbn0gY29sXG4gKiBAcmV0dXJuIHtTcGxpdHRlckZ1bmN9IFNwbGl0dGVyIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcGxpdHRlckZvckNvbHVtbihjb2w6IERHLkNvbHVtbik6IFNwbGl0dGVyRnVuYyB7XG4gIGlmIChjb2wuc2VtVHlwZSAhPT0gREcuU0VNVFlQRS5NQUNST01PTEVDVUxFKVxuICAgIHRocm93IG5ldyBFcnJvcihgR2V0IHNwbGl0dGVyIGZvciBzZW1UeXBlIFwiJHtERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEV9XCIgb25seS5gKTtcblxuICBjb25zdCB1bml0cyA9IGNvbC5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gIGNvbnN0IHNlcGFyYXRvciA9IGNvbC5nZXRUYWcoVW5pdHNIYW5kbGVyLlRBR1Muc2VwYXJhdG9yKTtcbiAgcmV0dXJuIGdldFNwbGl0dGVyKHVuaXRzLCBzZXBhcmF0b3IpO1xufVxuXG5jb25zdCBsb25nTW9ub21lclBhcnRSZTogUmVnRXhwID0gLyhcXHcrKS9nO1xuXG4vKiogQ29udmVydCBsb25nIG1vbm9tZXIgbmFtZXMgdG8gc2hvcnQgb25lcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vbm9tZXJUb1Nob3J0KGFtaW5vOiBzdHJpbmcsIG1heExlbmd0aE9mTW9ub21lcjogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3Qgc2hvcnRBbWlub01hdGNoOiBSZWdFeHBNYXRjaEFycmF5IHwgbnVsbCA9IGFtaW5vLm1hdGNoKGxvbmdNb25vbWVyUGFydFJlKTtcbiAgY29uc3QgbmVlZEFkZERvdHM6IGJvb2xlYW4gPSBhbWluby5sZW5ndGggPiBtYXhMZW5ndGhPZk1vbm9tZXIgfHwgKHNob3J0QW1pbm9NYXRjaD8ubGVuZ3RoID8/IDApID4gMTtcbiAgY29uc3Qgc2hvcnRBbWlubyA9IHNob3J0QW1pbm9NYXRjaD8uWzBdID8/ICcgJztcbiAgcmV0dXJuICFuZWVkQWRkRG90cyA/IHNob3J0QW1pbm8gOiBzaG9ydEFtaW5vLnN1YnN0cmluZygwLCBtYXhMZW5ndGhPZk1vbm9tZXIpICsgJ+KApic7XG59XG5cbi8qKiBDYWxjdWxhdGUgc2ltaWxhcml0eSBpbiBjdXJyZW50IHNlcXVlbmNlIGFuZCBhbHBoYWJldC5cbiAqIEBwYXJhbSB7TW9ub21lckZyZXFzfSBmcmVxXG4gKiBAcGFyYW0ge1NldDxzdHJpbmc+fSBhbHBoYWJldFxuICogQHBhcmFtIHtzdHJpbmd9IGdhcFN5bWJvbFxuICogQHJldHVybiB7bnVtYmVyfSBDb3NpbmUgc2ltaWxhcml0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxwaGFiZXRTaW1pbGFyaXR5KGZyZXE6IE1vbm9tZXJGcmVxcywgYWxwaGFiZXQ6IFNldDxzdHJpbmc+LCBnYXBTeW1ib2w6IHN0cmluZyA9ICctJyk6IG51bWJlciB7XG4gIGNvbnN0IGtleXMgPSBuZXcgU2V0PHN0cmluZz4oWy4uLm5ldyBTZXQoT2JqZWN0LmtleXMoZnJlcSkpLCAuLi5hbHBoYWJldF0pO1xuICBrZXlzLmRlbGV0ZShnYXBTeW1ib2wpO1xuXG4gIGNvbnN0IGZyZXFBOiBudW1iZXJbXSA9IFtdO1xuICBjb25zdCBhbHBoYWJldEE6IG51bWJlcltdID0gW107XG4gIGZvciAoY29uc3QgbSBvZiBrZXlzKSB7XG4gICAgZnJlcUEucHVzaChtIGluIGZyZXEgPyBmcmVxW21dIDogMCk7XG4gICAgYWxwaGFiZXRBLnB1c2goYWxwaGFiZXQuaGFzKG0pID8gMSA6IDApO1xuICB9XG4gIC8qIFRoZXJlIHdlcmUgYSBmZXcgaWRlYXM6IGNoaS1zcXVhcmVkLCBwZWFyc29uIGNvcnJlbGF0aW9uICh2YXJpYW5jZT8pLCBzY2FsYXIgcHJvZHVjdCAqL1xuICBjb25zdCBmcmVxVjogVmVjdG9yID0gbmV3IFZlY3RvcihmcmVxQSk7XG4gIGNvbnN0IGFscGhhYmV0VjogVmVjdG9yID0gbmV3IFZlY3RvcihhbHBoYWJldEEpO1xuICByZXR1cm4gdmVjdG9yRG90UHJvZHVjdChmcmVxViwgYWxwaGFiZXRWKSAvICh2ZWN0b3JMZW5ndGgoZnJlcVYpICogdmVjdG9yTGVuZ3RoKGFscGhhYmV0VikpO1xufVxuXG4vKiogU2VsZWN0cyBhIHN1aXRhYmxlIHBhbGV0dGUgYmFzZWQgb24gY29sdW1uIGRhdGFcbiAqIEBwYXJhbSB7REcuQ29sdW1ufSBzZXFDb2wgQ29sdW1uIHRvIGxvb2sgZm9yIGEgcGFsZXR0ZVxuICogQHBhcmFtIHtudW1iZXJ9ICBtaW5MZW5ndGggbWluaW11bSBsZW5ndGggb2Ygc2VxdWVuY2UgdG8gZGV0ZWN0IHBhbGV0dGUgKGVtcHR5IHN0cmluZ3MgYXJlIGFsbG93ZWQpXG4gKiBAcmV0dXJuIHtTZXFQYWxldHRlfSBQYWxldHRlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFscGhhYmV0IG9mIHRoZSBzZXF1ZW5jZXMgaW4gdGhlIGNvbHVtblxuICovXG5leHBvcnQgZnVuY3Rpb24gcGlja1VwUGFsZXR0ZShzZXFDb2w6IERHLkNvbHVtbiwgbWluTGVuZ3RoOiBudW1iZXIgPSA1KTogU2VxUGFsZXR0ZSB7XG4gIGxldCByZXM6IFNlcVBhbGV0dGUgfCBudWxsO1xuICBzd2l0Y2ggKHNlcUNvbC5zZW1UeXBlKSB7XG4gIGNhc2UgQW1pbm9hY2lkcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQ6XG4gICAgcmVzID0gQW1pbm9hY2lkc1BhbGV0dGVzLkdyb2tHcm91cHM7XG4gICAgYnJlYWs7XG4gIGNhc2UgTnVjbGVvdGlkZXMuU2VtVHlwZU11bHRpcGxlQWxpZ25tZW50OlxuICAgIHJlcyA9IE51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtO1xuICAgIGJyZWFrO1xuICB9XG4gIGNvbnN0IHN0YXRzOiBTZXFDb2xTdGF0cyA9IGdldFN0YXRzKHNlcUNvbCwgbWluTGVuZ3RoLCBzcGxpdHRlckFzRmFzdGEpO1xuXG4gIGNvbnN0IGFscGhhYmV0Q2FuZGlkYXRlczogW1NldDxzdHJpbmc+LCBTZXFQYWxldHRlXVtdID0gW1xuICAgIFtuZXcgU2V0KE9iamVjdC5rZXlzKE51Y2xlb3RpZGVzLk5hbWVzKSksIE51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtXSxcbiAgICBbbmV3IFNldChPYmplY3Qua2V5cyhBbWlub2FjaWRzLk5hbWVzKSksIEFtaW5vYWNpZHNQYWxldHRlcy5Hcm9rR3JvdXBzXSxcbiAgXTtcbiAgLy8gQ2FsY3VsYXRlIGxpa2VsaWhvb2RzIGZvciBhbHBoYWJldF9jYW5kaWRhdGVzXG4gIGNvbnN0IGFscGhhYmV0Q2FuZGlkYXRlc1NpbTogbnVtYmVyW10gPSBhbHBoYWJldENhbmRpZGF0ZXNcbiAgICAubWFwKChjKSA9PiBnZXRBbHBoYWJldFNpbWlsYXJpdHkoc3RhdHMuZnJlcSwgY1swXSkpO1xuICBjb25zdCBtYXhDb3MgPSBNYXRoLm1heCguLi5hbHBoYWJldENhbmRpZGF0ZXNTaW0pO1xuICBpZiAobWF4Q29zID4gMC41NSlcbiAgICByZXMgPSBhbHBoYWJldENhbmRpZGF0ZXNbYWxwaGFiZXRDYW5kaWRhdGVzU2ltLmluZGV4T2YobWF4Q29zKV1bMV07XG4gIGVsc2VcbiAgICByZXMgPSBVbmtub3duU2VxUGFsZXR0ZXMuQ29sb3I7XG5cbiAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBpY2tVcFNlcUNvbChkZjogREcuRGF0YUZyYW1lKTogREcuQ29sdW1uIHwgbnVsbCB7XG4gIGNvbnN0IHNlbVR5cGVDb2xMaXN0ID0gZGYuY29sdW1ucy5ieVNlbVR5cGVBbGwoREcuU0VNVFlQRS5NQUNST01PTEVDVUxFKTtcbiAgbGV0IHJlc0NvbDogREcuQ29sdW1uIHwgbnVsbCA9IHNlbVR5cGVDb2xMaXN0LmZpbmQoKGNvbCkgPT4ge1xuICAgIGNvbnN0IHVuaXRzID0gY29sLmdldFRhZyhERy5UQUdTLlVOSVRTKTtcbiAgICByZXR1cm4gdW5pdHMgPyB1bml0cy5pbmRleE9mKCdNU0EnKSAhPT0gLTEgOiBmYWxzZTtcbiAgfSkgPz8gbnVsbDtcbiAgaWYgKCFyZXNDb2wgJiYgc2VtVHlwZUNvbExpc3QubGVuZ3RoID4gMClcbiAgICByZXNDb2wgPSBzZW1UeXBlQ29sTGlzdFswXTtcbiAgcmV0dXJuIHJlc0NvbDtcbn1cbiJdfQ==
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjcm9tb2xlY3VsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1hY3JvbW9sZWN1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDdkUsT0FBTyxFQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBWS9GLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUM7QUFzQmxDLENBQUM7QUFNRixNQUFNLFVBQVUsUUFBUSxDQUFDLE1BQWlCLEVBQUUsU0FBaUIsRUFBRSxRQUFzQjtJQUNuRixNQUFNLElBQUksR0FBNEIsRUFBRSxDQUFDO0lBQ3pDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztJQUN0QixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFFdkIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFO1FBQ25DLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUzQixJQUFJLFdBQVcsSUFBSSxJQUFJO1lBQ3JCLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXO1lBQ2xDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFFckIsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRTtZQUMzQixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDcEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztvQkFDZCxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLElBQUks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Q3JCLEtBQUssSUFBSTtZQUNQLE9BQU8sR0FBRyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztRQUMzQyxLQUFLLElBQUksQ0FBQztRQUNWLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxLQUFLO1lBQ1IsT0FBTyxHQUFHLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDO1FBQzVDLFFBQVE7UUFDVjtZQUNFLE9BQU8sR0FBRyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztLQUNyQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLEVBQWdCOztJQUMzQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pFLElBQUksTUFBTSxHQUFxQixNQUFBLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUN6RCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNyRCxDQUFDLENBQUMsbUNBQUksSUFBSSxDQUFDO0lBQ1gsSUFBSSxDQUFDLE1BQU0sSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDdEMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcblxuaW1wb3J0IHtWZWN0b3J9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7dmVjdG9yTGVuZ3RoLCB2ZWN0b3JEb3RQcm9kdWN0fSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5cbi8qKiBTdGF0cyBvZiBzZXF1ZW5jZXMgd2l0aCBzcGVjaWZpZWQgc3BsaXR0ZXIgZnVuYywgcmV0dXJucyB7IGZyZXEsIHNhbWVMZW5ndGggfS5cbiAqIEBwYXJhbSB7REcuQ29sdW1ufSBzZXFDb2xcbiAqIEBwYXJhbSB7bnVtYmVyfSBtaW5MZW5ndGhcbiAqIEBwYXJhbSB7U3BsaXR0ZXJGdW5jfSBzcGxpdHRlclxuICogQHJldHVybiB7IFNlcUNvbFN0YXRzIH0sIHNhbWVMZW5ndGg6IGJvb2xlYW4gfSBzdGF0cyBvZiBjb2x1bW4gc2VxdWVuY2VzXG4gKi9cbmltcG9ydCB7U2VxUGFsZXR0ZX0gZnJvbSAnLi4vc2VxLXBhbGV0dGVzJztcbmltcG9ydCB7QW1pbm9hY2lkcywgQW1pbm9hY2lkc1BhbGV0dGVzfSBmcm9tICcuLi9hbWlub2FjaWRzJztcbmltcG9ydCB7TnVjbGVvdGlkZXMsIE51Y2xlb3RpZGVzUGFsZXR0ZXN9IGZyb20gJy4uL251Y2xlb3RpZGVzJztcbmltcG9ydCB7VW5rbm93blNlcVBhbGV0dGVzfSBmcm9tICcuLi91bmtub3duJztcbmltcG9ydCB3dSBmcm9tICd3dSc7XG5pbXBvcnQge1VuaXRzSGFuZGxlcn0gZnJvbSAnLi4vdXRpbHMvdW5pdHMtaGFuZGxlcic7XG5pbXBvcnQgKiBhcyBiaW8gZnJvbSAnLi4vLi4vaW5kZXgnO1xuXG4vKiogZW51bSB0eXBlIHRvIHNpbXBsaWZ5IHNldHRpbmcgXCJ1c2VyLWZyaWVuZGx5XCIgbm90YXRpb24gaWYgbmVjZXNzYXJ5ICovXG5leHBvcnQgY29uc3QgZW51bSBOT1RBVElPTiB7XG4gIEZBU1RBID0gJ2Zhc3RhJyxcbiAgU0VQQVJBVE9SID0gJ3NlcGFyYXRvcicsXG4gIEhFTE0gPSAnaGVsbScsXG59XG5cbmV4cG9ydCBjb25zdCBlbnVtIEFMUEhBQkVUIHtcbiAgRE5BID0gJ0ROQScsXG4gIFJOQSA9ICdSTkEnLFxuICBQVCA9ICdQVCcsXG4gIFVOID0gJ1VOJyxcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gVEFHUyB7XG4gIGFsaWduZWQgPSAnYWxpZ25lZCcsXG4gIGFscGhhYmV0ID0gJ2FscGhhYmV0JyxcbiAgYWxwaGFiZXRTaXplID0gJy5hbHBoYWJldFNpemUnLFxuICBhbHBoYWJldElzTXVsdGljaGFyID0gJy5hbHBoYWJldElzTXVsdGljaGFyJyxcbiAgc2VwYXJhdG9yID0gJ3NlcGFyYXRvcicsXG59O1xuXG5leHBvcnQgdHlwZSBTZXFDb2xTdGF0cyA9IHsgZnJlcTogTW9ub21lckZyZXFzLCBzYW1lTGVuZ3RoOiBib29sZWFuIH1cbmV4cG9ydCB0eXBlIFNwbGl0dGVyRnVuYyA9IChzZXE6IHN0cmluZykgPT4gc3RyaW5nW107XG5leHBvcnQgdHlwZSBNb25vbWVyRnJlcXMgPSB7IFttOiBzdHJpbmddOiBudW1iZXIgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXRzKHNlcUNvbDogREcuQ29sdW1uLCBtaW5MZW5ndGg6IG51bWJlciwgc3BsaXR0ZXI6IFNwbGl0dGVyRnVuYyk6IFNlcUNvbFN0YXRzIHtcbiAgY29uc3QgZnJlcTogeyBbbTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgbGV0IHNhbWVMZW5ndGggPSB0cnVlO1xuICBsZXQgZmlyc3RMZW5ndGggPSBudWxsO1xuXG4gIGZvciAoY29uc3Qgc2VxIG9mIHNlcUNvbC5jYXRlZ29yaWVzKSB7XG4gICAgY29uc3QgbVNlcSA9IHNwbGl0dGVyKHNlcSk7XG5cbiAgICBpZiAoZmlyc3RMZW5ndGggPT0gbnVsbClcbiAgICAgIGZpcnN0TGVuZ3RoID0gbVNlcS5sZW5ndGg7XG4gICAgZWxzZSBpZiAobVNlcS5sZW5ndGggIT09IGZpcnN0TGVuZ3RoKVxuICAgICAgc2FtZUxlbmd0aCA9IGZhbHNlO1xuXG4gICAgaWYgKG1TZXEubGVuZ3RoID4gbWluTGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IG0gb2YgbVNlcSkge1xuICAgICAgICBpZiAoIShtIGluIGZyZXEpKVxuICAgICAgICAgIGZyZXFbbV0gPSAwO1xuICAgICAgICBmcmVxW21dICs9IDE7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB7ZnJlcTogZnJlcSwgc2FtZUxlbmd0aDogc2FtZUxlbmd0aH07XG59XG5cbmV4cG9ydCBjb25zdCBtb25vbWVyUmU6IFJlZ0V4cCA9IC9cXFsoXFx3KylcXF18KFxcdyl8KC0pL2c7XG5cbi8qKiBTcGxpdCBzZXF1ZW5jZSBmb3Igc2luZ2xlIGNoYXJhY3RlciBtb25vbWVycywgc3F1YXJlIGJyYWNrZXRzIG11bHRpY2hhciBtb25vbWVyIG5hbWVzIG9yIGdhcCBzeW1ib2wuXG4gKiBAcGFyYW0ge2FueX0gc2VxIG9iamVjdCB3aXRoIHNlcXVlbmNlXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX0gYXJyYXkgb2YgbW9ub21lcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0dGVyQXNGYXN0YShzZXE6IGFueSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIHd1PFJlZ0V4cE1hdGNoQXJyYXk+KHNlcS50b1N0cmluZygpLm1hdGNoQWxsKG1vbm9tZXJSZSkpXG4gICAgLm1hcCgobWE6IFJlZ0V4cE1hdGNoQXJyYXkpID0+IHtcbiAgICAgIGxldCBtUmVzOiBzdHJpbmc7XG4gICAgICBjb25zdCBtOiBzdHJpbmcgPSBtYVswXTtcbiAgICAgIGlmIChtLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgbVJlcyA9IG1hWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbVJlcyA9IG07XG4gICAgICB9XG4gICAgICByZXR1cm4gbVJlcztcbiAgICB9KS50b0FycmF5KCk7XG59XG5cbi8qKiBHZXRzIG1ldGhvZCB0byBzcGxpdCBzZXF1ZW5jZSBieSBzZXBhcmF0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3JcbiAqIEBwYXJhbSBsaW1pdFxuICogQHJldHVybiB7U3BsaXR0ZXJGdW5jfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvcjogc3RyaW5nLCBsaW1pdDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKTogU3BsaXR0ZXJGdW5jIHtcbiAgcmV0dXJuIChzZXE6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBzZXEuc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCk7XG4gIH07XG59XG5cbmNvbnN0IGhlbG1SZTogUmVnRXhwID0gLyhQRVBUSURFMXxETkExfFJOQTEpXFx7KFtefV0rKX0vZztcbmNvbnN0IGhlbG1QcDFSZTogUmVnRXhwID0gL1xcWyhbXlxcW1xcXV0rKV0vZztcblxuXG4vKiogU3BsaXRzIEhlbG0gc3RyaW5nIHRvIG1vbm9tZXJzLCBidXQgZG9lcyBub3QgcmVwbGFjZSBtb25vbWVyIG5hbWVzIHRvIG90aGVyIG5vdGF0aW9uIChlLmcuIGZvciBSTkEpLlxuICogT25seSBmb3IgbGluZWFyIHBvbHltZXJzLCBkb2VzIG5vdCBzcGxpdCBSTkEgZm9yIHJpYm9zZSBhbmQgcGhvc3BoYXRlIG1vbm9tZXJzLlxuICogQHBhcmFtIHtzdHJpbmd9IHNlcSBTb3VyY2Ugc3RyaW5nIG9mIEhFTE0gbm90YXRpb25cbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXR0ZXJBc0hlbG0oc2VxOiBhbnkpOiBzdHJpbmdbXSB7XG4gIGhlbG1SZS5sYXN0SW5kZXggPSAwO1xuICBjb25zdCBlYTogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IGhlbG1SZS5leGVjKHNlcS50b1N0cmluZygpKTtcbiAgY29uc3QgaW5TZXE6IHN0cmluZyB8IG51bGwgPSBlYSA/IGVhWzJdIDogbnVsbDtcblxuICBjb25zdCBtbVBvc3RQcm9jZXNzID0gKG1tOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIGhlbG1QcDFSZS5sYXN0SW5kZXggPSAwO1xuICAgIGNvbnN0IHBwMU0gPSBoZWxtUHAxUmUuZXhlYyhtbSk7XG4gICAgaWYgKHBwMU0gJiYgcHAxTS5sZW5ndGggPj0gMilcbiAgICAgIHJldHVybiBwcDFNWzFdO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBtbTtcbiAgfTtcblxuICBjb25zdCBtbUxpc3Q6IHN0cmluZ1tdID0gaW5TZXEgPyBpblNlcS5zcGxpdCgnLicpIDogW107XG4gIHJldHVybiBtbUxpc3QubWFwKG1tUG9zdFByb2Nlc3MpO1xufVxuXG4vKiogR2V0IHNwbGl0dGVyIG1ldGhvZCB0byBzcGxpdCBzZXF1ZW5jZXMgdG8gbW9ub21lcnNcbiAqIEBwYXJhbSB7c3RyaW5nfSB1bml0c1xuICogQHBhcmFtIHtzdHJpbmd9IHNlcGFyYXRvclxuICogQHBhcmFtIGxpbWl0XG4gKiBAcmV0dXJuIHtTcGxpdHRlckZ1bmN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcGxpdHRlcih1bml0czogc3RyaW5nLCBzZXBhcmF0b3I6IHN0cmluZywgbGltaXQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IFNwbGl0dGVyRnVuYyB7XG4gIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoTk9UQVRJT04uRkFTVEEpKVxuICAgIHJldHVybiBzcGxpdHRlckFzRmFzdGE7XG4gIGVsc2UgaWYgKHVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChOT1RBVElPTi5TRVBBUkFUT1IpKVxuICAgIHJldHVybiBnZXRTcGxpdHRlcldpdGhTZXBhcmF0b3Ioc2VwYXJhdG9yLCBsaW1pdCk7XG4gIGVsc2UgaWYgKHVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChOT1RBVElPTi5IRUxNKSlcbiAgICByZXR1cm4gc3BsaXR0ZXJBc0hlbG07XG4gIGVsc2VcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdW5pdHMgJHt1bml0c30gLmApO1xuXG4gIC8vIFRPRE86IFNwbGl0dGVyIGZvciBIRUxNXG59XG5cbi8qKiBHZW5lcmF0ZSBzcGxpdHRlciBmdW5jdGlvbiBmb3Igc2VxdWVuY2UgY29sdW1uXG4gKiBAcGFyYW0ge0RHLkNvbHVtbn0gY29sXG4gKiBAcmV0dXJuIHtTcGxpdHRlckZ1bmN9IFNwbGl0dGVyIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcGxpdHRlckZvckNvbHVtbihjb2w6IERHLkNvbHVtbik6IFNwbGl0dGVyRnVuYyB7XG4gIGlmIChjb2wuc2VtVHlwZSAhPT0gREcuU0VNVFlQRS5NQUNST01PTEVDVUxFKVxuICAgIHRocm93IG5ldyBFcnJvcihgR2V0IHNwbGl0dGVyIGZvciBzZW1UeXBlIFwiJHtERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEV9XCIgb25seS5gKTtcblxuICBjb25zdCB1bml0cyA9IGNvbC5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gIGNvbnN0IHNlcGFyYXRvciA9IGNvbC5nZXRUYWcoVEFHUy5zZXBhcmF0b3IpO1xuICByZXR1cm4gZ2V0U3BsaXR0ZXIodW5pdHMsIHNlcGFyYXRvcik7XG59XG5cbmNvbnN0IGxvbmdNb25vbWVyUGFydFJlOiBSZWdFeHAgPSAvKFxcdyspL2c7XG5cbi8qKiBDb252ZXJ0IGxvbmcgbW9ub21lciBuYW1lcyB0byBzaG9ydCBvbmVzICovXG5leHBvcnQgZnVuY3Rpb24gbW9ub21lclRvU2hvcnQoYW1pbm86IHN0cmluZywgbWF4TGVuZ3RoT2ZNb25vbWVyOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBzaG9ydEFtaW5vTWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsID0gYW1pbm8ubWF0Y2gobG9uZ01vbm9tZXJQYXJ0UmUpO1xuICBjb25zdCBuZWVkQWRkRG90czogYm9vbGVhbiA9IGFtaW5vLmxlbmd0aCA+IG1heExlbmd0aE9mTW9ub21lciB8fCAoc2hvcnRBbWlub01hdGNoPy5sZW5ndGggPz8gMCkgPiAxO1xuICBjb25zdCBzaG9ydEFtaW5vID0gc2hvcnRBbWlub01hdGNoPy5bMF0gPz8gJyAnO1xuICByZXR1cm4gIW5lZWRBZGREb3RzID8gc2hvcnRBbWlubyA6IHNob3J0QW1pbm8uc3Vic3RyaW5nKDAsIG1heExlbmd0aE9mTW9ub21lcikgKyAn4oCmJztcbn1cblxuLyoqIENhbGN1bGF0ZSBzaW1pbGFyaXR5IGluIGN1cnJlbnQgc2VxdWVuY2UgYW5kIGFscGhhYmV0LlxuICogQHBhcmFtIHtNb25vbWVyRnJlcXN9IGZyZXFcbiAqIEBwYXJhbSB7U2V0PHN0cmluZz59IGFscGhhYmV0XG4gKiBAcGFyYW0ge3N0cmluZ30gZ2FwU3ltYm9sXG4gKiBAcmV0dXJuIHtudW1iZXJ9IENvc2luZSBzaW1pbGFyaXR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbHBoYWJldFNpbWlsYXJpdHkoZnJlcTogTW9ub21lckZyZXFzLCBhbHBoYWJldDogU2V0PHN0cmluZz4sIGdhcFN5bWJvbDogc3RyaW5nID0gJy0nKTogbnVtYmVyIHtcbiAgY29uc3Qga2V5cyA9IG5ldyBTZXQ8c3RyaW5nPihbLi4ubmV3IFNldChPYmplY3Qua2V5cyhmcmVxKSksIC4uLmFscGhhYmV0XSk7XG4gIGtleXMuZGVsZXRlKGdhcFN5bWJvbCk7XG5cbiAgY29uc3QgZnJlcUE6IG51bWJlcltdID0gW107XG4gIGNvbnN0IGFscGhhYmV0QTogbnVtYmVyW10gPSBbXTtcbiAgZm9yIChjb25zdCBtIG9mIGtleXMpIHtcbiAgICBmcmVxQS5wdXNoKG0gaW4gZnJlcSA/IGZyZXFbbV0gOiAwKTtcbiAgICBhbHBoYWJldEEucHVzaChhbHBoYWJldC5oYXMobSkgPyAxIDogMCk7XG4gIH1cbiAgLyogVGhlcmUgd2VyZSBhIGZldyBpZGVhczogY2hpLXNxdWFyZWQsIHBlYXJzb24gY29ycmVsYXRpb24gKHZhcmlhbmNlPyksIHNjYWxhciBwcm9kdWN0ICovXG4gIGNvbnN0IGZyZXFWOiBWZWN0b3IgPSBuZXcgVmVjdG9yKGZyZXFBKTtcbiAgY29uc3QgYWxwaGFiZXRWOiBWZWN0b3IgPSBuZXcgVmVjdG9yKGFscGhhYmV0QSk7XG4gIHJldHVybiB2ZWN0b3JEb3RQcm9kdWN0KGZyZXFWLCBhbHBoYWJldFYpIC8gKHZlY3Rvckxlbmd0aChmcmVxVikgKiB2ZWN0b3JMZW5ndGgoYWxwaGFiZXRWKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3RBbHBoYWJldChzdGF0czogU2VxQ29sU3RhdHMpOiBzdHJpbmcge1xuICBjb25zdCBhbHBoYWJldENhbmRpZGF0ZXM6IFtzdHJpbmcsIFNldDxzdHJpbmc+XVtdID0gW1xuICAgIFtBTFBIQUJFVC5QVCwgVW5pdHNIYW5kbGVyLlBlcHRpZGVGYXN0YUFscGhhYmV0XSxcbiAgICBbQUxQSEFCRVQuRE5BLCBVbml0c0hhbmRsZXIuRG5hRmFzdGFBbHBoYWJldF0sXG4gICAgW0FMUEhBQkVULlJOQSwgVW5pdHNIYW5kbGVyLlJuYUZhc3RhQWxwaGFiZXRdLFxuICBdO1xuXG4gIC8vIENhbGN1bGF0ZSBsaWtlbGlob29kcyBmb3IgYWxwaGFiZXRfY2FuZGlkYXRlc1xuICBjb25zdCBhbHBoYWJldENhbmRpZGF0ZXNTaW06IG51bWJlcltdID0gYWxwaGFiZXRDYW5kaWRhdGVzLm1hcChcbiAgICAoYykgPT4gZ2V0QWxwaGFiZXRTaW1pbGFyaXR5KHN0YXRzLmZyZXEsIGNbMV0pKTtcbiAgY29uc3QgbWF4Q29zID0gTWF0aC5tYXgoLi4uYWxwaGFiZXRDYW5kaWRhdGVzU2ltKTtcbiAgY29uc3QgYWxwaGFiZXQgPSBtYXhDb3MgPiAwLjY1ID8gYWxwaGFiZXRDYW5kaWRhdGVzW2FscGhhYmV0Q2FuZGlkYXRlc1NpbS5pbmRleE9mKG1heENvcyldWzBdIDogJ1VOJztcbiAgcmV0dXJuIGFscGhhYmV0O1xufVxuXG4vKiogU2VsZWN0cyBhIHN1aXRhYmxlIHBhbGV0dGUgYmFzZWQgb24gY29sdW1uIGRhdGFcbiAqIEBwYXJhbSB7REcuQ29sdW1ufSBzZXFDb2wgQ29sdW1uIHRvIGxvb2sgZm9yIGEgcGFsZXR0ZVxuICogQHBhcmFtIHtudW1iZXJ9ICBtaW5MZW5ndGggbWluaW11bSBsZW5ndGggb2Ygc2VxdWVuY2UgdG8gZGV0ZWN0IHBhbGV0dGUgKGVtcHR5IHN0cmluZ3MgYXJlIGFsbG93ZWQpXG4gKiBAcmV0dXJuIHtTZXFQYWxldHRlfSBQYWxldHRlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFscGhhYmV0IG9mIHRoZSBzZXF1ZW5jZXMgaW4gdGhlIGNvbHVtblxuICovXG5leHBvcnQgZnVuY3Rpb24gcGlja1VwUGFsZXR0ZShzZXFDb2w6IERHLkNvbHVtbiwgbWluTGVuZ3RoOiBudW1iZXIgPSA1KTogU2VxUGFsZXR0ZSB7XG4gIGxldCBhbHBoYWJldDogc3RyaW5nO1xuICBpZiAoc2VxQ29sLnNlbVR5cGUgPT0gREcuU0VNVFlQRS5NQUNST01PTEVDVUxFKSB7XG4gICAgY29uc3QgdWg6IFVuaXRzSGFuZGxlciA9IG5ldyBVbml0c0hhbmRsZXIoc2VxQ29sKTtcbiAgICBhbHBoYWJldCA9IHVoLmFscGhhYmV0O1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHN0YXRzOiBTZXFDb2xTdGF0cyA9IGdldFN0YXRzKHNlcUNvbCwgbWluTGVuZ3RoLCBzcGxpdHRlckFzRmFzdGEpO1xuICAgIGFscGhhYmV0ID0gZGV0ZWN0QWxwaGFiZXQoc3RhdHMpO1xuICB9XG5cbiAgY29uc3QgcmVzID0gZ2V0UGFsZXR0ZUJ5VHlwZShhbHBoYWJldCk7XG4gIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWxldHRlQnlUeXBlKHBhbGV0dGVUeXBlOiBzdHJpbmcpOiBiaW8uU2VxUGFsZXR0ZSB7XG4gIHN3aXRjaCAocGFsZXR0ZVR5cGUpIHtcbiAgY2FzZSAnUFQnOlxuICAgIHJldHVybiBiaW8uQW1pbm9hY2lkc1BhbGV0dGVzLkdyb2tHcm91cHM7XG4gIGNhc2UgJ05UJzpcbiAgY2FzZSAnRE5BJzpcbiAgY2FzZSAnUk5BJzpcbiAgICByZXR1cm4gYmlvLk51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtO1xuICAgIC8vIG90aGVyXG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIGJpby5Vbmtub3duU2VxUGFsZXR0ZXMuQ29sb3I7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBpY2tVcFNlcUNvbChkZjogREcuRGF0YUZyYW1lKTogREcuQ29sdW1uIHwgbnVsbCB7XG4gIGNvbnN0IHNlbVR5cGVDb2xMaXN0ID0gZGYuY29sdW1ucy5ieVNlbVR5cGVBbGwoREcuU0VNVFlQRS5NQUNST01PTEVDVUxFKTtcbiAgbGV0IHJlc0NvbDogREcuQ29sdW1uIHwgbnVsbCA9IHNlbVR5cGVDb2xMaXN0LmZpbmQoKGNvbCkgPT4ge1xuICAgIGNvbnN0IHVuaXRzID0gY29sLmdldFRhZyhERy5UQUdTLlVOSVRTKTtcbiAgICByZXR1cm4gdW5pdHMgPyB1bml0cy5pbmRleE9mKCdNU0EnKSAhPT0gLTEgOiBmYWxzZTtcbiAgfSkgPz8gbnVsbDtcbiAgaWYgKCFyZXNDb2wgJiYgc2VtVHlwZUNvbExpc3QubGVuZ3RoID4gMClcbiAgICByZXNDb2wgPSBzZW1UeXBlQ29sTGlzdFswXTtcbiAgcmV0dXJuIHJlc0NvbDtcbn1cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as DG from 'datagrok-api/dg';
|
|
2
|
-
import { UnitsHandler
|
|
3
|
-
import { SplitterFunc } from './macromolecule';
|
|
2
|
+
import { UnitsHandler } from './units-handler';
|
|
3
|
+
import { NOTATION, SplitterFunc } from './macromolecule';
|
|
4
4
|
/** Class for handling conversion of notation systems in Macromolecule columns */
|
|
5
5
|
export declare class NotationConverter extends UnitsHandler {
|
|
6
6
|
private _splitter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notation-converter.d.ts","sourceRoot":"","sources":["notation-converter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"notation-converter.d.ts","sourceRoot":"","sources":["notation-converter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAuB,QAAQ,EAAE,YAAY,EAAO,MAAM,iBAAiB,CAAC;AAEnF,iFAAiF;AACjF,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,OAAO,CAAC,SAAS,CAA6B;IAC9C,SAAS,KAAK,QAAQ,IAAI,YAAY,CAIrC;IAEM,OAAO,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO;IAE1C,WAAW,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO;IAE9C,MAAM,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO;IAEhD;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAmB/B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,mBAAmB;IAkB3B;;;;;;;OAOG;IACI,mBAAmB,CACxB,aAAa,EAAE,MAAM,EACrB,eAAe,GAAE,MAAM,GAAG,IAAW,GACpC,MAAM;IAOT;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAerB;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IA4B/B;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW;IAiDnB,OAAO,CAAC,sBAAsB;IAK9B;;;;;OAKG;IACI,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,GAAE,MAAM,GAAG,IAAW,GAAG,EAAE,CAAC,MAAM;gBAmBjE,GAAG,EAAE,EAAE,CAAC,MAAM;CAGlC"}
|
|
@@ -36,7 +36,7 @@ export class NotationConverter extends UnitsHandler {
|
|
|
36
36
|
}
|
|
37
37
|
return fastaMonomersArray.join(separator);
|
|
38
38
|
});
|
|
39
|
-
newColumn.setTag(
|
|
39
|
+
newColumn.setTag("separator" /* TAGS.separator */, separator);
|
|
40
40
|
return newColumn;
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
@@ -214,4 +214,4 @@ export class NotationConverter extends UnitsHandler {
|
|
|
214
214
|
return this.convertHelm(tgtNotation, tgtSeparator);
|
|
215
215
|
}
|
|
216
216
|
}
|
|
217
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90YXRpb24tY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibm90YXRpb24tY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBQyxZQUFZLEVBQVcsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsb0JBQW9CLEVBQWUsTUFBTSxpQkFBaUIsQ0FBQztBQUVuRSxpRkFBaUY7QUFDakYsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFlBQVk7SUFrUGpELFlBQW1CLEdBQWM7UUFDL0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBbFBMLGNBQVMsR0FBd0IsSUFBSSxDQUFDO0lBbVA5QyxDQUFDO0lBbFBELElBQWMsUUFBUTtRQUNwQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSTtZQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUFBLENBQUM7SUFFSyxPQUFPLENBQUMsY0FBd0IsSUFBYSxPQUFPLGNBQWMsaUNBQW1CLENBQUMsQ0FBQyxDQUFDO0lBRXhGLFdBQVcsQ0FBQyxjQUF3QixJQUFhLE9BQU8sY0FBYyx5Q0FBdUIsQ0FBQyxDQUFDLENBQUM7SUFFaEcsTUFBTSxDQUFDLGNBQXdCLElBQWEsT0FBTyxjQUFjLCtCQUFrQixDQUFDLENBQUMsQ0FBQztJQUU3Rjs7Ozs7O09BTUc7SUFDSyx1QkFBdUIsQ0FBQyxTQUFpQixFQUFFLGlCQUFnQyxJQUFJO1FBQ3JGLElBQUksY0FBYyxLQUFLLElBQUk7WUFDekIsY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUV6QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxzQ0FBb0IsQ0FBQztRQUN4RCxzREFBc0Q7UUFDdEQsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQVcs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WUFBWSxDQUFDLENBQUM7YUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUN6RSxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUN6QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUN0RCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO2FBQ25DLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsbUJBQW1CO1lBQ3RFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNsQyxpREFBaUQ7WUFDcEQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxZQUFhLENBQUMsQ0FBQztJQUN4RCxDQUFDO0NBS0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBEbyBub3QgY2hhbmdlIHRoZXNlIGltcG9ydCBsaW5lcyB0byBtYXRjaCBleHRlcm5hbCBtb2R1bGVzIGluIHdlYnBhY2sgY29uZmlndXJhdGlvbiAqL1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcblxuaW1wb3J0IHtVbml0c0hhbmRsZXIsIE5PVEFUSU9OfSBmcm9tICcuL3VuaXRzLWhhbmRsZXInO1xuaW1wb3J0IHtnZXRTcGxpdHRlckZvckNvbHVtbiwgU3BsaXR0ZXJGdW5jfSBmcm9tICcuL21hY3JvbW9sZWN1bGUnO1xuXG4vKiogQ2xhc3MgZm9yIGhhbmRsaW5nIGNvbnZlcnNpb24gb2Ygbm90YXRpb24gc3lzdGVtcyBpbiBNYWNyb21vbGVjdWxlIGNvbHVtbnMgKi9cbmV4cG9ydCBjbGFzcyBOb3RhdGlvbkNvbnZlcnRlciBleHRlbmRzIFVuaXRzSGFuZGxlciB7XG4gIHByaXZhdGUgX3NwbGl0dGVyOiBTcGxpdHRlckZ1bmMgfCBudWxsID0gbnVsbDtcbiAgcHJvdGVjdGVkIGdldCBzcGxpdHRlcigpOiBTcGxpdHRlckZ1bmMge1xuICAgIGlmICh0aGlzLl9zcGxpdHRlciA9PT0gbnVsbClcbiAgICAgIHRoaXMuX3NwbGl0dGVyID0gZ2V0U3BsaXR0ZXJGb3JDb2x1bW4odGhpcy5jb2x1bW4pO1xuICAgIHJldHVybiB0aGlzLl9zcGxpdHRlcjtcbiAgfTtcblxuICBwdWJsaWMgdG9GYXN0YSh0YXJnZXROb3RhdGlvbjogTk9UQVRJT04pOiBib29sZWFuIHsgcmV0dXJuIHRhcmdldE5vdGF0aW9uID09PSBOT1RBVElPTi5GQVNUQTsgfVxuXG4gIHB1YmxpYyB0b1NlcGFyYXRvcih0YXJnZXROb3RhdGlvbjogTk9UQVRJT04pOiBib29sZWFuIHsgcmV0dXJuIHRhcmdldE5vdGF0aW9uID09PSBOT1RBVElPTi5TRVBBUkFUT1I7IH1cblxuICBwdWJsaWMgdG9IZWxtKHRhcmdldE5vdGF0aW9uOiBOT1RBVElPTik6IGJvb2xlYW4geyByZXR1cm4gdGFyZ2V0Tm90YXRpb24gPT09IE5PVEFUSU9OLkhFTE07IH1cblxuICAvKipcbiAgICogQ29udmVydCBhIE1hY3JvbW9sZWN1bGUgY29sdW1uIGZyb20gRkFTVEEgdG8gU0VQQVJBVE9SIG5vdGF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3IgIEEgc3BlY2lmaWMgc2VwYXJhdG9yIHRvIGJlIHVzZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhc3RhR2FwU3ltYm9sICBHYXAgc3ltYm9sIGluIEZBU1RBLCAnLScgYnkgZGVmYXVsdFxuICAgKiBAcmV0dXJuIHtERy5Db2x1bW59ICAgICAgICBBIG5ldyBjb2x1bW4gaW4gU0VQQVJBVE9SIG5vdGF0aW9uXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRGYXN0YVRvU2VwYXJhdG9yKHNlcGFyYXRvcjogc3RyaW5nLCBmYXN0YUdhcFN5bWJvbDogc3RyaW5nIHwgbnVsbCA9IG51bGwpOiBERy5Db2x1bW4ge1xuICAgIGlmIChmYXN0YUdhcFN5bWJvbCA9PT0gbnVsbClcbiAgICAgIGZhc3RhR2FwU3ltYm9sID0gdGhpcy5kZWZhdWx0R2FwU3ltYm9sO1xuXG4gICAgY29uc3QgbmV3Q29sdW1uID0gdGhpcy5nZXROZXdDb2x1bW4oTk9UQVRJT04uU0VQQVJBVE9SKTtcbiAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgbmV3bHkgY3JlYXRlZCBlbXB0eSBjb2x1bW5cbiAgICBuZXdDb2x1bW4uaW5pdCgoaWR4OiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IGZhc3RhUG9seW1lciA9IHRoaXMuY29sdW1uLmdldChpZHgpO1xuICAgICAgY29uc3QgZmFzdGFNb25vbWVyc0FycmF5ID0gdGhpcy5zcGxpdHRlcihmYXN0YVBvbHltZXIpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmYXN0YU1vbm9tZXJzQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGZhc3RhTW9ub21lcnNBcnJheVtpXSA9PT0gZmFzdGFHYXBTeW1ib2wpXG4gICAgICAgICAgZmFzdGFNb25vbWVyc0FycmF5W2ldID0gVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuU0VQQVJBVE9SO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhc3RhTW9ub21lcnNBcnJheS5qb2luKHNlcGFyYXRvcik7XG4gICAgfSk7XG4gICAgbmV3Q29sdW1uLnNldFRhZyhVbml0c0hhbmRsZXIuVEFHUy5zZXBhcmF0b3IsIHNlcGFyYXRvcik7XG4gICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHdyYXBwZXIgc3RyaW5ncyBmb3IgSEVMTSwgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIHRoZVxuICAgKiBtYWNyb21vbGVjdWxlIChwZXB0aWRlLCBETkEsIFJOQSlcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nW119IEFycmF5IG9mIHdyYXBwZXJzXG4gICAqL1xuICBwcml2YXRlIGdldEhlbG1XcmFwcGVycygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgcHJlZml4ID0gKHRoaXMuaXNEbmEoKSkgPyAnRE5BMXsnIDpcbiAgICAgICh0aGlzLmlzUm5hKCkpID8gJ1JOQTF7JyA6XG4gICAgICAgICh0aGlzLmlzUGVwdGlkZSgpKSA/ICdQRVBUSURFMXsnIDpcbiAgICAgICAgICAnVW5rbm93bic7IC8vIHRoaXMgY2FzZSBzaG91bGQgYmUgaGFuZGxlZCBhcyBleGNlcHRpb25hbFxuXG4gICAgaWYgKHByZWZpeCA9PT0gJ1Vua25vd24nKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZWl0aGVyIHBlcHRpZGUsIG5vciBudWNsZW90aWRlJyk7XG5cbiAgICBjb25zdCBwb3N0Zml4ID0gJ30kJCQnO1xuICAgIGNvbnN0IGxlZnRXcmFwcGVyID0gKHRoaXMuaXNEbmEoKSkgPyAnRCgnIDpcbiAgICAgICh0aGlzLmlzUm5hKCkpID8gJ1IoJyA6ICcnOyAvLyBubyB3cmFwcGVyIGZvciBwZXB0aWRlc1xuICAgIGNvbnN0IHJpZ2h0V3JhcHBlciA9ICh0aGlzLmlzRG5hKCkgfHwgdGhpcy5pc1JuYSgpKSA/ICcpUCcgOiAnJzsgLy8gbm8gd3JhcHBlciBmb3IgcGVwdGlkZXNcbiAgICByZXR1cm4gW3ByZWZpeCwgbGVmdFdyYXBwZXIsIHJpZ2h0V3JhcHBlciwgcG9zdGZpeF07XG4gIH1cblxuICAvLyBBIGhlbHBlciBmdW5jdGlvbiBmb3IgY29udmVydGluZyBzdHJpbmdzIHRvIEhFTE1cbiAgcHJpdmF0ZSBjb252ZXJ0VG9IZWxtSGVscGVyKFxuICAgIHNvdXJjZVBvbHltZXI6IHN0cmluZyxcbiAgICBzb3VyY2VHYXBTeW1ib2w6IHN0cmluZyxcbiAgICBwcmVmaXg6IHN0cmluZyxcbiAgICBsZWZ0V3JhcHBlcjogc3RyaW5nLFxuICAgIHJpZ2h0V3JhcHBlcjogc3RyaW5nLFxuICAgIHBvc3RmaXg6IHN0cmluZ1xuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vbm9tZXJBcnJheSA9IHRoaXMuc3BsaXR0ZXIoc291cmNlUG9seW1lcik7XG4gICAgY29uc3QgbW9ub21lckhlbG1BcnJheTogc3RyaW5nW10gPSBtb25vbWVyQXJyYXkubWFwKChtbTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAobW0gPT09IHNvdXJjZUdhcFN5bWJvbClcbiAgICAgICAgcmV0dXJuIFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkhFTE07XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBgJHtsZWZ0V3JhcHBlcn0ke21tfSR7cmlnaHRXcmFwcGVyfWA7XG4gICAgfSk7XG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke21vbm9tZXJIZWxtQXJyYXkuam9pbignLicpfSR7cG9zdGZpeH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBzdHJpbmcgd2l0aCBTRVBBUkFUT1IvRkFTVEEgbm90YXRpb24gdG8gSEVMTVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlUG9seW1lciAgQSBzdHJpbmcgdG8gYmUgY29udmVydGVkXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbH0gc291cmNlR2FwU3ltYm9sICBBbiBvcHRpb25hbCBnYXAgc3ltYm9sLCBzZXQgdG9cbiAgICogZGVmYXVsdCB2YWx1ZXMgKCctJyBmb3IgRkFTVEEgYW5kICcnIGZvciBTRVBBUkFUT1IpIHVubGVzcyBzcGVjaWZpZWRcbiAgICogQHJldHVybiB7c3RyaW5nfSAgVGhlIHRhcmdldCBIRUxNIHN0cmluZ1xuICAgKi9cbiAgcHVibGljIGNvbnZlcnRTdHJpbmdUb0hlbG0oXG4gICAgc291cmNlUG9seW1lcjogc3RyaW5nLFxuICAgIHNvdXJjZUdhcFN5bWJvbDogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAoc291cmNlR2FwU3ltYm9sID09PSBudWxsKVxuICAgICAgc291cmNlR2FwU3ltYm9sID0gdGhpcy5kZWZhdWx0R2FwU3ltYm9sO1xuICAgIGNvbnN0IFtwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXhdID0gdGhpcy5nZXRIZWxtV3JhcHBlcnMoKTtcbiAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9IZWxtSGVscGVyKHNvdXJjZVBvbHltZXIsIHNvdXJjZUdhcFN5bWJvbCwgcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgY29sdW1uIHRvIEhFTE1cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBzb3VyY2VHYXBTeW1ib2xcbiAgICogQHJldHVybiB7REcuQ29sdW1ufVxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0VG9IZWxtKHNvdXJjZUdhcFN5bWJvbDogc3RyaW5nIHwgbnVsbCA9IG51bGwpOiBERy5Db2x1bW4ge1xuICAgIGlmIChzb3VyY2VHYXBTeW1ib2wgPT09IG51bGwpXG4gICAgICBzb3VyY2VHYXBTeW1ib2wgPSB0aGlzLmRlZmF1bHRHYXBTeW1ib2w7XG5cbiAgICBjb25zdCBbcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4XSA9IHRoaXMuZ2V0SGVsbVdyYXBwZXJzKCk7XG5cbiAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihOT1RBVElPTi5IRUxNKTtcbiAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgbmV3Q29sdW1uLmluaXQoKGlkeDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2VQb2x5bWVyID0gdGhpcy5jb2x1bW4uZ2V0KGlkeCk7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9IZWxtSGVscGVyKHNvdXJjZVBvbHltZXIsIHNvdXJjZUdhcFN5bWJvbCEsIHByZWZpeCwgbGVmdFdyYXBwZXIsIHJpZ2h0V3JhcHBlciwgcG9zdGZpeCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IFNFUEFSQVRPUiBjb2x1bW4gdG8gRkFTVEEgbm90YXRpb25cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBmYXN0YUdhcFN5bWJvbCBPcHRpb25hbCBnYXAgc3ltYm9sIGZvciBGQVNUQVxuICAgKiBAcmV0dXJuIHtERy5Db2x1bW59ICBDb252ZXJ0ZWQgY29sdW1uXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRTZXBhcmF0b3JUb0Zhc3RhKGZhc3RhR2FwU3ltYm9sOiBzdHJpbmcgfCBudWxsID0gbnVsbCk6IERHLkNvbHVtbiB7XG4gICAgaWYgKGZhc3RhR2FwU3ltYm9sID09PSBudWxsKVxuICAgICAgZmFzdGFHYXBTeW1ib2wgPSBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5GQVNUQTtcblxuICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRoaXMuZ2V0TmV3Q29sdW1uKE5PVEFUSU9OLkZBU1RBKTtcbiAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgbmV3Q29sdW1uLmluaXQoKGlkeDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBzZXBhcmF0b3JQb2x5bWVyID0gdGhpcy5jb2x1bW4uZ2V0KGlkeCk7XG4gICAgICAvLyBpdGVtcyBjYW4gYmUgbW9ub21lcnMgb3Igc2VwYXJhdG9yc1xuICAgICAgY29uc3Qgc2VwYXJhdG9ySXRlbXNBcnJheSA9IHRoaXMuc3BsaXR0ZXIoc2VwYXJhdG9yUG9seW1lcik7XG4gICAgICBjb25zdCBmYXN0YU1vbm9tZXJzQXJyYXk6IHN0cmluZ1tdID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcGFyYXRvckl0ZW1zQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHNlcGFyYXRvckl0ZW1zQXJyYXlbaV07XG4gICAgICAgIGlmIChpdGVtLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKGZhc3RhR2FwU3ltYm9sISk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gdGhlIGNhc2Ugb2YgYSBtdWx0aS1jaGFyYWN0ZXIgbW9ub21lclxuICAgICAgICAgIGNvbnN0IG1vbm9tZXIgPSAnWycgKyBpdGVtICsgJ10nO1xuICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKG1vbm9tZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFzdGFNb25vbWVyc0FycmF5LmpvaW4oJycpO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXdDb2x1bW47XG4gIH1cblxuICAvKipcbiAgICogIENvbnZlcnQgSEVMTSBjb2x1bW4gdG8gRkFTVEEvU0VQQVJBVE9SXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0Z3ROb3RhdGlvbiAgICBUYXJnZXQgbm90YXRpb246IEZBU1RBIG9yIFNFUEFSQVRPUlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGd0U2VwYXJhdG9yICAgT3B0aW9uYWwgdGFyZ2V0IHNlcGFyYXRvciAoZm9yIEhFTE0gLT5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSB0Z3RHYXBTeW1ib2wgICBPcHRpb25hbCB0YXJnZXQgZ2FwIHN5bWJvbFxuICAgKiBTRVBBUkFUT1IpXG4gICAqIEByZXR1cm4ge0RHLkNvbHVtbn0gQ29udmVydGVkIGNvbHVtblxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0SGVsbShcbiAgICB0Z3ROb3RhdGlvbjogc3RyaW5nLFxuICAgIHRndFNlcGFyYXRvcjogc3RyaW5nID0gJycsXG4gICAgdGd0R2FwU3ltYm9sOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiBERy5Db2x1bW4ge1xuICAgIC8vIFRoaXMgZnVuY3Rpb24gbXVzdCBub3QgY29udGFpbiBjYWxscyBvZiBpc0RuYSgpIGFuZCBpc1JuYSgpLCBmb3JcbiAgICAvLyBzb3VyY2UgaGVsbSBjb2x1bW5zIG1heSBjb250YWluIFJOQSwgRE5BIGFuZCBQVCBhY3Jvc3MgZGlmZmVyZW50IHJvd3NcbiAgICBpZiAodGd0R2FwU3ltYm9sID09PSBudWxsKSB7XG4gICAgICB0Z3RHYXBTeW1ib2wgPSAodGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uIGFzIE5PVEFUSU9OKSkgP1xuICAgICAgICBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5GQVNUQSA6XG4gICAgICAgIFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LlNFUEFSQVRPUjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50b1NlcGFyYXRvcih0Z3ROb3RhdGlvbiBhcyBOT1RBVElPTikgJiYgdGd0U2VwYXJhdG9yID09PSAnJylcbiAgICAgIHRndFNlcGFyYXRvciA9IHRoaXMuc2VwYXJhdG9yO1xuXG4gICAgY29uc3QgaGVsbVdyYXBwZXJzUmUgPSAvKFJcXCh8RFxcKHxcXCl8UCkvZztcbiAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbih0Z3ROb3RhdGlvbiBhcyBOT1RBVElPTik7XG4gICAgLy8gYXNzaWduIHRoZSB2YWx1ZXMgdG8gdGhlIGVtcHR5IGNvbHVtblxuICAgIG5ld0NvbHVtbi5pbml0KChpZHg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgaGVsbVBvbHltZXIgPSB0aGlzLmNvbHVtbi5nZXQoaWR4KTtcblxuICAgICAgLy8gd2UgY2Fubm90IHVzZSBpc0RuYSgpIG9yIGlzUm5hKCkgYmVjYXVzZSBzb3VyY2UgaGVsbSBjb2x1bW5zIGNhblxuICAgICAgLy8gY29udGFpbiBETkEsIFJOQSBhbmQgUFQgaW4gZGlmZmVyZW50IGNlbGxzLCBzbyB0aGUgY29ycmVzcG9uZGluZ1xuICAgICAgLy8gdGFncyBjYW5ub3QgYmUgc2V0IGZvciB0aGUgd2hvbGUgY29sdW1uXG4gICAgICBjb25zdCBpc051Y2xlb3RpZGUgPSBoZWxtUG9seW1lci5zdGFydHNXaXRoKCdETkEnKSB8fCBoZWxtUG9seW1lci5zdGFydHNXaXRoKCdSTkEnKTtcblxuICAgICAgLy8gaXRlbXMgY2FuIGJlIG1vbm9tZXJzIG9yIGhlbG1zXG4gICAgICBjb25zdCBoZWxtSXRlbXNBcnJheSA9IHRoaXMuc3BsaXR0ZXIoaGVsbVBvbHltZXIpO1xuICAgICAgY29uc3QgdGd0TW9ub21lcnNBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVsbUl0ZW1zQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGl0ZW0gPSBoZWxtSXRlbXNBcnJheVtpXTtcbiAgICAgICAgaWYgKGlzTnVjbGVvdGlkZSlcbiAgICAgICAgICBpdGVtID0gaXRlbS5yZXBsYWNlKGhlbG1XcmFwcGVyc1JlLCAnJyk7XG4gICAgICAgIGlmIChpdGVtID09PSBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5IRUxNKSB7XG4gICAgICAgICAgdGd0TW9ub21lcnNBcnJheS5wdXNoKHRndEdhcFN5bWJvbCEpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbiBhcyBOT1RBVElPTikgJiYgaXRlbS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gdGhlIGNhc2Ugb2YgYSBtdWx0aS1jaGFyYWN0ZXIgbW9ub21lciBjb252ZXJ0ZWQgdG8gRkFTVEFcbiAgICAgICAgICBjb25zdCBtb25vbWVyID0gJ1snICsgaXRlbSArICddJztcbiAgICAgICAgICB0Z3RNb25vbWVyc0FycmF5LnB1c2gobW9ub21lcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGd0TW9ub21lcnNBcnJheS5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdGd0TW9ub21lcnNBcnJheS5qb2luKHRndFNlcGFyYXRvcik7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEhlbG1Ub1NlcGFyYXRvcigpOiBERy5Db2x1bW4ge1xuICAgIC8vIFRPRE86IGltcGxlbWVudGF0aW9yZXR1cm4gdGhpcy5nZXROZXdDb2x1bW4oKTtcbiAgICByZXR1cm4gdGhpcy5nZXROZXdDb2x1bW4oTk9UQVRJT04uU0VQQVJBVE9SKTtcbiAgfVxuXG4gIC8qKiBEaXNwYXRjaGVyIG1ldGhvZCBmb3Igbm90YXRpb24gY29udmVyc2lvblxuICAgKlxuICAgKiBAcGFyYW0ge05PVEFUSU9OfSB0Z3ROb3RhdGlvbiAgIE5vdGF0aW9uIHdlIHdhbnQgdG8gY29udmVydCB0b1xuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IHRndFNlcGFyYXRvciAgIFBvc3NpYmxlIHNlcGFyYXRvclxuICAgKiBAcmV0dXJuIHtERy5Db2x1bW59ICAgICAgICAgICAgICAgIENvbnZlcnRlZCBjb2x1bW5cbiAgICovXG4gIHB1YmxpYyBjb252ZXJ0KHRndE5vdGF0aW9uOiBOT1RBVElPTiwgdGd0U2VwYXJhdG9yOiBzdHJpbmcgfCBudWxsID0gbnVsbCk6IERHLkNvbHVtbiB7XG4gICAgLy8gcG9zc2libGUgZXhjZXB0aW9uc1xuICAgIGlmICh0aGlzLm5vdGF0aW9uID09PSB0Z3ROb3RhdGlvbilcbiAgICAgIHRocm93IG5ldyBFcnJvcigndGd0IG5vdGF0aW9uIGlzIGludmFsaWQnKTtcbiAgICBpZiAodGhpcy50b1NlcGFyYXRvcih0Z3ROb3RhdGlvbikgJiYgdGd0U2VwYXJhdG9yID09PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0Z3Qgc2VwYXJhdG9yIGlzIG5vdCBzcGVjaWZpZWQnKTtcblxuICAgIGlmICh0aGlzLmlzRmFzdGEoKSAmJiB0aGlzLnRvU2VwYXJhdG9yKHRndE5vdGF0aW9uKSAmJiB0Z3RTZXBhcmF0b3IgIT09IG51bGwpXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0RmFzdGFUb1NlcGFyYXRvcih0Z3RTZXBhcmF0b3IpO1xuICAgIGVsc2UgaWYgKCh0aGlzLmlzRmFzdGEoKSB8fCB0aGlzLmlzU2VwYXJhdG9yKCkpICYmIHRoaXMudG9IZWxtKHRndE5vdGF0aW9uKSlcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0hlbG0oKTtcbiAgICBlbHNlIGlmICh0aGlzLmlzU2VwYXJhdG9yKCkgJiYgdGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uKSlcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRTZXBhcmF0b3JUb0Zhc3RhKCk7XG4gICAgZWxzZSBpZiAodGhpcy5pc0hlbG0oKSAmJiB0aGlzLnRvRmFzdGEodGd0Tm90YXRpb24pKSAvLyB0aGUgY2FzZSBvZiBIRUxNXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0SGVsbSh0Z3ROb3RhdGlvbik7XG4gICAgZWxzZSAvLyB0aGlzLmlzSGVsbSgpICYmIHRoaXMudG9TZXBhcmF0b3IodGd0Tm90YXRpb24pXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0SGVsbSh0Z3ROb3RhdGlvbiwgdGd0U2VwYXJhdG9yISk7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoY29sOiBERy5Db2x1bW4pIHtcbiAgICBzdXBlcihjb2wpO1xuICB9XG59XG4iXX0=
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90YXRpb24tY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibm90YXRpb24tY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsb0JBQW9CLEVBQStCLE1BQU0saUJBQWlCLENBQUM7QUFFbkYsaUZBQWlGO0FBQ2pGLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxZQUFZO0lBa1BqRCxZQUFtQixHQUFjO1FBQy9CLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQWxQTCxjQUFTLEdBQXdCLElBQUksQ0FBQztJQW1QOUMsQ0FBQztJQWxQRCxJQUFjLFFBQVE7UUFDcEIsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUk7WUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFBQSxDQUFDO0lBRUssT0FBTyxDQUFDLGNBQXdCLElBQWEsT0FBTyxjQUFjLGlDQUFtQixDQUFDLENBQUMsQ0FBQztJQUV4RixXQUFXLENBQUMsY0FBd0IsSUFBYSxPQUFPLGNBQWMseUNBQXVCLENBQUMsQ0FBQyxDQUFDO0lBRWhHLE1BQU0sQ0FBQyxjQUF3QixJQUFhLE9BQU8sY0FBYywrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFFN0Y7Ozs7OztPQU1HO0lBQ0ssdUJBQXVCLENBQUMsU0FBaUIsRUFBRSxpQkFBZ0MsSUFBSTtRQUNyRixJQUFJLGNBQWMsS0FBSyxJQUFJO1lBQ3pCLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFFekMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksc0NBQW9CLENBQUM7UUFDeEQsc0RBQXNEO1FBQ3RELFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFX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QUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUN6RSxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUN6QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUN0RCxPQUFPLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO2FBQ25DLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsbUJBQW1CO1lBQ3RFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNsQyxpREFBaUQ7WUFDcEQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxZQUFhLENBQUMsQ0FBQztJQUN4RCxDQUFDO0NBS0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBEbyBub3QgY2hhbmdlIHRoZXNlIGltcG9ydCBsaW5lcyB0byBtYXRjaCBleHRlcm5hbCBtb2R1bGVzIGluIHdlYnBhY2sgY29uZmlndXJhdGlvbiAqL1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcblxuaW1wb3J0IHtVbml0c0hhbmRsZXJ9IGZyb20gJy4vdW5pdHMtaGFuZGxlcic7XG5pbXBvcnQge2dldFNwbGl0dGVyRm9yQ29sdW1uLCBOT1RBVElPTiwgU3BsaXR0ZXJGdW5jLCBUQUdTfSBmcm9tICcuL21hY3JvbW9sZWN1bGUnO1xuXG4vKiogQ2xhc3MgZm9yIGhhbmRsaW5nIGNvbnZlcnNpb24gb2Ygbm90YXRpb24gc3lzdGVtcyBpbiBNYWNyb21vbGVjdWxlIGNvbHVtbnMgKi9cbmV4cG9ydCBjbGFzcyBOb3RhdGlvbkNvbnZlcnRlciBleHRlbmRzIFVuaXRzSGFuZGxlciB7XG4gIHByaXZhdGUgX3NwbGl0dGVyOiBTcGxpdHRlckZ1bmMgfCBudWxsID0gbnVsbDtcbiAgcHJvdGVjdGVkIGdldCBzcGxpdHRlcigpOiBTcGxpdHRlckZ1bmMge1xuICAgIGlmICh0aGlzLl9zcGxpdHRlciA9PT0gbnVsbClcbiAgICAgIHRoaXMuX3NwbGl0dGVyID0gZ2V0U3BsaXR0ZXJGb3JDb2x1bW4odGhpcy5jb2x1bW4pO1xuICAgIHJldHVybiB0aGlzLl9zcGxpdHRlcjtcbiAgfTtcblxuICBwdWJsaWMgdG9GYXN0YSh0YXJnZXROb3RhdGlvbjogTk9UQVRJT04pOiBib29sZWFuIHsgcmV0dXJuIHRhcmdldE5vdGF0aW9uID09PSBOT1RBVElPTi5GQVNUQTsgfVxuXG4gIHB1YmxpYyB0b1NlcGFyYXRvcih0YXJnZXROb3RhdGlvbjogTk9UQVRJT04pOiBib29sZWFuIHsgcmV0dXJuIHRhcmdldE5vdGF0aW9uID09PSBOT1RBVElPTi5TRVBBUkFUT1I7IH1cblxuICBwdWJsaWMgdG9IZWxtKHRhcmdldE5vdGF0aW9uOiBOT1RBVElPTik6IGJvb2xlYW4geyByZXR1cm4gdGFyZ2V0Tm90YXRpb24gPT09IE5PVEFUSU9OLkhFTE07IH1cblxuICAvKipcbiAgICogQ29udmVydCBhIE1hY3JvbW9sZWN1bGUgY29sdW1uIGZyb20gRkFTVEEgdG8gU0VQQVJBVE9SIG5vdGF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3IgIEEgc3BlY2lmaWMgc2VwYXJhdG9yIHRvIGJlIHVzZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhc3RhR2FwU3ltYm9sICBHYXAgc3ltYm9sIGluIEZBU1RBLCAnLScgYnkgZGVmYXVsdFxuICAgKiBAcmV0dXJuIHtERy5Db2x1bW59ICAgICAgICBBIG5ldyBjb2x1bW4gaW4gU0VQQVJBVE9SIG5vdGF0aW9uXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRGYXN0YVRvU2VwYXJhdG9yKHNlcGFyYXRvcjogc3RyaW5nLCBmYXN0YUdhcFN5bWJvbDogc3RyaW5nIHwgbnVsbCA9IG51bGwpOiBERy5Db2x1bW4ge1xuICAgIGlmIChmYXN0YUdhcFN5bWJvbCA9PT0gbnVsbClcbiAgICAgIGZhc3RhR2FwU3ltYm9sID0gdGhpcy5kZWZhdWx0R2FwU3ltYm9sO1xuXG4gICAgY29uc3QgbmV3Q29sdW1uID0gdGhpcy5nZXROZXdDb2x1bW4oTk9UQVRJT04uU0VQQVJBVE9SKTtcbiAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgbmV3bHkgY3JlYXRlZCBlbXB0eSBjb2x1bW5cbiAgICBuZXdDb2x1bW4uaW5pdCgoaWR4OiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IGZhc3RhUG9seW1lciA9IHRoaXMuY29sdW1uLmdldChpZHgpO1xuICAgICAgY29uc3QgZmFzdGFNb25vbWVyc0FycmF5ID0gdGhpcy5zcGxpdHRlcihmYXN0YVBvbHltZXIpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmYXN0YU1vbm9tZXJzQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGZhc3RhTW9ub21lcnNBcnJheVtpXSA9PT0gZmFzdGFHYXBTeW1ib2wpXG4gICAgICAgICAgZmFzdGFNb25vbWVyc0FycmF5W2ldID0gVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuU0VQQVJBVE9SO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhc3RhTW9ub21lcnNBcnJheS5qb2luKHNlcGFyYXRvcik7XG4gICAgfSk7XG4gICAgbmV3Q29sdW1uLnNldFRhZyhUQUdTLnNlcGFyYXRvciwgc2VwYXJhdG9yKTtcbiAgICByZXR1cm4gbmV3Q29sdW1uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgd3JhcHBlciBzdHJpbmdzIGZvciBIRUxNLCBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdGhlXG4gICAqIG1hY3JvbW9sZWN1bGUgKHBlcHRpZGUsIEROQSwgUk5BKVxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gQXJyYXkgb2Ygd3JhcHBlcnNcbiAgICovXG4gIHByaXZhdGUgZ2V0SGVsbVdyYXBwZXJzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBwcmVmaXggPSAodGhpcy5pc0RuYSgpKSA/ICdETkExeycgOlxuICAgICAgKHRoaXMuaXNSbmEoKSkgPyAnUk5BMXsnIDpcbiAgICAgICAgKHRoaXMuaXNQZXB0aWRlKCkpID8gJ1BFUFRJREUxeycgOlxuICAgICAgICAgICdVbmtub3duJzsgLy8gdGhpcyBjYXNlIHNob3VsZCBiZSBoYW5kbGVkIGFzIGV4Y2VwdGlvbmFsXG5cbiAgICBpZiAocHJlZml4ID09PSAnVW5rbm93bicpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05laXRoZXIgcGVwdGlkZSwgbm9yIG51Y2xlb3RpZGUnKTtcblxuICAgIGNvbnN0IHBvc3RmaXggPSAnfSQkJCc7XG4gICAgY29uc3QgbGVmdFdyYXBwZXIgPSAodGhpcy5pc0RuYSgpKSA/ICdEKCcgOlxuICAgICAgKHRoaXMuaXNSbmEoKSkgPyAnUignIDogJyc7IC8vIG5vIHdyYXBwZXIgZm9yIHBlcHRpZGVzXG4gICAgY29uc3QgcmlnaHRXcmFwcGVyID0gKHRoaXMuaXNEbmEoKSB8fCB0aGlzLmlzUm5hKCkpID8gJylQJyA6ICcnOyAvLyBubyB3cmFwcGVyIGZvciBwZXB0aWRlc1xuICAgIHJldHVybiBbcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4XTtcbiAgfVxuXG4gIC8vIEEgaGVscGVyIGZ1bmN0aW9uIGZvciBjb252ZXJ0aW5nIHN0cmluZ3MgdG8gSEVMTVxuICBwcml2YXRlIGNvbnZlcnRUb0hlbG1IZWxwZXIoXG4gICAgc291cmNlUG9seW1lcjogc3RyaW5nLFxuICAgIHNvdXJjZUdhcFN5bWJvbDogc3RyaW5nLFxuICAgIHByZWZpeDogc3RyaW5nLFxuICAgIGxlZnRXcmFwcGVyOiBzdHJpbmcsXG4gICAgcmlnaHRXcmFwcGVyOiBzdHJpbmcsXG4gICAgcG9zdGZpeDogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgbW9ub21lckFycmF5ID0gdGhpcy5zcGxpdHRlcihzb3VyY2VQb2x5bWVyKTtcbiAgICBjb25zdCBtb25vbWVySGVsbUFycmF5OiBzdHJpbmdbXSA9IG1vbm9tZXJBcnJheS5tYXAoKG1tOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChtbSA9PT0gc291cmNlR2FwU3ltYm9sKVxuICAgICAgICByZXR1cm4gVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuSEVMTTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGAke2xlZnRXcmFwcGVyfSR7bW19JHtyaWdodFdyYXBwZXJ9YDtcbiAgICB9KTtcbiAgICByZXR1cm4gYCR7cHJlZml4fSR7bW9ub21lckhlbG1BcnJheS5qb2luKCcuJyl9JHtwb3N0Zml4fWA7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIHN0cmluZyB3aXRoIFNFUEFSQVRPUi9GQVNUQSBub3RhdGlvbiB0byBIRUxNXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2VQb2x5bWVyICBBIHN0cmluZyB0byBiZSBjb252ZXJ0ZWRcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBzb3VyY2VHYXBTeW1ib2wgIEFuIG9wdGlvbmFsIGdhcCBzeW1ib2wsIHNldCB0b1xuICAgKiBkZWZhdWx0IHZhbHVlcyAoJy0nIGZvciBGQVNUQSBhbmQgJycgZm9yIFNFUEFSQVRPUikgdW5sZXNzIHNwZWNpZmllZFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICBUaGUgdGFyZ2V0IEhFTE0gc3RyaW5nXG4gICAqL1xuICBwdWJsaWMgY29udmVydFN0cmluZ1RvSGVsbShcbiAgICBzb3VyY2VQb2x5bWVyOiBzdHJpbmcsXG4gICAgc291cmNlR2FwU3ltYm9sOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiBzdHJpbmcge1xuICAgIGlmIChzb3VyY2VHYXBTeW1ib2wgPT09IG51bGwpXG4gICAgICBzb3VyY2VHYXBTeW1ib2wgPSB0aGlzLmRlZmF1bHRHYXBTeW1ib2w7XG4gICAgY29uc3QgW3ByZWZpeCwgbGVmdFdyYXBwZXIsIHJpZ2h0V3JhcHBlciwgcG9zdGZpeF0gPSB0aGlzLmdldEhlbG1XcmFwcGVycygpO1xuICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0hlbG1IZWxwZXIoc291cmNlUG9seW1lciwgc291cmNlR2FwU3ltYm9sLCBwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBjb2x1bW4gdG8gSEVMTVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IHNvdXJjZUdhcFN5bWJvbFxuICAgKiBAcmV0dXJuIHtERy5Db2x1bW59XG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRUb0hlbG0oc291cmNlR2FwU3ltYm9sOiBzdHJpbmcgfCBudWxsID0gbnVsbCk6IERHLkNvbHVtbiB7XG4gICAgaWYgKHNvdXJjZUdhcFN5bWJvbCA9PT0gbnVsbClcbiAgICAgIHNvdXJjZUdhcFN5bWJvbCA9IHRoaXMuZGVmYXVsdEdhcFN5bWJvbDtcblxuICAgIGNvbnN0IFtwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXhdID0gdGhpcy5nZXRIZWxtV3JhcHBlcnMoKTtcblxuICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRoaXMuZ2V0TmV3Q29sdW1uKE5PVEFUSU9OLkhFTE0pO1xuICAgIC8vIGFzc2lnbiB0aGUgdmFsdWVzIHRvIHRoZSBlbXB0eSBjb2x1bW5cbiAgICBuZXdDb2x1bW4uaW5pdCgoaWR4OiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZVBvbHltZXIgPSB0aGlzLmNvbHVtbi5nZXQoaWR4KTtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0hlbG1IZWxwZXIoc291cmNlUG9seW1lciwgc291cmNlR2FwU3ltYm9sISwgcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4KTtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3Q29sdW1uO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgU0VQQVJBVE9SIGNvbHVtbiB0byBGQVNUQSBub3RhdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IGZhc3RhR2FwU3ltYm9sIE9wdGlvbmFsIGdhcCBzeW1ib2wgZm9yIEZBU1RBXG4gICAqIEByZXR1cm4ge0RHLkNvbHVtbn0gIENvbnZlcnRlZCBjb2x1bW5cbiAgICovXG4gIHByaXZhdGUgY29udmVydFNlcGFyYXRvclRvRmFzdGEoZmFzdGFHYXBTeW1ib2w6IHN0cmluZyB8IG51bGwgPSBudWxsKTogREcuQ29sdW1uIHtcbiAgICBpZiAoZmFzdGFHYXBTeW1ib2wgPT09IG51bGwpXG4gICAgICBmYXN0YUdhcFN5bWJvbCA9IFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkZBU1RBO1xuXG4gICAgY29uc3QgbmV3Q29sdW1uID0gdGhpcy5nZXROZXdDb2x1bW4oTk9UQVRJT04uRkFTVEEpO1xuICAgIC8vIGFzc2lnbiB0aGUgdmFsdWVzIHRvIHRoZSBlbXB0eSBjb2x1bW5cbiAgICBuZXdDb2x1bW4uaW5pdCgoaWR4OiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IHNlcGFyYXRvclBvbHltZXIgPSB0aGlzLmNvbHVtbi5nZXQoaWR4KTtcbiAgICAgIC8vIGl0ZW1zIGNhbiBiZSBtb25vbWVycyBvciBzZXBhcmF0b3JzXG4gICAgICBjb25zdCBzZXBhcmF0b3JJdGVtc0FycmF5ID0gdGhpcy5zcGxpdHRlcihzZXBhcmF0b3JQb2x5bWVyKTtcbiAgICAgIGNvbnN0IGZhc3RhTW9ub21lcnNBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VwYXJhdG9ySXRlbXNBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBpdGVtID0gc2VwYXJhdG9ySXRlbXNBcnJheVtpXTtcbiAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgZmFzdGFNb25vbWVyc0FycmF5LnB1c2goZmFzdGFHYXBTeW1ib2whKTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAvLyB0aGUgY2FzZSBvZiBhIG11bHRpLWNoYXJhY3RlciBtb25vbWVyXG4gICAgICAgICAgY29uc3QgbW9ub21lciA9ICdbJyArIGl0ZW0gKyAnXSc7XG4gICAgICAgICAgZmFzdGFNb25vbWVyc0FycmF5LnB1c2gobW9ub21lcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmFzdGFNb25vbWVyc0FycmF5LnB1c2goaXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYXN0YU1vbm9tZXJzQXJyYXkuam9pbignJyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQ29udmVydCBIRUxNIGNvbHVtbiB0byBGQVNUQS9TRVBBUkFUT1JcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRndE5vdGF0aW9uICAgIFRhcmdldCBub3RhdGlvbjogRkFTVEEgb3IgU0VQQVJBVE9SXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0Z3RTZXBhcmF0b3IgICBPcHRpb25hbCB0YXJnZXQgc2VwYXJhdG9yIChmb3IgSEVMTSAtPlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IHRndEdhcFN5bWJvbCAgIE9wdGlvbmFsIHRhcmdldCBnYXAgc3ltYm9sXG4gICAqIFNFUEFSQVRPUilcbiAgICogQHJldHVybiB7REcuQ29sdW1ufSBDb252ZXJ0ZWQgY29sdW1uXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRIZWxtKFxuICAgIHRndE5vdGF0aW9uOiBzdHJpbmcsXG4gICAgdGd0U2VwYXJhdG9yOiBzdHJpbmcgPSAnJyxcbiAgICB0Z3RHYXBTeW1ib2w6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IERHLkNvbHVtbiB7XG4gICAgLy8gVGhpcyBmdW5jdGlvbiBtdXN0IG5vdCBjb250YWluIGNhbGxzIG9mIGlzRG5hKCkgYW5kIGlzUm5hKCksIGZvclxuICAgIC8vIHNvdXJjZSBoZWxtIGNvbHVtbnMgbWF5IGNvbnRhaW4gUk5BLCBETkEgYW5kIFBUIGFjcm9zcyBkaWZmZXJlbnQgcm93c1xuICAgIGlmICh0Z3RHYXBTeW1ib2wgPT09IG51bGwpIHtcbiAgICAgIHRndEdhcFN5bWJvbCA9ICh0aGlzLnRvRmFzdGEodGd0Tm90YXRpb24gYXMgTk9UQVRJT04pKSA/XG4gICAgICAgIFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkZBU1RBIDpcbiAgICAgICAgVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuU0VQQVJBVE9SO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRvU2VwYXJhdG9yKHRndE5vdGF0aW9uIGFzIE5PVEFUSU9OKSAmJiB0Z3RTZXBhcmF0b3IgPT09ICcnKVxuICAgICAgdGd0U2VwYXJhdG9yID0gdGhpcy5zZXBhcmF0b3I7XG5cbiAgICBjb25zdCBoZWxtV3JhcHBlcnNSZSA9IC8oUlxcKHxEXFwofFxcKXxQKS9nO1xuICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRoaXMuZ2V0TmV3Q29sdW1uKHRndE5vdGF0aW9uIGFzIE5PVEFUSU9OKTtcbiAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgbmV3Q29sdW1uLmluaXQoKGlkeDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBoZWxtUG9seW1lciA9IHRoaXMuY29sdW1uLmdldChpZHgpO1xuXG4gICAgICAvLyB3ZSBjYW5ub3QgdXNlIGlzRG5hKCkgb3IgaXNSbmEoKSBiZWNhdXNlIHNvdXJjZSBoZWxtIGNvbHVtbnMgY2FuXG4gICAgICAvLyBjb250YWluIEROQSwgUk5BIGFuZCBQVCBpbiBkaWZmZXJlbnQgY2VsbHMsIHNvIHRoZSBjb3JyZXNwb25kaW5nXG4gICAgICAvLyB0YWdzIGNhbm5vdCBiZSBzZXQgZm9yIHRoZSB3aG9sZSBjb2x1bW5cbiAgICAgIGNvbnN0IGlzTnVjbGVvdGlkZSA9IGhlbG1Qb2x5bWVyLnN0YXJ0c1dpdGgoJ0ROQScpIHx8IGhlbG1Qb2x5bWVyLnN0YXJ0c1dpdGgoJ1JOQScpO1xuXG4gICAgICAvLyBpdGVtcyBjYW4gYmUgbW9ub21lcnMgb3IgaGVsbXNcbiAgICAgIGNvbnN0IGhlbG1JdGVtc0FycmF5ID0gdGhpcy5zcGxpdHRlcihoZWxtUG9seW1lcik7XG4gICAgICBjb25zdCB0Z3RNb25vbWVyc0FycmF5OiBzdHJpbmdbXSA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWxtSXRlbXNBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgaXRlbSA9IGhlbG1JdGVtc0FycmF5W2ldO1xuICAgICAgICBpZiAoaXNOdWNsZW90aWRlKVxuICAgICAgICAgIGl0ZW0gPSBpdGVtLnJlcGxhY2UoaGVsbVdyYXBwZXJzUmUsICcnKTtcbiAgICAgICAgaWYgKGl0ZW0gPT09IFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkhFTE0pIHtcbiAgICAgICAgICB0Z3RNb25vbWVyc0FycmF5LnB1c2godGd0R2FwU3ltYm9sISk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uIGFzIE5PVEFUSU9OKSAmJiBpdGVtLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAvLyB0aGUgY2FzZSBvZiBhIG11bHRpLWNoYXJhY3RlciBtb25vbWVyIGNvbnZlcnRlZCB0byBGQVNUQVxuICAgICAgICAgIGNvbnN0IG1vbm9tZXIgPSAnWycgKyBpdGVtICsgJ10nO1xuICAgICAgICAgIHRndE1vbm9tZXJzQXJyYXkucHVzaChtb25vbWVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0Z3RNb25vbWVyc0FycmF5LnB1c2goaXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0Z3RNb25vbWVyc0FycmF5LmpvaW4odGd0U2VwYXJhdG9yKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3Q29sdW1uO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0SGVsbVRvU2VwYXJhdG9yKCk6IERHLkNvbHVtbiB7XG4gICAgLy8gVE9ETzogaW1wbGVtZW50YXRpb3JldHVybiB0aGlzLmdldE5ld0NvbHVtbigpO1xuICAgIHJldHVybiB0aGlzLmdldE5ld0NvbHVtbihOT1RBVElPTi5TRVBBUkFUT1IpO1xuICB9XG5cbiAgLyoqIERpc3BhdGNoZXIgbWV0aG9kIGZvciBub3RhdGlvbiBjb252ZXJzaW9uXG4gICAqXG4gICAqIEBwYXJhbSB7Tk9UQVRJT059IHRndE5vdGF0aW9uICAgTm90YXRpb24gd2Ugd2FudCB0byBjb252ZXJ0IHRvXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbH0gdGd0U2VwYXJhdG9yICAgUG9zc2libGUgc2VwYXJhdG9yXG4gICAqIEByZXR1cm4ge0RHLkNvbHVtbn0gICAgICAgICAgICAgICAgQ29udmVydGVkIGNvbHVtblxuICAgKi9cbiAgcHVibGljIGNvbnZlcnQodGd0Tm90YXRpb246IE5PVEFUSU9OLCB0Z3RTZXBhcmF0b3I6IHN0cmluZyB8IG51bGwgPSBudWxsKTogREcuQ29sdW1uIHtcbiAgICAvLyBwb3NzaWJsZSBleGNlcHRpb25zXG4gICAgaWYgKHRoaXMubm90YXRpb24gPT09IHRndE5vdGF0aW9uKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0Z3Qgbm90YXRpb24gaXMgaW52YWxpZCcpO1xuICAgIGlmICh0aGlzLnRvU2VwYXJhdG9yKHRndE5vdGF0aW9uKSAmJiB0Z3RTZXBhcmF0b3IgPT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RndCBzZXBhcmF0b3IgaXMgbm90IHNwZWNpZmllZCcpO1xuXG4gICAgaWYgKHRoaXMuaXNGYXN0YSgpICYmIHRoaXMudG9TZXBhcmF0b3IodGd0Tm90YXRpb24pICYmIHRndFNlcGFyYXRvciAhPT0gbnVsbClcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRGYXN0YVRvU2VwYXJhdG9yKHRndFNlcGFyYXRvcik7XG4gICAgZWxzZSBpZiAoKHRoaXMuaXNGYXN0YSgpIHx8IHRoaXMuaXNTZXBhcmF0b3IoKSkgJiYgdGhpcy50b0hlbG0odGd0Tm90YXRpb24pKVxuICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvSGVsbSgpO1xuICAgIGVsc2UgaWYgKHRoaXMuaXNTZXBhcmF0b3IoKSAmJiB0aGlzLnRvRmFzdGEodGd0Tm90YXRpb24pKVxuICAgICAgcmV0dXJuIHRoaXMuY29udmVydFNlcGFyYXRvclRvRmFzdGEoKTtcbiAgICBlbHNlIGlmICh0aGlzLmlzSGVsbSgpICYmIHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbikpIC8vIHRoZSBjYXNlIG9mIEhFTE1cbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRIZWxtKHRndE5vdGF0aW9uKTtcbiAgICBlbHNlIC8vIHRoaXMuaXNIZWxtKCkgJiYgdGhpcy50b1NlcGFyYXRvcih0Z3ROb3RhdGlvbilcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRIZWxtKHRndE5vdGF0aW9uLCB0Z3RTZXBhcmF0b3IhKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb2w6IERHLkNvbHVtbikge1xuICAgIHN1cGVyKGNvbCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splitter.d.ts","sourceRoot":"","sources":["splitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAItC,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"splitter.d.ts","sourceRoot":"","sources":["splitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAItC,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,CA0BrF"}
|
package/src/utils/splitter.js
CHANGED
|
@@ -8,7 +8,6 @@ export function splitAlignedSequences(sequenceColumn) {
|
|
|
8
8
|
columnList.push(positionCol);
|
|
9
9
|
return positionCol;
|
|
10
10
|
};
|
|
11
|
-
let currentMonomerList = splitter(sequenceColumn.get(0));
|
|
12
11
|
const columnList = [];
|
|
13
12
|
const rowCount = sequenceColumn.length;
|
|
14
13
|
const resultDf = DG.DataFrame.create(rowCount);
|
|
@@ -16,7 +15,7 @@ export function splitAlignedSequences(sequenceColumn) {
|
|
|
16
15
|
const sequence = sequenceColumn.get(rowIndex);
|
|
17
16
|
if (sequence == null)
|
|
18
17
|
continue;
|
|
19
|
-
currentMonomerList = splitter(sequence);
|
|
18
|
+
const currentMonomerList = splitter(sequence);
|
|
20
19
|
currentMonomerList.forEach((monomer, positionIndex) => {
|
|
21
20
|
const col = getCol(positionIndex) || createCol(positionIndex);
|
|
22
21
|
col.set(rowIndex, monomer || '-', false);
|
|
@@ -24,4 +23,4 @@ export function splitAlignedSequences(sequenceColumn) {
|
|
|
24
23
|
}
|
|
25
24
|
return resultDf;
|
|
26
25
|
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcGxpdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXJELE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxjQUFpQztJQUNyRSxNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0RCxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQWEsRUFBNEIsRUFBRSxXQUFDLE9BQUEsTUFBQSxVQUFVLENBQUMsS0FBSyxDQUFDLG1DQUFJLElBQUksQ0FBQSxFQUFBLENBQUM7SUFDdEYsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFhLEVBQXFCLEVBQUU7UUFDckQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMxRSxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUMsQ0FBQztJQUVGLE1BQU0sVUFBVSxHQUF3QixFQUFFLENBQUM7SUFDM0MsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQztJQUN2QyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUUvQyxLQUFLLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxRQUFRLEdBQUcsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFO1FBQ3RELE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsSUFBSSxRQUFRLElBQUksSUFBSTtZQUNsQixTQUFTO1FBRVgsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxFQUFFO1lBQ3BELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDOUQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxJQUFJLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztLQUNKO0lBRUQsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5cbmltcG9ydCB7Z2V0U3BsaXR0ZXJGb3JDb2x1bW59IGZyb20gJy4vbWFjcm9tb2xlY3VsZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdEFsaWduZWRTZXF1ZW5jZXMoc2VxdWVuY2VDb2x1bW46IERHLkNvbHVtbjxzdHJpbmc+KTogREcuRGF0YUZyYW1lIHtcbiAgY29uc3Qgc3BsaXR0ZXIgPSBnZXRTcGxpdHRlckZvckNvbHVtbihzZXF1ZW5jZUNvbHVtbik7XG4gIGNvbnN0IGdldENvbCA9IChpbmRleDogbnVtYmVyKTogREcuQ29sdW1uPHN0cmluZz4gfCBudWxsID0+IGNvbHVtbkxpc3RbaW5kZXhdID8/IG51bGw7XG4gIGNvbnN0IGNyZWF0ZUNvbCA9IChpbmRleDogbnVtYmVyKTogREcuQ29sdW1uPHN0cmluZz4gPT4ge1xuICAgIGNvbnN0IHBvc2l0aW9uQ29sID0gcmVzdWx0RGYuY29sdW1ucy5hZGROZXdTdHJpbmcoKGluZGV4ICsgMSkudG9TdHJpbmcoKSk7XG4gICAgY29sdW1uTGlzdC5wdXNoKHBvc2l0aW9uQ29sKTtcbiAgICByZXR1cm4gcG9zaXRpb25Db2w7XG4gIH07XG5cbiAgY29uc3QgY29sdW1uTGlzdDogREcuQ29sdW1uPHN0cmluZz5bXSA9IFtdO1xuICBjb25zdCByb3dDb3VudCA9IHNlcXVlbmNlQ29sdW1uLmxlbmd0aDtcbiAgY29uc3QgcmVzdWx0RGYgPSBERy5EYXRhRnJhbWUuY3JlYXRlKHJvd0NvdW50KTtcblxuICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgcm93Q291bnQ7ICsrcm93SW5kZXgpIHtcbiAgICBjb25zdCBzZXF1ZW5jZSA9IHNlcXVlbmNlQ29sdW1uLmdldChyb3dJbmRleCk7XG4gICAgaWYgKHNlcXVlbmNlID09IG51bGwpXG4gICAgICBjb250aW51ZTtcblxuICAgIGNvbnN0IGN1cnJlbnRNb25vbWVyTGlzdCA9IHNwbGl0dGVyKHNlcXVlbmNlKTtcbiAgICBjdXJyZW50TW9ub21lckxpc3QuZm9yRWFjaCgobW9ub21lciwgcG9zaXRpb25JbmRleCkgPT4ge1xuICAgICAgY29uc3QgY29sID0gZ2V0Q29sKHBvc2l0aW9uSW5kZXgpIHx8IGNyZWF0ZUNvbChwb3NpdGlvbkluZGV4KTtcbiAgICAgIGNvbC5zZXQocm93SW5kZXgsIG1vbm9tZXIgfHwgJy0nLCBmYWxzZSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0RGY7XG59XG4iXX0=
|
|
@@ -1,25 +1,7 @@
|
|
|
1
1
|
import * as DG from 'datagrok-api/dg';
|
|
2
|
-
|
|
3
|
-
export declare const enum NOTATION {
|
|
4
|
-
FASTA = "fasta",
|
|
5
|
-
SEPARATOR = "separator",
|
|
6
|
-
HELM = "helm"
|
|
7
|
-
}
|
|
8
|
-
export declare const enum ALPHABET {
|
|
9
|
-
DNA = "DNA",
|
|
10
|
-
RNA = "RNA",
|
|
11
|
-
PT = "PT",
|
|
12
|
-
UN = "UN"
|
|
13
|
-
}
|
|
2
|
+
import { NOTATION } from './macromolecule';
|
|
14
3
|
/** Class for handling notation units in Macromolecule columns */
|
|
15
4
|
export declare class UnitsHandler {
|
|
16
|
-
static readonly TAGS: {
|
|
17
|
-
aligned: string;
|
|
18
|
-
alphabet: string;
|
|
19
|
-
alphabetSize: string;
|
|
20
|
-
alphabetIsMultichar: string;
|
|
21
|
-
separator: string;
|
|
22
|
-
};
|
|
23
5
|
protected readonly _column: DG.Column;
|
|
24
6
|
protected _units: string;
|
|
25
7
|
protected _notation: NOTATION;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"units-handler.d.ts","sourceRoot":"","sources":["units-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"units-handler.d.ts","sourceRoot":"","sources":["units-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAItC,OAAO,EACK,QAAQ,EAKnB,MAAM,iBAAiB,CAAC;AAEzB,iEAAiE;AACjE,qBAAa,YAAY;IACvB,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC;IACtC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC9B,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACpC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB;;;;MAI9C;IAEF,gBAAuB,oBAAoB,cAGxC;IACH,gBAAuB,gBAAgB,cAAiC;IACxE,gBAAuB,gBAAgB,cAAiC;WAE1D,qBAAqB,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM;IAalD,SAAS,KAAK,KAAK,IAAI,MAAM,CAAwB;IAErD,SAAS,KAAK,MAAM,IAAI,EAAE,CAAC,MAAM,CAAyB;IAE1D,IAAW,QAAQ,IAAI,QAAQ,CAA2B;IAE1D,IAAW,gBAAgB,IAAI,MAAM,CAAmC;IAExE,IAAW,SAAS,IAAI,MAAM,CAM7B;IAED,IAAW,OAAO,IAAI,MAAM,CAO3B;IAED,iCAAiC;IACjC,IAAW,QAAQ,IAAI,MAAM,CAO5B;IAEM,eAAe,IAAI,MAAM;IAoBzB,sBAAsB,IAAI,OAAO;IAQjC,OAAO,IAAI,OAAO;IAElB,WAAW,IAAI,OAAO;IAEtB,MAAM,IAAI,OAAO;IAEjB,KAAK,IAAI,OAAO;IAEhB,KAAK,IAAI,OAAO;IAEhB,SAAS,IAAI,OAAO;IAEpB,KAAK,IAAI,OAAO;IAEvB,4DAA4D;IAC5D;;OAEG;IACH,SAAS,CAAC,WAAW,IAAI,QAAQ;IAWjC;;;;;;OAMG;IACH,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,GAAG,EAAE,CAAC,MAAM;IA8B3D;;;;;;OAMG;WACW,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM;IAM7D;;;;;OAKG;WACW,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IASxD;;;;;;;;OAQG;WACW,sBAAsB,CAClC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,EAAE,CAAC,MAAM;gBAYO,GAAG,EAAE,EAAE,CAAC,MAAM;CA8BlC"}
|