angular-slickgrid 5.6.4 → 6.0.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/README.md +26 -27
- package/app/modules/angular-slickgrid/components/angular-slickgrid.component.d.ts +198 -198
- package/app/modules/angular-slickgrid/constants.d.ts +30 -30
- package/app/modules/angular-slickgrid/extensions/index.d.ts +1 -1
- package/app/modules/angular-slickgrid/extensions/slickRowDetailView.d.ts +87 -88
- package/app/modules/angular-slickgrid/global-grid-options.d.ts +3 -3
- package/app/modules/angular-slickgrid/index.d.ts +7 -7
- package/app/modules/angular-slickgrid/models/angularComponentOutput.interface.d.ts +5 -5
- package/app/modules/angular-slickgrid/models/angularGridInstance.interface.d.ts +36 -36
- package/app/modules/angular-slickgrid/models/externalTestingDependencies.interface.d.ts +20 -20
- package/app/modules/angular-slickgrid/models/gridOption.interface.d.ts +9 -9
- package/app/modules/angular-slickgrid/models/index.d.ts +6 -6
- package/app/modules/angular-slickgrid/models/rowDetailView.interface.d.ts +25 -25
- package/app/modules/angular-slickgrid/models/slickGrid.interface.d.ts +6 -6
- package/app/modules/angular-slickgrid/modules/angular-slickgrid.module.d.ts +12 -12
- package/app/modules/angular-slickgrid/services/angularUtil.service.d.ts +11 -13
- package/app/modules/angular-slickgrid/services/container.service.d.ts +10 -11
- package/app/modules/angular-slickgrid/services/index.d.ts +4 -4
- package/app/modules/angular-slickgrid/services/translater.service.d.ts +30 -30
- package/app/modules/angular-slickgrid/services/utilities.d.ts +8 -8
- package/app/modules/angular-slickgrid/slickgrid-config.d.ts +5 -5
- package/{esm2020 → esm2022}/angular-slickgrid.mjs +4 -4
- package/esm2022/app/modules/angular-slickgrid/components/angular-slickgrid.component.mjs +1245 -0
- package/esm2022/app/modules/angular-slickgrid/constants.mjs +96 -0
- package/{esm2020 → esm2022}/app/modules/angular-slickgrid/extensions/index.mjs +1 -1
- package/esm2022/app/modules/angular-slickgrid/extensions/slickRowDetailView.mjs +307 -0
- package/{esm2020 → esm2022}/app/modules/angular-slickgrid/global-grid-options.mjs +246 -246
- package/{esm2020 → esm2022}/app/modules/angular-slickgrid/index.mjs +7 -7
- package/{esm2020 → esm2022}/app/modules/angular-slickgrid/models/angularComponentOutput.interface.mjs +1 -1
- package/{esm2020 → esm2022}/app/modules/angular-slickgrid/models/angularGridInstance.interface.mjs +1 -1
- package/{esm2020 → esm2022}/app/modules/angular-slickgrid/models/externalTestingDependencies.interface.mjs +1 -1
- package/{esm2020 → esm2022}/app/modules/angular-slickgrid/models/gridOption.interface.mjs +1 -1
- package/{esm2020 → esm2022}/app/modules/angular-slickgrid/models/index.mjs +6 -6
- package/{esm2020 → esm2022}/app/modules/angular-slickgrid/models/rowDetailView.interface.mjs +1 -1
- package/{esm2020 → esm2022}/app/modules/angular-slickgrid/models/slickGrid.interface.mjs +1 -1
- package/esm2022/app/modules/angular-slickgrid/modules/angular-slickgrid.module.mjs +42 -0
- package/esm2022/app/modules/angular-slickgrid/services/angularUtil.service.mjs +40 -0
- package/esm2022/app/modules/angular-slickgrid/services/container.service.mjs +28 -0
- package/{esm2020 → esm2022}/app/modules/angular-slickgrid/services/index.mjs +4 -4
- package/esm2022/app/modules/angular-slickgrid/services/translater.service.mjs +45 -0
- package/{esm2020 → esm2022}/app/modules/angular-slickgrid/services/utilities.mjs +18 -18
- package/esm2022/app/modules/angular-slickgrid/slickgrid-config.mjs +8 -0
- package/{esm2020 → esm2022}/public_api.mjs +1 -1
- package/{fesm2020 → fesm2022}/angular-slickgrid.mjs +2006 -1960
- package/fesm2022/angular-slickgrid.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/package.json +15 -23
- package/public_api.d.ts +1 -1
- package/esm2020/app/modules/angular-slickgrid/components/angular-slickgrid.component.mjs +0 -1200
- package/esm2020/app/modules/angular-slickgrid/constants.mjs +0 -95
- package/esm2020/app/modules/angular-slickgrid/extensions/slickRowDetailView.mjs +0 -298
- package/esm2020/app/modules/angular-slickgrid/modules/angular-slickgrid.module.mjs +0 -41
- package/esm2020/app/modules/angular-slickgrid/services/angularUtil.service.mjs +0 -46
- package/esm2020/app/modules/angular-slickgrid/services/container.service.mjs +0 -29
- package/esm2020/app/modules/angular-slickgrid/services/translater.service.mjs +0 -43
- package/esm2020/app/modules/angular-slickgrid/slickgrid-config.mjs +0 -7
- package/fesm2015/angular-slickgrid.mjs +0 -2044
- package/fesm2015/angular-slickgrid.mjs.map +0 -1
- package/fesm2020/angular-slickgrid.mjs.map +0 -1
- package/test/cypress/node_modules/@4tw/cypress-drag-drop/README.md +0 -169
- package/test/cypress/node_modules/@cypress/request/README.md +0 -1038
- package/test/cypress/node_modules/@cypress/xvfb/README.md +0 -48
- package/test/cypress/node_modules/@cypress/xvfb/node_modules/debug/README.md +0 -437
- package/test/cypress/node_modules/@types/node/README.md +0 -16
- package/test/cypress/node_modules/@types/sinonjs__fake-timers/README.md +0 -16
- package/test/cypress/node_modules/@types/sizzle/README.md +0 -16
- package/test/cypress/node_modules/@types/yauzl/README.md +0 -16
- package/test/cypress/node_modules/@types/yauzl/node_modules/@types/node/README.md +0 -16
- package/test/cypress/node_modules/aggregate-error/README.md +0 -61
- package/test/cypress/node_modules/ansi-colors/README.md +0 -315
- package/test/cypress/node_modules/ansi-escapes/README.md +0 -245
- package/test/cypress/node_modules/ansi-regex/README.md +0 -78
- package/test/cypress/node_modules/ansi-styles/README.md +0 -152
- package/test/cypress/node_modules/arch/README.md +0 -71
- package/test/cypress/node_modules/asn1/README.md +0 -50
- package/test/cypress/node_modules/assert-plus/README.md +0 -162
- package/test/cypress/node_modules/astral-regex/README.md +0 -46
- package/test/cypress/node_modules/async/README.md +0 -60
- package/test/cypress/node_modules/asynckit/README.md +0 -233
- package/test/cypress/node_modules/at-least-node/README.md +0 -25
- package/test/cypress/node_modules/aws-sign2/README.md +0 -4
- package/test/cypress/node_modules/aws4/README.md +0 -183
- package/test/cypress/node_modules/balanced-match/README.md +0 -91
- package/test/cypress/node_modules/base64-js/README.md +0 -34
- package/test/cypress/node_modules/bcrypt-pbkdf/README.md +0 -45
- package/test/cypress/node_modules/blob-util/README.md +0 -623
- package/test/cypress/node_modules/bluebird/README.md +0 -57
- package/test/cypress/node_modules/brace-expansion/README.md +0 -129
- package/test/cypress/node_modules/buffer/README.md +0 -410
- package/test/cypress/node_modules/buffer-crc32/README.md +0 -47
- package/test/cypress/node_modules/cachedir/README.md +0 -27
- package/test/cypress/node_modules/caseless/README.md +0 -45
- package/test/cypress/node_modules/chalk/README.md +0 -293
- package/test/cypress/node_modules/chalk/node_modules/supports-color/README.md +0 -76
- package/test/cypress/node_modules/check-more-types/README.md +0 -952
- package/test/cypress/node_modules/ci-info/README.md +0 -114
- package/test/cypress/node_modules/clean-stack/README.md +0 -76
- package/test/cypress/node_modules/cli-cursor/README.md +0 -55
- package/test/cypress/node_modules/cli-table3/README.md +0 -218
- package/test/cypress/node_modules/cli-truncate/README.md +0 -139
- package/test/cypress/node_modules/color-convert/README.md +0 -68
- package/test/cypress/node_modules/color-name/README.md +0 -11
- package/test/cypress/node_modules/colorette/README.md +0 -102
- package/test/cypress/node_modules/colors/README.md +0 -221
- package/test/cypress/node_modules/combined-stream/README.md +0 -138
- package/test/cypress/node_modules/commander/README.md +0 -737
- package/test/cypress/node_modules/common-tags/README.md +0 -687
- package/test/cypress/node_modules/core-util-is/README.md +0 -3
- package/test/cypress/node_modules/cross-spawn/README.md +0 -96
- package/test/cypress/node_modules/cypress/README.md +0 -25
- package/test/cypress/node_modules/cypress/angular/README.md +0 -10
- package/test/cypress/node_modules/cypress/mount-utils/README.md +0 -140
- package/test/cypress/node_modules/cypress/react/README.md +0 -14
- package/test/cypress/node_modules/cypress/react18/README.md +0 -7
- package/test/cypress/node_modules/cypress/svelte/README.md +0 -15
- package/test/cypress/node_modules/cypress/vue/README.md +0 -14
- package/test/cypress/node_modules/cypress/vue2/README.md +0 -7
- package/test/cypress/node_modules/dashdash/README.md +0 -574
- package/test/cypress/node_modules/dayjs/README.md +0 -128
- package/test/cypress/node_modules/debug/README.md +0 -481
- package/test/cypress/node_modules/delayed-stream/README.md +0 -141
- package/test/cypress/node_modules/ecc-jsbn/README.md +0 -8
- package/test/cypress/node_modules/emoji-regex/README.md +0 -73
- package/test/cypress/node_modules/end-of-stream/README.md +0 -54
- package/test/cypress/node_modules/enquirer/README.md +0 -1752
- package/test/cypress/node_modules/escape-string-regexp/README.md +0 -27
- package/test/cypress/node_modules/eventemitter2/README.md +0 -809
- package/test/cypress/node_modules/execa/README.md +0 -656
- package/test/cypress/node_modules/executable/README.md +0 -64
- package/test/cypress/node_modules/extend/README.md +0 -81
- package/test/cypress/node_modules/extract-zip/README.md +0 -57
- package/test/cypress/node_modules/extract-zip/node_modules/debug/README.md +0 -455
- package/test/cypress/node_modules/extsprintf/README.md +0 -46
- package/test/cypress/node_modules/fd-slicer/README.md +0 -199
- package/test/cypress/node_modules/figures/README.md +0 -139
- package/test/cypress/node_modules/forever-agent/README.md +0 -4
- package/test/cypress/node_modules/form-data/README.md +0 -234
- package/test/cypress/node_modules/fs-extra/README.md +0 -264
- package/test/cypress/node_modules/fs.realpath/README.md +0 -33
- package/test/cypress/node_modules/get-stream/README.md +0 -124
- package/test/cypress/node_modules/getos/README.md +0 -79
- package/test/cypress/node_modules/getpass/README.md +0 -32
- package/test/cypress/node_modules/glob/README.md +0 -375
- package/test/cypress/node_modules/global-dirs/README.md +0 -72
- package/test/cypress/node_modules/graceful-fs/README.md +0 -133
- package/test/cypress/node_modules/has-flag/README.md +0 -89
- package/test/cypress/node_modules/http-signature/README.md +0 -80
- package/test/cypress/node_modules/human-signals/README.md +0 -155
- package/test/cypress/node_modules/ieee754/README.md +0 -51
- package/test/cypress/node_modules/indent-string/README.md +0 -70
- package/test/cypress/node_modules/inflight/README.md +0 -37
- package/test/cypress/node_modules/inherits/README.md +0 -42
- package/test/cypress/node_modules/ini/README.md +0 -102
- package/test/cypress/node_modules/is-ci/README.md +0 -50
- package/test/cypress/node_modules/is-fullwidth-code-point/README.md +0 -39
- package/test/cypress/node_modules/is-installed-globally/README.md +0 -31
- package/test/cypress/node_modules/is-path-inside/README.md +0 -63
- package/test/cypress/node_modules/is-stream/README.md +0 -57
- package/test/cypress/node_modules/is-typedarray/README.md +0 -16
- package/test/cypress/node_modules/isexe/README.md +0 -51
- package/test/cypress/node_modules/isstream/README.md +0 -66
- package/test/cypress/node_modules/jsbn/README.md +0 -175
- package/test/cypress/node_modules/json-schema/README.md +0 -3
- package/test/cypress/node_modules/json-stringify-safe/README.md +0 -52
- package/test/cypress/node_modules/jsonfile/README.md +0 -205
- package/test/cypress/node_modules/jsonfile/node_modules/universalify/README.md +0 -76
- package/test/cypress/node_modules/jsprim/README.md +0 -287
- package/test/cypress/node_modules/lazy-ass/README.md +0 -269
- package/test/cypress/node_modules/listr2/README.md +0 -17
- package/test/cypress/node_modules/lodash/README.md +0 -39
- package/test/cypress/node_modules/lodash.once/README.md +0 -18
- package/test/cypress/node_modules/log-symbols/README.md +0 -51
- package/test/cypress/node_modules/log-update/README.md +0 -97
- package/test/cypress/node_modules/log-update/node_modules/slice-ansi/README.md +0 -66
- package/test/cypress/node_modules/log-update/node_modules/wrap-ansi/README.md +0 -97
- package/test/cypress/node_modules/lru-cache/README.md +0 -166
- package/test/cypress/node_modules/merge-stream/README.md +0 -78
- package/test/cypress/node_modules/mime-db/README.md +0 -102
- package/test/cypress/node_modules/mime-types/README.md +0 -123
- package/test/cypress/node_modules/mimic-fn/README.md +0 -69
- package/test/cypress/node_modules/minimatch/README.md +0 -209
- package/test/cypress/node_modules/ms/README.md +0 -60
- package/test/cypress/node_modules/npm-run-path/README.md +0 -115
- package/test/cypress/node_modules/once/README.md +0 -79
- package/test/cypress/node_modules/onetime/README.md +0 -94
- package/test/cypress/node_modules/ospath/README.md +0 -53
- package/test/cypress/node_modules/p-map/README.md +0 -89
- package/test/cypress/node_modules/path-is-absolute/README.md +0 -59
- package/test/cypress/node_modules/path-key/README.md +0 -61
- package/test/cypress/node_modules/pend/README.md +0 -41
- package/test/cypress/node_modules/performance-now/README.md +0 -30
- package/test/cypress/node_modules/pify/README.md +0 -119
- package/test/cypress/node_modules/pretty-bytes/README.md +0 -131
- package/test/cypress/node_modules/proxy-from-env/README.md +0 -131
- package/test/cypress/node_modules/psl/README.md +0 -215
- package/test/cypress/node_modules/pump/README.md +0 -65
- package/test/cypress/node_modules/punycode/README.md +0 -122
- package/test/cypress/node_modules/qs/README.md +0 -510
- package/test/cypress/node_modules/request-progress/README.md +0 -78
- package/test/cypress/node_modules/restore-cursor/README.md +0 -26
- package/test/cypress/node_modules/rimraf/README.md +0 -101
- package/test/cypress/node_modules/rxjs/README.md +0 -147
- package/test/cypress/node_modules/rxjs/_esm2015/README.md +0 -147
- package/test/cypress/node_modules/rxjs/_esm5/README.md +0 -147
- package/test/cypress/node_modules/rxjs/src/README.md +0 -147
- package/test/cypress/node_modules/safe-buffer/README.md +0 -584
- package/test/cypress/node_modules/safer-buffer/README.md +0 -156
- package/test/cypress/node_modules/semver/README.md +0 -566
- package/test/cypress/node_modules/shebang-command/README.md +0 -34
- package/test/cypress/node_modules/shebang-regex/README.md +0 -33
- package/test/cypress/node_modules/signal-exit/README.md +0 -39
- package/test/cypress/node_modules/slice-ansi/README.md +0 -72
- package/test/cypress/node_modules/sshpk/README.md +0 -804
- package/test/cypress/node_modules/string-width/README.md +0 -50
- package/test/cypress/node_modules/strip-ansi/README.md +0 -46
- package/test/cypress/node_modules/strip-final-newline/README.md +0 -30
- package/test/cypress/node_modules/supports-color/README.md +0 -77
- package/test/cypress/node_modules/throttleit/README.md +0 -32
- package/test/cypress/node_modules/tmp/README.md +0 -365
- package/test/cypress/node_modules/tough-cookie/README.md +0 -527
- package/test/cypress/node_modules/tslib/README.md +0 -142
- package/test/cypress/node_modules/tunnel-agent/README.md +0 -4
- package/test/cypress/node_modules/tweetnacl/README.md +0 -459
- package/test/cypress/node_modules/type-fest/README.md +0 -760
- package/test/cypress/node_modules/universalify/README.md +0 -76
- package/test/cypress/node_modules/untildify/README.md +0 -30
- package/test/cypress/node_modules/uuid/README.md +0 -505
- package/test/cypress/node_modules/verror/README.md +0 -528
- package/test/cypress/node_modules/verror/node_modules/extsprintf/README.md +0 -46
- package/test/cypress/node_modules/which/README.md +0 -54
- package/test/cypress/node_modules/wrap-ansi/README.md +0 -91
- package/test/cypress/node_modules/wrappy/README.md +0 -36
- package/test/cypress/node_modules/yallist/README.md +0 -204
- package/test/cypress/node_modules/yauzl/README.md +0 -658
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
class Constants {
|
|
2
|
+
// English Locale texts when using only 1 Locale instead of I18N
|
|
3
|
+
static locales = {
|
|
4
|
+
TEXT_ALL_SELECTED: 'All Selected',
|
|
5
|
+
TEXT_ALL_X_RECORDS_SELECTED: 'All {{x}} records selected',
|
|
6
|
+
TEXT_APPLY_MASS_UPDATE: 'Apply Mass Update',
|
|
7
|
+
TEXT_APPLY_TO_SELECTION: 'Update Selection',
|
|
8
|
+
TEXT_CANCEL: 'Cancel',
|
|
9
|
+
TEXT_CLEAR_ALL_FILTERS: 'Clear all Filters',
|
|
10
|
+
TEXT_CLEAR_ALL_GROUPING: 'Clear all Grouping',
|
|
11
|
+
TEXT_CLEAR_ALL_SORTING: 'Clear all Sorting',
|
|
12
|
+
TEXT_CLEAR_PINNING: 'Unfreeze Columns/Rows',
|
|
13
|
+
TEXT_CLONE: 'Clone',
|
|
14
|
+
TEXT_COLLAPSE_ALL_GROUPS: 'Collapse all Groups',
|
|
15
|
+
TEXT_CONTAINS: 'Contains',
|
|
16
|
+
TEXT_COLUMNS: 'Columns',
|
|
17
|
+
TEXT_COLUMN_RESIZE_BY_CONTENT: 'Resize by Content',
|
|
18
|
+
TEXT_COMMANDS: 'Commands',
|
|
19
|
+
TEXT_COPY: 'Copy',
|
|
20
|
+
TEXT_EQUALS: 'Equals',
|
|
21
|
+
TEXT_EQUAL_TO: 'Equal to',
|
|
22
|
+
TEXT_ENDS_WITH: 'Ends With',
|
|
23
|
+
TEXT_ERROR_EDITABLE_GRID_REQUIRED: 'Your grid must be editable in order to use the Composite Editor Modal.',
|
|
24
|
+
TEXT_ERROR_ENABLE_CELL_NAVIGATION_REQUIRED: 'Composite Editor requires the flag "enableCellNavigation" to be set to True in your Grid Options.',
|
|
25
|
+
TEXT_ERROR_NO_CHANGES_DETECTED: 'Sorry we could not detect any changes.',
|
|
26
|
+
TEXT_ERROR_NO_EDITOR_FOUND: 'We could not find any Editor in your Column Definition.',
|
|
27
|
+
TEXT_ERROR_NO_RECORD_FOUND: 'No records selected for edit or clone operation.',
|
|
28
|
+
TEXT_ERROR_ROW_NOT_EDITABLE: 'Current row is not editable.',
|
|
29
|
+
TEXT_ERROR_ROW_SELECTION_REQUIRED: 'You must select some rows before trying to apply new value(s).',
|
|
30
|
+
TEXT_EXPAND_ALL_GROUPS: 'Expand all Groups',
|
|
31
|
+
TEXT_EXPORT_TO_CSV: 'Export in CSV format',
|
|
32
|
+
TEXT_EXPORT_TO_TEXT_FORMAT: 'Export in Text format (Tab delimited)',
|
|
33
|
+
TEXT_EXPORT_TO_EXCEL: 'Export to Excel',
|
|
34
|
+
TEXT_EXPORT_TO_TAB_DELIMITED: 'Export in Text format (Tab delimited)',
|
|
35
|
+
TEXT_FORCE_FIT_COLUMNS: 'Force fit columns',
|
|
36
|
+
TEXT_FREEZE_COLUMNS: 'Freeze Columns',
|
|
37
|
+
TEXT_GREATER_THAN: 'Greater than',
|
|
38
|
+
TEXT_GREATER_THAN_OR_EQUAL_TO: 'Greater than or equal to',
|
|
39
|
+
TEXT_GROUP_BY: 'Group By',
|
|
40
|
+
TEXT_HIDE_COLUMN: 'Hide Column',
|
|
41
|
+
TEXT_ITEMS: 'items',
|
|
42
|
+
TEXT_ITEMS_PER_PAGE: 'items per page',
|
|
43
|
+
TEXT_ITEMS_SELECTED: 'items selected',
|
|
44
|
+
TEXT_OF: 'of',
|
|
45
|
+
TEXT_OK: 'OK',
|
|
46
|
+
TEXT_LAST_UPDATE: 'Last Update',
|
|
47
|
+
TEXT_LESS_THAN: 'Less than',
|
|
48
|
+
TEXT_LESS_THAN_OR_EQUAL_TO: 'Less than or equal to',
|
|
49
|
+
TEXT_NO_ELEMENTS_FOUND: 'Aucun élément trouvé',
|
|
50
|
+
TEXT_NOT_CONTAINS: 'Not contains',
|
|
51
|
+
TEXT_NOT_EQUAL_TO: 'Not equal to',
|
|
52
|
+
TEXT_PAGE: 'Page',
|
|
53
|
+
TEXT_REFRESH_DATASET: 'Refresh Dataset',
|
|
54
|
+
TEXT_REMOVE_FILTER: 'Remove Filter',
|
|
55
|
+
TEXT_REMOVE_SORT: 'Remove Sort',
|
|
56
|
+
TEXT_SAVE: 'Save',
|
|
57
|
+
TEXT_SELECT_ALL: 'Select All',
|
|
58
|
+
TEXT_SYNCHRONOUS_RESIZE: 'Synchronous resize',
|
|
59
|
+
TEXT_SORT_ASCENDING: 'Sort Ascending',
|
|
60
|
+
TEXT_SORT_DESCENDING: 'Sort Descending',
|
|
61
|
+
TEXT_STARTS_WITH: 'Starts With',
|
|
62
|
+
TEXT_TOGGLE_FILTER_ROW: 'Toggle Filter Row',
|
|
63
|
+
TEXT_TOGGLE_PRE_HEADER_ROW: 'Toggle Pre-Header Row',
|
|
64
|
+
TEXT_X_OF_Y_SELECTED: '# of % selected',
|
|
65
|
+
TEXT_X_OF_Y_MASS_SELECTED: '{{x}} of {{y}} selected',
|
|
66
|
+
};
|
|
67
|
+
static treeDataProperties = {
|
|
68
|
+
CHILDREN_PROP: 'children',
|
|
69
|
+
COLLAPSED_PROP: '__collapsed',
|
|
70
|
+
HAS_CHILDREN_PROP: '__hasChildren',
|
|
71
|
+
TREE_LEVEL_PROP: '__treeLevel',
|
|
72
|
+
PARENT_PROP: '__parentId',
|
|
73
|
+
};
|
|
74
|
+
// some Validation default texts
|
|
75
|
+
static VALIDATION_REQUIRED_FIELD = 'Field is required';
|
|
76
|
+
static VALIDATION_EDITOR_VALID_NUMBER = 'Please enter a valid number';
|
|
77
|
+
static VALIDATION_EDITOR_VALID_INTEGER = 'Please enter a valid integer number';
|
|
78
|
+
static VALIDATION_EDITOR_INTEGER_BETWEEN = 'Please enter a valid integer number between {{minValue}} and {{maxValue}}';
|
|
79
|
+
static VALIDATION_EDITOR_INTEGER_MAX = 'Please enter a valid integer number that is lower than {{maxValue}}';
|
|
80
|
+
static VALIDATION_EDITOR_INTEGER_MAX_INCLUSIVE = 'Please enter a valid integer number that is lower than or equal to {{maxValue}}';
|
|
81
|
+
static VALIDATION_EDITOR_INTEGER_MIN = 'Please enter a valid integer number that is greater than {{minValue}}';
|
|
82
|
+
static VALIDATION_EDITOR_INTEGER_MIN_INCLUSIVE = 'Please enter a valid integer number that is greater than or equal to {{minValue}}';
|
|
83
|
+
static VALIDATION_EDITOR_NUMBER_BETWEEN = 'Please enter a valid number between {{minValue}} and {{maxValue}}';
|
|
84
|
+
static VALIDATION_EDITOR_NUMBER_MAX = 'Please enter a valid number that is lower than {{maxValue}}';
|
|
85
|
+
static VALIDATION_EDITOR_NUMBER_MAX_INCLUSIVE = 'Please enter a valid number that is lower than or equal to {{maxValue}}';
|
|
86
|
+
static VALIDATION_EDITOR_NUMBER_MIN = 'Please enter a valid number that is greater than {{minValue}}';
|
|
87
|
+
static VALIDATION_EDITOR_NUMBER_MIN_INCLUSIVE = 'Please enter a valid number that is greater than or equal to {{minValue}}';
|
|
88
|
+
static VALIDATION_EDITOR_DECIMAL_BETWEEN = 'Please enter a valid number with a maximum of {{maxDecimal}} decimals';
|
|
89
|
+
static VALIDATION_EDITOR_TEXT_LENGTH_BETWEEN = 'Please make sure your text length is between {{minLength}} and {{maxLength}} characters';
|
|
90
|
+
static VALIDATION_EDITOR_TEXT_MAX_LENGTH = 'Please make sure your text is less than {{maxLength}} characters';
|
|
91
|
+
static VALIDATION_EDITOR_TEXT_MAX_LENGTH_INCLUSIVE = 'Please make sure your text is less than or equal to {{maxLength}} characters';
|
|
92
|
+
static VALIDATION_EDITOR_TEXT_MIN_LENGTH = 'Please make sure your text is more than {{minLength}} character(s)';
|
|
93
|
+
static VALIDATION_EDITOR_TEXT_MIN_LENGTH_INCLUSIVE = 'Please make sure your text is at least {{minLength}} character(s)';
|
|
94
|
+
}
|
|
95
|
+
export { Constants };
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2FuZ3VsYXItc2xpY2tncmlkL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFhLFNBQVM7SUFDcEIsZ0VBQWdFO0lBQ2hFLE1BQU0sQ0FBVSxPQUFPLEdBQVc7UUFDaEMsaUJBQWlCLEVBQUUsY0FBYztRQUNqQywyQkFBMkIsRUFBRSw0QkFBNEI7UUFDekQsc0JBQXNCLEVBQUUsbUJBQW1CO1FBQzNDLHVCQUF1QixFQUFFLGtCQUFrQjtRQUMzQyxXQUFXLEVBQUUsUUFBUTtRQUNyQixzQkFBc0IsRUFBRSxtQkFBbUI7UUFDM0MsdUJBQXVCLEVBQUUsb0JBQW9CO1FBQzdDLHNCQUFzQixFQUFFLG1CQUFtQjtRQUMzQyxrQkFBa0IsRUFBRSx1QkFBdUI7UUFDM0MsVUFBVSxFQUFFLE9BQU87UUFDbkIsd0JBQXdCLEVBQUUscUJBQXFCO1FBQy9DLGFBQWEsRUFBRSxVQUFVO1FBQ3pCLFlBQVksRUFBRSxTQUFTO1FBQ3ZCLDZCQUE2QixFQUFFLG1CQUFtQjtRQUNsRCxhQUFhLEVBQUUsVUFBVTtRQUN6QixTQUFTLEVBQUUsTUFBTTtRQUNqQixXQUFXLEVBQUUsUUFBUTtRQUNyQixhQUFhLEVBQUUsVUFBVTtRQUN6QixjQUFjLEVBQUUsV0FBVztRQUMzQixpQ0FBaUMsRUFBRSx3RUFBd0U7UUFDM0csMENBQTBDLEVBQUUsbUdBQW1HO1FBQy9JLDhCQUE4QixFQUFFLHdDQUF3QztRQUN4RSwwQkFBMEIsRUFBRSx5REFBeUQ7UUFDckYsMEJBQTBCLEVBQUUsa0RBQWtEO1FBQzlFLDJCQUEyQixFQUFFLDhCQUE4QjtRQUMzRCxpQ0FBaUMsRUFBRSxnRUFBZ0U7UUFDbkcsc0JBQXNCLEVBQUUsbUJBQW1CO1FBQzNDLGtCQUFrQixFQUFFLHNCQUFzQjtRQUMxQywwQkFBMEIsRUFBRSx1Q0FBdUM7UUFDbkUsb0JBQW9CLEVBQUUsaUJBQWlCO1FBQ3ZDLDRCQUE0QixFQUFFLHVDQUF1QztRQUNyRSxzQkFBc0IsRUFBRSxtQkFBbUI7UUFDM0MsbUJBQW1CLEVBQUUsZ0JBQWdCO1FBQ3JDLGlCQUFpQixFQUFFLGNBQWM7UUFDakMsNkJBQTZCLEVBQUUsMEJBQTBCO1FBQ3pELGFBQWEsRUFBRSxVQUFVO1FBQ3pCLGdCQUFnQixFQUFFLGFBQWE7UUFDL0IsVUFBVSxFQUFFLE9BQU87UUFDbkIsbUJBQW1CLEVBQUUsZ0JBQWdCO1FBQ3JDLG1CQUFtQixFQUFFLGdCQUFnQjtRQUNyQyxPQUFPLEVBQUUsSUFBSTtRQUNiLE9BQU8sRUFBRSxJQUFJO1FBQ2IsZ0JBQWdCLEVBQUUsYUFBYTtRQUMvQixjQUFjLEVBQUUsV0FBVztRQUMzQiwwQkFBMEIsRUFBRSx1QkFBdUI7UUFDbkQsc0JBQXNCLEVBQUUsc0JBQXNCO1FBQzlDLGlCQUFpQixFQUFFLGNBQWM7UUFDakMsaUJBQWlCLEVBQUUsY0FBYztRQUNqQyxTQUFTLEVBQUUsTUFBTTtRQUNqQixvQkFBb0IsRUFBRSxpQkFBaUI7UUFDdkMsa0JBQWtCLEVBQUUsZUFBZTtRQUNuQyxnQkFBZ0IsRUFBRSxhQUFhO1FBQy9CLFNBQVMsRUFBRSxNQUFNO1FBQ2pCLGVBQWUsRUFBRSxZQUFZO1FBQzdCLHVCQUF1QixFQUFFLG9CQUFvQjtRQUM3QyxtQkFBbUIsRUFBRSxnQkFBZ0I7UUFDckMsb0JBQW9CLEVBQUUsaUJBQWlCO1FBQ3ZDLGdCQUFnQixFQUFFLGFBQWE7UUFDL0Isc0JBQXNCLEVBQUUsbUJBQW1CO1FBQzNDLDBCQUEwQixFQUFFLHVCQUF1QjtRQUNuRCxvQkFBb0IsRUFBRSxpQkFBaUI7UUFDdkMseUJBQXlCLEVBQUUseUJBQXlCO0tBQ3JELENBQUM7SUFFRixNQUFNLENBQVUsa0JBQWtCLEdBQUc7UUFDbkMsYUFBYSxFQUFFLFVBQVU7UUFDekIsY0FBYyxFQUFFLGFBQWE7UUFDN0IsaUJBQWlCLEVBQUUsZUFBZTtRQUNsQyxlQUFlLEVBQUUsYUFBYTtRQUM5QixXQUFXLEVBQUUsWUFBWTtLQUMxQixDQUFDO0lBRUYsZ0NBQWdDO0lBQ2hDLE1BQU0sQ0FBVSx5QkFBeUIsR0FBRyxtQkFBbUIsQ0FBQztJQUNoRSxNQUFNLENBQVUsOEJBQThCLEdBQUcsNkJBQTZCLENBQUM7SUFDL0UsTUFBTSxDQUFVLCtCQUErQixHQUFHLHFDQUFxQyxDQUFDO0lBQ3hGLE1BQU0sQ0FBVSxpQ0FBaUMsR0FBRywyRUFBMkUsQ0FBQztJQUNoSSxNQUFNLENBQVUsNkJBQTZCLEdBQUcscUVBQXFFLENBQUM7SUFDdEgsTUFBTSxDQUFVLHVDQUF1QyxHQUFHLGlGQUFpRixDQUFDO0lBQzVJLE1BQU0sQ0FBVSw2QkFBNkIsR0FBRyx1RUFBdUUsQ0FBQztJQUN4SCxNQUFNLENBQVUsdUNBQXVDLEdBQUcsbUZBQW1GLENBQUM7SUFDOUksTUFBTSxDQUFVLGdDQUFnQyxHQUFHLG1FQUFtRSxDQUFDO0lBQ3ZILE1BQU0sQ0FBVSw0QkFBNEIsR0FBRyw2REFBNkQsQ0FBQztJQUM3RyxNQUFNLENBQVUsc0NBQXNDLEdBQUcseUVBQXlFLENBQUM7SUFDbkksTUFBTSxDQUFVLDRCQUE0QixHQUFHLCtEQUErRCxDQUFDO0lBQy9HLE1BQU0sQ0FBVSxzQ0FBc0MsR0FBRywyRUFBMkUsQ0FBQztJQUNySSxNQUFNLENBQVUsaUNBQWlDLEdBQUcsdUVBQXVFLENBQUM7SUFDNUgsTUFBTSxDQUFVLHFDQUFxQyxHQUFHLHlGQUF5RixDQUFDO0lBQ2xKLE1BQU0sQ0FBVSxpQ0FBaUMsR0FBRyxrRUFBa0UsQ0FBQztJQUN2SCxNQUFNLENBQVUsMkNBQTJDLEdBQUcsOEVBQThFLENBQUM7SUFDN0ksTUFBTSxDQUFVLGlDQUFpQyxHQUFHLG9FQUFvRSxDQUFDO0lBQ3pILE1BQU0sQ0FBVSwyQ0FBMkMsR0FBRyxtRUFBbUUsQ0FBQzs7U0E5RnZILFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhbGUgfSBmcm9tICdAc2xpY2tncmlkLXVuaXZlcnNhbC9jb21tb24nO1xuXG5leHBvcnQgY2xhc3MgQ29uc3RhbnRzIHtcbiAgLy8gRW5nbGlzaCBMb2NhbGUgdGV4dHMgd2hlbiB1c2luZyBvbmx5IDEgTG9jYWxlIGluc3RlYWQgb2YgSTE4TlxuICBzdGF0aWMgcmVhZG9ubHkgbG9jYWxlczogTG9jYWxlID0ge1xuICAgIFRFWFRfQUxMX1NFTEVDVEVEOiAnQWxsIFNlbGVjdGVkJyxcbiAgICBURVhUX0FMTF9YX1JFQ09SRFNfU0VMRUNURUQ6ICdBbGwge3t4fX0gcmVjb3JkcyBzZWxlY3RlZCcsXG4gICAgVEVYVF9BUFBMWV9NQVNTX1VQREFURTogJ0FwcGx5IE1hc3MgVXBkYXRlJyxcbiAgICBURVhUX0FQUExZX1RPX1NFTEVDVElPTjogJ1VwZGF0ZSBTZWxlY3Rpb24nLFxuICAgIFRFWFRfQ0FOQ0VMOiAnQ2FuY2VsJyxcbiAgICBURVhUX0NMRUFSX0FMTF9GSUxURVJTOiAnQ2xlYXIgYWxsIEZpbHRlcnMnLFxuICAgIFRFWFRfQ0xFQVJfQUxMX0dST1VQSU5HOiAnQ2xlYXIgYWxsIEdyb3VwaW5nJyxcbiAgICBURVhUX0NMRUFSX0FMTF9TT1JUSU5HOiAnQ2xlYXIgYWxsIFNvcnRpbmcnLFxuICAgIFRFWFRfQ0xFQVJfUElOTklORzogJ1VuZnJlZXplIENvbHVtbnMvUm93cycsXG4gICAgVEVYVF9DTE9ORTogJ0Nsb25lJyxcbiAgICBURVhUX0NPTExBUFNFX0FMTF9HUk9VUFM6ICdDb2xsYXBzZSBhbGwgR3JvdXBzJyxcbiAgICBURVhUX0NPTlRBSU5TOiAnQ29udGFpbnMnLFxuICAgIFRFWFRfQ09MVU1OUzogJ0NvbHVtbnMnLFxuICAgIFRFWFRfQ09MVU1OX1JFU0laRV9CWV9DT05URU5UOiAnUmVzaXplIGJ5IENvbnRlbnQnLFxuICAgIFRFWFRfQ09NTUFORFM6ICdDb21tYW5kcycsXG4gICAgVEVYVF9DT1BZOiAnQ29weScsXG4gICAgVEVYVF9FUVVBTFM6ICdFcXVhbHMnLFxuICAgIFRFWFRfRVFVQUxfVE86ICdFcXVhbCB0bycsXG4gICAgVEVYVF9FTkRTX1dJVEg6ICdFbmRzIFdpdGgnLFxuICAgIFRFWFRfRVJST1JfRURJVEFCTEVfR1JJRF9SRVFVSVJFRDogJ1lvdXIgZ3JpZCBtdXN0IGJlIGVkaXRhYmxlIGluIG9yZGVyIHRvIHVzZSB0aGUgQ29tcG9zaXRlIEVkaXRvciBNb2RhbC4nLFxuICAgIFRFWFRfRVJST1JfRU5BQkxFX0NFTExfTkFWSUdBVElPTl9SRVFVSVJFRDogJ0NvbXBvc2l0ZSBFZGl0b3IgcmVxdWlyZXMgdGhlIGZsYWcgXCJlbmFibGVDZWxsTmF2aWdhdGlvblwiIHRvIGJlIHNldCB0byBUcnVlIGluIHlvdXIgR3JpZCBPcHRpb25zLicsXG4gICAgVEVYVF9FUlJPUl9OT19DSEFOR0VTX0RFVEVDVEVEOiAnU29ycnkgd2UgY291bGQgbm90IGRldGVjdCBhbnkgY2hhbmdlcy4nLFxuICAgIFRFWFRfRVJST1JfTk9fRURJVE9SX0ZPVU5EOiAnV2UgY291bGQgbm90IGZpbmQgYW55IEVkaXRvciBpbiB5b3VyIENvbHVtbiBEZWZpbml0aW9uLicsXG4gICAgVEVYVF9FUlJPUl9OT19SRUNPUkRfRk9VTkQ6ICdObyByZWNvcmRzIHNlbGVjdGVkIGZvciBlZGl0IG9yIGNsb25lIG9wZXJhdGlvbi4nLFxuICAgIFRFWFRfRVJST1JfUk9XX05PVF9FRElUQUJMRTogJ0N1cnJlbnQgcm93IGlzIG5vdCBlZGl0YWJsZS4nLFxuICAgIFRFWFRfRVJST1JfUk9XX1NFTEVDVElPTl9SRVFVSVJFRDogJ1lvdSBtdXN0IHNlbGVjdCBzb21lIHJvd3MgYmVmb3JlIHRyeWluZyB0byBhcHBseSBuZXcgdmFsdWUocykuJyxcbiAgICBURVhUX0VYUEFORF9BTExfR1JPVVBTOiAnRXhwYW5kIGFsbCBHcm91cHMnLFxuICAgIFRFWFRfRVhQT1JUX1RPX0NTVjogJ0V4cG9ydCBpbiBDU1YgZm9ybWF0JyxcbiAgICBURVhUX0VYUE9SVF9UT19URVhUX0ZPUk1BVDogJ0V4cG9ydCBpbiBUZXh0IGZvcm1hdCAoVGFiIGRlbGltaXRlZCknLFxuICAgIFRFWFRfRVhQT1JUX1RPX0VYQ0VMOiAnRXhwb3J0IHRvIEV4Y2VsJyxcbiAgICBURVhUX0VYUE9SVF9UT19UQUJfREVMSU1JVEVEOiAnRXhwb3J0IGluIFRleHQgZm9ybWF0IChUYWIgZGVsaW1pdGVkKScsXG4gICAgVEVYVF9GT1JDRV9GSVRfQ09MVU1OUzogJ0ZvcmNlIGZpdCBjb2x1bW5zJyxcbiAgICBURVhUX0ZSRUVaRV9DT0xVTU5TOiAnRnJlZXplIENvbHVtbnMnLFxuICAgIFRFWFRfR1JFQVRFUl9USEFOOiAnR3JlYXRlciB0aGFuJyxcbiAgICBURVhUX0dSRUFURVJfVEhBTl9PUl9FUVVBTF9UTzogJ0dyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bycsXG4gICAgVEVYVF9HUk9VUF9CWTogJ0dyb3VwIEJ5JyxcbiAgICBURVhUX0hJREVfQ09MVU1OOiAnSGlkZSBDb2x1bW4nLFxuICAgIFRFWFRfSVRFTVM6ICdpdGVtcycsXG4gICAgVEVYVF9JVEVNU19QRVJfUEFHRTogJ2l0ZW1zIHBlciBwYWdlJyxcbiAgICBURVhUX0lURU1TX1NFTEVDVEVEOiAnaXRlbXMgc2VsZWN0ZWQnLFxuICAgIFRFWFRfT0Y6ICdvZicsXG4gICAgVEVYVF9PSzogJ09LJyxcbiAgICBURVhUX0xBU1RfVVBEQVRFOiAnTGFzdCBVcGRhdGUnLFxuICAgIFRFWFRfTEVTU19USEFOOiAnTGVzcyB0aGFuJyxcbiAgICBURVhUX0xFU1NfVEhBTl9PUl9FUVVBTF9UTzogJ0xlc3MgdGhhbiBvciBlcXVhbCB0bycsXG4gICAgVEVYVF9OT19FTEVNRU5UU19GT1VORDogJ0F1Y3VuIMOpbMOpbWVudCB0cm91dsOpJyxcbiAgICBURVhUX05PVF9DT05UQUlOUzogJ05vdCBjb250YWlucycsXG4gICAgVEVYVF9OT1RfRVFVQUxfVE86ICdOb3QgZXF1YWwgdG8nLFxuICAgIFRFWFRfUEFHRTogJ1BhZ2UnLFxuICAgIFRFWFRfUkVGUkVTSF9EQVRBU0VUOiAnUmVmcmVzaCBEYXRhc2V0JyxcbiAgICBURVhUX1JFTU9WRV9GSUxURVI6ICdSZW1vdmUgRmlsdGVyJyxcbiAgICBURVhUX1JFTU9WRV9TT1JUOiAnUmVtb3ZlIFNvcnQnLFxuICAgIFRFWFRfU0FWRTogJ1NhdmUnLFxuICAgIFRFWFRfU0VMRUNUX0FMTDogJ1NlbGVjdCBBbGwnLFxuICAgIFRFWFRfU1lOQ0hST05PVVNfUkVTSVpFOiAnU3luY2hyb25vdXMgcmVzaXplJyxcbiAgICBURVhUX1NPUlRfQVNDRU5ESU5HOiAnU29ydCBBc2NlbmRpbmcnLFxuICAgIFRFWFRfU09SVF9ERVNDRU5ESU5HOiAnU29ydCBEZXNjZW5kaW5nJyxcbiAgICBURVhUX1NUQVJUU19XSVRIOiAnU3RhcnRzIFdpdGgnLFxuICAgIFRFWFRfVE9HR0xFX0ZJTFRFUl9ST1c6ICdUb2dnbGUgRmlsdGVyIFJvdycsXG4gICAgVEVYVF9UT0dHTEVfUFJFX0hFQURFUl9ST1c6ICdUb2dnbGUgUHJlLUhlYWRlciBSb3cnLFxuICAgIFRFWFRfWF9PRl9ZX1NFTEVDVEVEOiAnIyBvZiAlIHNlbGVjdGVkJyxcbiAgICBURVhUX1hfT0ZfWV9NQVNTX1NFTEVDVEVEOiAne3t4fX0gb2Yge3t5fX0gc2VsZWN0ZWQnLFxuICB9O1xuXG4gIHN0YXRpYyByZWFkb25seSB0cmVlRGF0YVByb3BlcnRpZXMgPSB7XG4gICAgQ0hJTERSRU5fUFJPUDogJ2NoaWxkcmVuJyxcbiAgICBDT0xMQVBTRURfUFJPUDogJ19fY29sbGFwc2VkJyxcbiAgICBIQVNfQ0hJTERSRU5fUFJPUDogJ19faGFzQ2hpbGRyZW4nLFxuICAgIFRSRUVfTEVWRUxfUFJPUDogJ19fdHJlZUxldmVsJyxcbiAgICBQQVJFTlRfUFJPUDogJ19fcGFyZW50SWQnLFxuICB9O1xuXG4gIC8vIHNvbWUgVmFsaWRhdGlvbiBkZWZhdWx0IHRleHRzXG4gIHN0YXRpYyByZWFkb25seSBWQUxJREFUSU9OX1JFUVVJUkVEX0ZJRUxEID0gJ0ZpZWxkIGlzIHJlcXVpcmVkJztcbiAgc3RhdGljIHJlYWRvbmx5IFZBTElEQVRJT05fRURJVE9SX1ZBTElEX05VTUJFUiA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBudW1iZXInO1xuICBzdGF0aWMgcmVhZG9ubHkgVkFMSURBVElPTl9FRElUT1JfVkFMSURfSU5URUdFUiA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBpbnRlZ2VyIG51bWJlcic7XG4gIHN0YXRpYyByZWFkb25seSBWQUxJREFUSU9OX0VESVRPUl9JTlRFR0VSX0JFVFdFRU4gPSAnUGxlYXNlIGVudGVyIGEgdmFsaWQgaW50ZWdlciBudW1iZXIgYmV0d2VlbiB7e21pblZhbHVlfX0gYW5kIHt7bWF4VmFsdWV9fSc7XG4gIHN0YXRpYyByZWFkb25seSBWQUxJREFUSU9OX0VESVRPUl9JTlRFR0VSX01BWCA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBpbnRlZ2VyIG51bWJlciB0aGF0IGlzIGxvd2VyIHRoYW4ge3ttYXhWYWx1ZX19JztcbiAgc3RhdGljIHJlYWRvbmx5IFZBTElEQVRJT05fRURJVE9SX0lOVEVHRVJfTUFYX0lOQ0xVU0lWRSA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBpbnRlZ2VyIG51bWJlciB0aGF0IGlzIGxvd2VyIHRoYW4gb3IgZXF1YWwgdG8ge3ttYXhWYWx1ZX19JztcbiAgc3RhdGljIHJlYWRvbmx5IFZBTElEQVRJT05fRURJVE9SX0lOVEVHRVJfTUlOID0gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGludGVnZXIgbnVtYmVyIHRoYXQgaXMgZ3JlYXRlciB0aGFuIHt7bWluVmFsdWV9fSc7XG4gIHN0YXRpYyByZWFkb25seSBWQUxJREFUSU9OX0VESVRPUl9JTlRFR0VSX01JTl9JTkNMVVNJVkUgPSAnUGxlYXNlIGVudGVyIGEgdmFsaWQgaW50ZWdlciBudW1iZXIgdGhhdCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8ge3ttaW5WYWx1ZX19JztcbiAgc3RhdGljIHJlYWRvbmx5IFZBTElEQVRJT05fRURJVE9SX05VTUJFUl9CRVRXRUVOID0gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIG51bWJlciBiZXR3ZWVuIHt7bWluVmFsdWV9fSBhbmQge3ttYXhWYWx1ZX19JztcbiAgc3RhdGljIHJlYWRvbmx5IFZBTElEQVRJT05fRURJVE9SX05VTUJFUl9NQVggPSAnUGxlYXNlIGVudGVyIGEgdmFsaWQgbnVtYmVyIHRoYXQgaXMgbG93ZXIgdGhhbiB7e21heFZhbHVlfX0nO1xuICBzdGF0aWMgcmVhZG9ubHkgVkFMSURBVElPTl9FRElUT1JfTlVNQkVSX01BWF9JTkNMVVNJVkUgPSAnUGxlYXNlIGVudGVyIGEgdmFsaWQgbnVtYmVyIHRoYXQgaXMgbG93ZXIgdGhhbiBvciBlcXVhbCB0byB7e21heFZhbHVlfX0nO1xuICBzdGF0aWMgcmVhZG9ubHkgVkFMSURBVElPTl9FRElUT1JfTlVNQkVSX01JTiA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBudW1iZXIgdGhhdCBpcyBncmVhdGVyIHRoYW4ge3ttaW5WYWx1ZX19JztcbiAgc3RhdGljIHJlYWRvbmx5IFZBTElEQVRJT05fRURJVE9SX05VTUJFUl9NSU5fSU5DTFVTSVZFID0gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIG51bWJlciB0aGF0IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB7e21pblZhbHVlfX0nO1xuICBzdGF0aWMgcmVhZG9ubHkgVkFMSURBVElPTl9FRElUT1JfREVDSU1BTF9CRVRXRUVOID0gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIG51bWJlciB3aXRoIGEgbWF4aW11bSBvZiB7e21heERlY2ltYWx9fSBkZWNpbWFscyc7XG4gIHN0YXRpYyByZWFkb25seSBWQUxJREFUSU9OX0VESVRPUl9URVhUX0xFTkdUSF9CRVRXRUVOID0gJ1BsZWFzZSBtYWtlIHN1cmUgeW91ciB0ZXh0IGxlbmd0aCBpcyBiZXR3ZWVuIHt7bWluTGVuZ3RofX0gYW5kIHt7bWF4TGVuZ3RofX0gY2hhcmFjdGVycyc7XG4gIHN0YXRpYyByZWFkb25seSBWQUxJREFUSU9OX0VESVRPUl9URVhUX01BWF9MRU5HVEggPSAnUGxlYXNlIG1ha2Ugc3VyZSB5b3VyIHRleHQgaXMgbGVzcyB0aGFuIHt7bWF4TGVuZ3RofX0gY2hhcmFjdGVycyc7XG4gIHN0YXRpYyByZWFkb25seSBWQUxJREFUSU9OX0VESVRPUl9URVhUX01BWF9MRU5HVEhfSU5DTFVTSVZFID0gJ1BsZWFzZSBtYWtlIHN1cmUgeW91ciB0ZXh0IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB7e21heExlbmd0aH19IGNoYXJhY3RlcnMnO1xuICBzdGF0aWMgcmVhZG9ubHkgVkFMSURBVElPTl9FRElUT1JfVEVYVF9NSU5fTEVOR1RIID0gJ1BsZWFzZSBtYWtlIHN1cmUgeW91ciB0ZXh0IGlzIG1vcmUgdGhhbiB7e21pbkxlbmd0aH19IGNoYXJhY3RlcihzKSc7XG4gIHN0YXRpYyByZWFkb25seSBWQUxJREFUSU9OX0VESVRPUl9URVhUX01JTl9MRU5HVEhfSU5DTFVTSVZFID0gJ1BsZWFzZSBtYWtlIHN1cmUgeW91ciB0ZXh0IGlzIGF0IGxlYXN0IHt7bWluTGVuZ3RofX0gY2hhcmFjdGVyKHMpJztcbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './slickRowDetailView';
|
|
1
|
+
export * from './slickRowDetailView';
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvYW5ndWxhci1zbGlja2dyaWQvZXh0ZW5zaW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zbGlja1Jvd0RldGFpbFZpZXcnO1xuIl19
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import { addToArrayWhenNotExists, castObservableToPromise, SlickRowSelectionModel, unsubscribeAll, } from '@slickgrid-universal/common';
|
|
2
|
+
import { SlickRowDetailView as UniversalSlickRowDetailView } from '@slickgrid-universal/row-detail-view-plugin';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import * as DOMPurify from 'dompurify';
|
|
5
|
+
const ROW_DETAIL_CONTAINER_PREFIX = 'container_';
|
|
6
|
+
const PRELOAD_CONTAINER_PREFIX = 'container_loading';
|
|
7
|
+
export class SlickRowDetailView extends UniversalSlickRowDetailView {
|
|
8
|
+
angularUtilService;
|
|
9
|
+
appRef;
|
|
10
|
+
eventPubSubService;
|
|
11
|
+
gridContainerElement;
|
|
12
|
+
rxjs;
|
|
13
|
+
rowDetailContainer;
|
|
14
|
+
_preloadComponent;
|
|
15
|
+
_views = [];
|
|
16
|
+
_viewComponent;
|
|
17
|
+
_subscriptions = [];
|
|
18
|
+
_userProcessFn;
|
|
19
|
+
constructor(angularUtilService, appRef, eventPubSubService, gridContainerElement, rxjs) {
|
|
20
|
+
super(eventPubSubService);
|
|
21
|
+
this.angularUtilService = angularUtilService;
|
|
22
|
+
this.appRef = appRef;
|
|
23
|
+
this.eventPubSubService = eventPubSubService;
|
|
24
|
+
this.gridContainerElement = gridContainerElement;
|
|
25
|
+
this.rxjs = rxjs;
|
|
26
|
+
}
|
|
27
|
+
get addonOptions() {
|
|
28
|
+
return this.getOptions();
|
|
29
|
+
}
|
|
30
|
+
get datasetIdPropName() {
|
|
31
|
+
return this.gridOptions.datasetIdPropertyName || 'id';
|
|
32
|
+
}
|
|
33
|
+
get eventHandler() {
|
|
34
|
+
return this._eventHandler;
|
|
35
|
+
}
|
|
36
|
+
set eventHandler(eventHandler) {
|
|
37
|
+
this._eventHandler = eventHandler;
|
|
38
|
+
}
|
|
39
|
+
/** Getter for the Grid Options pulled through the Grid Object */
|
|
40
|
+
get gridOptions() {
|
|
41
|
+
return (this._grid?.getOptions() || {});
|
|
42
|
+
}
|
|
43
|
+
get rowDetailViewOptions() {
|
|
44
|
+
return this.gridOptions.rowDetailView;
|
|
45
|
+
}
|
|
46
|
+
addRxJsResource(rxjs) {
|
|
47
|
+
this.rxjs = rxjs;
|
|
48
|
+
}
|
|
49
|
+
/** Dispose of the RowDetailView Extension */
|
|
50
|
+
dispose() {
|
|
51
|
+
this.disposeAllViewComponents();
|
|
52
|
+
this._subscriptions = unsubscribeAll(this._subscriptions); // also unsubscribe all RxJS subscriptions
|
|
53
|
+
super.dispose();
|
|
54
|
+
}
|
|
55
|
+
/** Dispose of all the opened Row Detail Panels Angular View Components */
|
|
56
|
+
disposeAllViewComponents() {
|
|
57
|
+
this._views.forEach((compRef) => this.disposeViewComponent(compRef));
|
|
58
|
+
this._views = [];
|
|
59
|
+
}
|
|
60
|
+
/** Get the instance of the SlickGrid addon (control or plugin). */
|
|
61
|
+
getAddonInstance() {
|
|
62
|
+
return this;
|
|
63
|
+
}
|
|
64
|
+
init(grid) {
|
|
65
|
+
this._grid = grid;
|
|
66
|
+
super.init(this._grid);
|
|
67
|
+
this.register(grid?.getSelectionModel());
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Create the plugin before the Grid creation, else it will behave oddly.
|
|
71
|
+
* Mostly because the column definitions might change after the grid creation
|
|
72
|
+
*/
|
|
73
|
+
register(rowSelectionPlugin) {
|
|
74
|
+
if (typeof this.gridOptions.rowDetailView?.process === 'function') {
|
|
75
|
+
// we need to keep the user "process" method and replace it with our own execution method
|
|
76
|
+
// we do this because when we get the item detail, we need to call "onAsyncResponse.notify" for the plugin to work
|
|
77
|
+
this._userProcessFn = this.gridOptions.rowDetailView.process; // keep user's process method
|
|
78
|
+
this.addonOptions.process = (item) => this.onProcessing(item); // replace process method & run our internal one
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
throw new Error('[Angular-Slickgrid] You need to provide a "process" function for the Row Detail Extension to work properly');
|
|
82
|
+
}
|
|
83
|
+
if (this._grid && this.gridOptions?.rowDetailView) {
|
|
84
|
+
// load the Preload & RowDetail Templates (could be straight HTML or Angular View/ViewModel)
|
|
85
|
+
// when those are Angular View/ViewModel, we need to create View Component & provide the html containers to the Plugin (preTemplate/postTemplate methods)
|
|
86
|
+
if (!this.gridOptions.rowDetailView.preTemplate) {
|
|
87
|
+
this._preloadComponent = this.gridOptions?.rowDetailView?.preloadComponent;
|
|
88
|
+
this.addonOptions.preTemplate = () => DOMPurify.sanitize(`<div class="${PRELOAD_CONTAINER_PREFIX}"></div>`);
|
|
89
|
+
}
|
|
90
|
+
if (!this.gridOptions.rowDetailView.postTemplate) {
|
|
91
|
+
this._viewComponent = this.gridOptions?.rowDetailView?.viewComponent;
|
|
92
|
+
this.addonOptions.postTemplate = (itemDetail) => DOMPurify.sanitize(`<div class="${ROW_DETAIL_CONTAINER_PREFIX}${itemDetail[this.datasetIdPropName]}"></div>`);
|
|
93
|
+
}
|
|
94
|
+
// this also requires the Row Selection Model to be registered as well
|
|
95
|
+
if (!rowSelectionPlugin || !this._grid.getSelectionModel()) {
|
|
96
|
+
rowSelectionPlugin = new SlickRowSelectionModel(this.gridOptions.rowSelectionOptions || { selectActiveRow: true });
|
|
97
|
+
this._grid.setSelectionModel(rowSelectionPlugin);
|
|
98
|
+
}
|
|
99
|
+
// hook all events
|
|
100
|
+
if (this._grid && this.rowDetailViewOptions) {
|
|
101
|
+
if (this.rowDetailViewOptions.onExtensionRegistered) {
|
|
102
|
+
this.rowDetailViewOptions.onExtensionRegistered(this);
|
|
103
|
+
}
|
|
104
|
+
if (this.onAsyncResponse) {
|
|
105
|
+
this.eventHandler.subscribe(this.onAsyncResponse, (event, args) => {
|
|
106
|
+
if (this.rowDetailViewOptions && typeof this.rowDetailViewOptions.onAsyncResponse === 'function') {
|
|
107
|
+
this.rowDetailViewOptions.onAsyncResponse(event, args);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
if (this.onAsyncEndUpdate) {
|
|
112
|
+
this.eventHandler.subscribe(this.onAsyncEndUpdate, (e, args) => {
|
|
113
|
+
// triggers after backend called "onAsyncResponse.notify()"
|
|
114
|
+
this.renderViewModel(args?.item);
|
|
115
|
+
if (this.rowDetailViewOptions && typeof this.rowDetailViewOptions.onAsyncEndUpdate === 'function') {
|
|
116
|
+
this.rowDetailViewOptions.onAsyncEndUpdate(e, args);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
if (this.onAfterRowDetailToggle) {
|
|
121
|
+
this.eventHandler.subscribe(this.onAfterRowDetailToggle, (e, args) => {
|
|
122
|
+
// display preload template & re-render all the other Detail Views after toggling
|
|
123
|
+
// the preload View will eventually go away once the data gets loaded after the "onAsyncEndUpdate" event
|
|
124
|
+
this.renderPreloadView();
|
|
125
|
+
this.renderAllViewComponents();
|
|
126
|
+
if (this.rowDetailViewOptions && typeof this.rowDetailViewOptions.onAfterRowDetailToggle === 'function') {
|
|
127
|
+
this.rowDetailViewOptions.onAfterRowDetailToggle(e, args);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
if (this.onBeforeRowDetailToggle) {
|
|
132
|
+
this.eventHandler.subscribe(this.onBeforeRowDetailToggle, (e, args) => {
|
|
133
|
+
// before toggling row detail, we need to create View Component if it doesn't exist
|
|
134
|
+
this.handleOnBeforeRowDetailToggle(e, args);
|
|
135
|
+
if (this.rowDetailViewOptions && typeof this.rowDetailViewOptions.onBeforeRowDetailToggle === 'function') {
|
|
136
|
+
this.rowDetailViewOptions.onBeforeRowDetailToggle(e, args);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
if (this.onRowBackToViewportRange) {
|
|
141
|
+
this.eventHandler.subscribe(this.onRowBackToViewportRange, (e, args) => {
|
|
142
|
+
// when row is back to viewport range, we will re-render the View Component(s)
|
|
143
|
+
this.handleOnRowBackToViewportRange(e, args);
|
|
144
|
+
if (this.rowDetailViewOptions && typeof this.rowDetailViewOptions.onRowBackToViewportRange === 'function') {
|
|
145
|
+
this.rowDetailViewOptions.onRowBackToViewportRange(e, args);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
if (this.onRowOutOfViewportRange) {
|
|
150
|
+
this.eventHandler.subscribe(this.onRowOutOfViewportRange, (e, args) => {
|
|
151
|
+
if (this.rowDetailViewOptions && typeof this.rowDetailViewOptions.onRowOutOfViewportRange === 'function') {
|
|
152
|
+
this.rowDetailViewOptions.onRowOutOfViewportRange(e, args);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
// --
|
|
157
|
+
// hook some events needed by the Plugin itself
|
|
158
|
+
// we need to redraw the open detail views if we change column position (column reorder)
|
|
159
|
+
this.eventHandler.subscribe(this._grid.onColumnsReordered, this.redrawAllViewComponents.bind(this));
|
|
160
|
+
// on row selection changed, we also need to redraw
|
|
161
|
+
if (this.gridOptions.enableRowSelection || this.gridOptions.enableCheckboxSelector) {
|
|
162
|
+
this.eventHandler.subscribe(this._grid.onSelectedRowsChanged, this.redrawAllViewComponents.bind(this));
|
|
163
|
+
}
|
|
164
|
+
// on sort, all row detail are collapsed so we can dispose of all the Views as well
|
|
165
|
+
this.eventHandler.subscribe(this._grid.onSort, this.disposeAllViewComponents.bind(this));
|
|
166
|
+
// on filter changed, we need to re-render all Views
|
|
167
|
+
this._subscriptions.push(this.eventPubSubService?.subscribe('onFilterChanged', this.redrawAllViewComponents.bind(this)), this.eventPubSubService?.subscribe('onGridMenuClearAllFilters', () => setTimeout(() => this.redrawAllViewComponents())), this.eventPubSubService?.subscribe('onGridMenuClearAllSorting', () => setTimeout(() => this.redrawAllViewComponents())));
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return this;
|
|
171
|
+
}
|
|
172
|
+
/** Redraw (re-render) all the expanded row detail View Components */
|
|
173
|
+
redrawAllViewComponents() {
|
|
174
|
+
this._views.forEach((compRef) => {
|
|
175
|
+
this.redrawViewComponent(compRef);
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
/** Render all the expanded row detail View Components */
|
|
179
|
+
renderAllViewComponents() {
|
|
180
|
+
this._views.forEach((view) => {
|
|
181
|
+
if (view?.dataContext) {
|
|
182
|
+
this.renderViewModel(view.dataContext);
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
/** Redraw the necessary View Component */
|
|
187
|
+
redrawViewComponent(createdView) {
|
|
188
|
+
const containerElements = this.gridContainerElement.getElementsByClassName(`${ROW_DETAIL_CONTAINER_PREFIX}${createdView.id}`);
|
|
189
|
+
if (containerElements?.length >= 0) {
|
|
190
|
+
this.renderViewModel(createdView.dataContext);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/** Render (or re-render) the View Component (Row Detail) */
|
|
194
|
+
renderPreloadView() {
|
|
195
|
+
const containerElements = this.gridContainerElement.getElementsByClassName(`${PRELOAD_CONTAINER_PREFIX}`);
|
|
196
|
+
if (containerElements?.length >= 0) {
|
|
197
|
+
this.angularUtilService.createAngularComponentAppendToDom(this._preloadComponent, containerElements[containerElements.length - 1], true);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/** Render (or re-render) the View Component (Row Detail) */
|
|
201
|
+
renderViewModel(item) {
|
|
202
|
+
const containerElements = this.gridContainerElement.getElementsByClassName(`${ROW_DETAIL_CONTAINER_PREFIX}${item[this.datasetIdPropName]}`);
|
|
203
|
+
if (containerElements?.length > 0) {
|
|
204
|
+
const componentOutput = this.angularUtilService.createAngularComponentAppendToDom(this._viewComponent, containerElements[containerElements.length - 1], true);
|
|
205
|
+
if (componentOutput && componentOutput.componentRef && componentOutput.componentRef.instance) {
|
|
206
|
+
// pass a few properties to the Row Detail template component
|
|
207
|
+
Object.assign(componentOutput.componentRef.instance, {
|
|
208
|
+
model: item,
|
|
209
|
+
addon: this,
|
|
210
|
+
grid: this._grid,
|
|
211
|
+
dataView: this.dataView,
|
|
212
|
+
parent: this.rowDetailViewOptions?.parent,
|
|
213
|
+
});
|
|
214
|
+
const viewObj = this._views.find(obj => obj.id === item[this.datasetIdPropName]);
|
|
215
|
+
if (viewObj) {
|
|
216
|
+
viewObj.componentRef = componentOutput.componentRef;
|
|
217
|
+
}
|
|
218
|
+
return viewObj;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return undefined;
|
|
222
|
+
}
|
|
223
|
+
// --
|
|
224
|
+
// protected functions
|
|
225
|
+
// ------------------
|
|
226
|
+
disposeViewComponent(expandedView) {
|
|
227
|
+
const compRef = expandedView?.componentRef;
|
|
228
|
+
if (compRef) {
|
|
229
|
+
this.appRef.detachView(compRef.hostView);
|
|
230
|
+
if (compRef?.destroy) {
|
|
231
|
+
compRef.destroy();
|
|
232
|
+
}
|
|
233
|
+
return expandedView;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* notify the onAsyncResponse with the "args.item" (required property)
|
|
238
|
+
* the plugin will then use item to populate the row detail panel with the "postTemplate"
|
|
239
|
+
* @param item
|
|
240
|
+
*/
|
|
241
|
+
notifyTemplate(item) {
|
|
242
|
+
if (this.onAsyncResponse) {
|
|
243
|
+
this.onAsyncResponse.notify({ item }, undefined, this);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* On Processing, we will notify the plugin with the new item detail once backend server call completes
|
|
248
|
+
* @param item
|
|
249
|
+
*/
|
|
250
|
+
async onProcessing(item) {
|
|
251
|
+
if (item && typeof this._userProcessFn === 'function') {
|
|
252
|
+
let awaitedItemDetail;
|
|
253
|
+
const userProcessFn = this._userProcessFn(item);
|
|
254
|
+
// wait for the "userProcessFn", once resolved we will save it into the "collection"
|
|
255
|
+
const response = await userProcessFn;
|
|
256
|
+
if (response.hasOwnProperty(this.datasetIdPropName)) {
|
|
257
|
+
awaitedItemDetail = response; // from Promise
|
|
258
|
+
}
|
|
259
|
+
else if (response && response instanceof Observable || response instanceof Promise) {
|
|
260
|
+
awaitedItemDetail = await castObservableToPromise(this.rxjs, response); // from Angular-http-client
|
|
261
|
+
}
|
|
262
|
+
if (!awaitedItemDetail || !awaitedItemDetail.hasOwnProperty(this.datasetIdPropName)) {
|
|
263
|
+
throw new Error(`[Angular-Slickgrid] could not process the Row Detail, you must make sure that your "process" callback
|
|
264
|
+
(a Promise or an HttpClient call returning an Observable) returns an item object that has an "${this.datasetIdPropName}" property`);
|
|
265
|
+
}
|
|
266
|
+
// notify the plugin with the new item details
|
|
267
|
+
this.notifyTemplate(awaitedItemDetail || {});
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Just before the row get expanded or collapsed we will do the following
|
|
272
|
+
* First determine if the row is expanding or collapsing,
|
|
273
|
+
* if it's expanding we will add it to our View Components reference array if we don't already have it
|
|
274
|
+
* or if it's collapsing we will remove it from our View Components reference array
|
|
275
|
+
*/
|
|
276
|
+
handleOnBeforeRowDetailToggle(e, args) {
|
|
277
|
+
// expanding
|
|
278
|
+
if (args && args.item && args.item.__collapsed) {
|
|
279
|
+
// expanding row detail
|
|
280
|
+
const viewInfo = {
|
|
281
|
+
id: args.item[this.datasetIdPropName],
|
|
282
|
+
dataContext: args.item
|
|
283
|
+
};
|
|
284
|
+
const idPropName = this.gridOptions.datasetIdPropertyName || 'id';
|
|
285
|
+
addToArrayWhenNotExists(this._views, viewInfo, idPropName);
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
// collapsing, so dispose of the View/Component
|
|
289
|
+
const foundViewIndex = this._views.findIndex((view) => view.id === args.item[this.datasetIdPropName]);
|
|
290
|
+
if (foundViewIndex >= 0 && this._views.hasOwnProperty(foundViewIndex)) {
|
|
291
|
+
const compRef = this._views[foundViewIndex].componentRef;
|
|
292
|
+
if (compRef) {
|
|
293
|
+
this.appRef.detachView(compRef.hostView);
|
|
294
|
+
compRef.destroy();
|
|
295
|
+
}
|
|
296
|
+
this._views.splice(foundViewIndex, 1);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
/** When Row comes back to Viewport Range, we need to redraw the View */
|
|
301
|
+
handleOnRowBackToViewportRange(e, args) {
|
|
302
|
+
if (args?.item) {
|
|
303
|
+
this.redrawAllViewComponents();
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2tSb3dEZXRhaWxWaWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2FuZ3VsYXItc2xpY2tncmlkL2V4dGVuc2lvbnMvc2xpY2tSb3dEZXRhaWxWaWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsdUJBQXVCLEVBS3ZCLHNCQUFzQixFQUN0QixjQUFjLEdBQ2YsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyxPQUFPLEVBQUUsa0JBQWtCLElBQUksMkJBQTJCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNoSCxPQUFPLEVBQUUsVUFBVSxFQUFXLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxTQUFTLE1BQU0sV0FBVyxDQUFDO0FBS3ZDLE1BQU0sMkJBQTJCLEdBQUcsWUFBWSxDQUFDO0FBQ2pELE1BQU0sd0JBQXdCLEdBQUcsbUJBQW1CLENBQUM7QUFRckQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLDJCQUEyQjtJQVM1QztJQUNBO0lBQ0E7SUFDQTtJQUNUO0lBWlosa0JBQWtCLENBQW9CO0lBQzVCLGlCQUFpQixDQUEyQjtJQUM1QyxNQUFNLEdBQWtCLEVBQUUsQ0FBQztJQUMzQixjQUFjLENBQWdCO0lBQzlCLGNBQWMsR0FBd0IsRUFBRSxDQUFDO0lBQ3pDLGNBQWMsQ0FBZ0U7SUFFeEYsWUFDcUIsa0JBQXNDLEVBQ3RDLE1BQXNCLEVBQ3RCLGtCQUFzQyxFQUN0QyxvQkFBb0MsRUFDN0MsSUFBaUI7UUFFM0IsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFOUCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFnQjtRQUM3QyxTQUFJLEdBQUosSUFBSSxDQUFh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LElBQWlCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQ25ILElBQUksY0FBYyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFDckUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxZQUFZLENBQUM7Z0JBQ3pELElBQUksT0FBTyxFQUFFO29CQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDekMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2lCQUNuQjtnQkFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDdkM7U0FDRjtJQUNILENBQUM7SUFFRCx3RUFBd0U7SUFDOUQsOEJBQThCLENBQUMsQ0FBUSxFQUFFLElBQTBIO1FBQzNLLElBQUksSUFBSSxFQUFFLElBQUksRUFBRTtZQUNkLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIENvbXBvbmVudFJlZiwgVHlwZSwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgYWRkVG9BcnJheVdoZW5Ob3RFeGlzdHMsXG4gIGNhc3RPYnNlcnZhYmxlVG9Qcm9taXNlLFxuICBFdmVudFN1YnNjcmlwdGlvbixcbiAgUnhKc0ZhY2FkZSxcbiAgU2xpY2tFdmVudEhhbmRsZXIsXG4gIFNsaWNrR3JpZCxcbiAgU2xpY2tSb3dTZWxlY3Rpb25Nb2RlbCxcbiAgdW5zdWJzY3JpYmVBbGwsXG59IGZyb20gJ0BzbGlja2dyaWQtdW5pdmVyc2FsL2NvbW1vbic7XG5pbXBvcnQgeyBFdmVudFB1YlN1YlNlcnZpY2UgfSBmcm9tICdAc2xpY2tncmlkLXVuaXZlcnNhbC9ldmVudC1wdWItc3ViJztcbmltcG9ydCB7IFNsaWNrUm93RGV0YWlsVmlldyBhcyBVbml2ZXJzYWxTbGlja1Jvd0RldGFpbFZpZXcgfSBmcm9tICdAc2xpY2tncmlkLXVuaXZlcnNhbC9yb3ctZGV0YWlsLXZpZXctcGx1Z2luJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIERPTVB1cmlmeSBmcm9tICdkb21wdXJpZnknO1xuXG5pbXBvcnQgeyBHcmlkT3B0aW9uLCBSb3dEZXRhaWxWaWV3IH0gZnJvbSAnLi4vbW9kZWxzL2luZGV4JztcbmltcG9ydCB7IEFuZ3VsYXJVdGlsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FuZ3VsYXJVdGlsLnNlcnZpY2UnO1xuXG5jb25zdCBST1dfREVUQUlMX0NPTlRBSU5FUl9QUkVGSVggPSAnY29udGFpbmVyXyc7XG5jb25zdCBQUkVMT0FEX0NPTlRBSU5FUl9QUkVGSVggPSAnY29udGFpbmVyX2xvYWRpbmcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZWRWaWV3IHtcbiAgaWQ6IHN0cmluZyB8IG51bWJlcjtcbiAgZGF0YUNvbnRleHQ6IGFueTtcbiAgY29tcG9uZW50UmVmPzogQ29tcG9uZW50UmVmPGFueT47XG59XG5cbmV4cG9ydCBjbGFzcyBTbGlja1Jvd0RldGFpbFZpZXcgZXh0ZW5kcyBVbml2ZXJzYWxTbGlja1Jvd0RldGFpbFZpZXcge1xuICByb3dEZXRhaWxDb250YWluZXIhOiBWaWV3Q29udGFpbmVyUmVmO1xuICBwcm90ZWN0ZWQgX3ByZWxvYWRDb21wb25lbnQ6IFR5cGU8b2JqZWN0PiB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIF92aWV3czogQ3JlYXRlZFZpZXdbXSA9IFtdO1xuICBwcm90ZWN0ZWQgX3ZpZXdDb21wb25lbnQhOiBUeXBlPG9iamVjdD47XG4gIHByb3RlY3RlZCBfc3Vic2NyaXB0aW9uczogRXZlbnRTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcm90ZWN0ZWQgX3VzZXJQcm9jZXNzRm4hOiAoaXRlbTogYW55KSA9PiBQcm9taXNlPGFueT4gfCBPYnNlcnZhYmxlPGFueT4gfCBTdWJqZWN0PGFueT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFuZ3VsYXJVdGlsU2VydmljZTogQW5ndWxhclV0aWxTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBldmVudFB1YlN1YlNlcnZpY2U6IEV2ZW50UHViU3ViU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ3JpZENvbnRhaW5lckVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50LFxuICAgIHByb3RlY3RlZCByeGpzPzogUnhKc0ZhY2FkZSxcbiAgKSB7XG4gICAgc3VwZXIoZXZlbnRQdWJTdWJTZXJ2aWNlKTtcbiAgfVxuXG4gIGdldCBhZGRvbk9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9ucygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBkYXRhc2V0SWRQcm9wTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdyaWRPcHRpb25zLmRhdGFzZXRJZFByb3BlcnR5TmFtZSB8fCAnaWQnO1xuICB9XG5cbiAgZ2V0IGV2ZW50SGFuZGxlcigpOiBTbGlja0V2ZW50SGFuZGxlciB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50SGFuZGxlcjtcbiAgfVxuICBzZXQgZXZlbnRIYW5kbGVyKGV2ZW50SGFuZGxlcjogU2xpY2tFdmVudEhhbmRsZXIpIHtcbiAgICB0aGlzLl9ldmVudEhhbmRsZXIgPSBldmVudEhhbmRsZXI7XG4gIH1cblxuICAvKiogR2V0dGVyIGZvciB0aGUgR3JpZCBPcHRpb25zIHB1bGxlZCB0aHJvdWdoIHRoZSBHcmlkIE9iamVjdCAqL1xuICBnZXQgZ3JpZE9wdGlvbnMoKTogR3JpZE9wdGlvbiB7XG4gICAgcmV0dXJuICh0aGlzLl9ncmlkPy5nZXRPcHRpb25zKCkgfHwge30pIGFzIEdyaWRPcHRpb247XG4gIH1cblxuICBnZXQgcm93RGV0YWlsVmlld09wdGlvbnMoKTogUm93RGV0YWlsVmlldyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZE9wdGlvbnMucm93RGV0YWlsVmlldztcbiAgfVxuXG4gIGFkZFJ4SnNSZXNvdXJjZShyeGpzOiBSeEpzRmFjYWRlKSB7XG4gICAgdGhpcy5yeGpzID0gcnhqcztcbiAgfVxuXG4gIC8qKiBEaXNwb3NlIG9mIHRoZSBSb3dEZXRhaWxWaWV3IEV4dGVuc2lvbiAqL1xuICBkaXNwb3NlKCkge1xuICAgIHRoaXMuZGlzcG9zZUFsbFZpZXdDb21wb25lbnRzKCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucyA9IHVuc3Vic2NyaWJlQWxsKHRoaXMuX3N1YnNjcmlwdGlvbnMpOyAvLyBhbHNvIHVuc3Vic2NyaWJlIGFsbCBSeEpTIHN1YnNjcmlwdGlvbnNcbiAgICBzdXBlci5kaXNwb3NlKCk7XG4gIH1cblxuICAvKiogRGlzcG9zZSBvZiBhbGwgdGhlIG9wZW5lZCBSb3cgRGV0YWlsIFBhbmVscyBBbmd1bGFyIFZpZXcgQ29tcG9uZW50cyAqL1xuICBkaXNwb3NlQWxsVmlld0NvbXBvbmVudHMoKSB7XG4gICAgdGhpcy5fdmlld3MuZm9yRWFjaCgoY29tcFJlZikgPT4gdGhpcy5kaXNwb3NlVmlld0NvbXBvbmVudChjb21wUmVmKSk7XG4gICAgdGhpcy5fdmlld3MgPSBbXTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGluc3RhbmNlIG9mIHRoZSBTbGlja0dyaWQgYWRkb24gKGNvbnRyb2wgb3IgcGx1Z2luKS4gKi9cbiAgZ2V0QWRkb25JbnN0YW5jZSgpOiBTbGlja1Jvd0RldGFpbFZpZXcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGluaXQoZ3JpZDogU2xpY2tHcmlkKSB7XG4gICAgdGhpcy5fZ3JpZCA9IGdyaWQ7XG4gICAgc3VwZXIuaW5pdCh0aGlzLl9ncmlkKTtcbiAgICB0aGlzLnJlZ2lzdGVyKGdyaWQ/LmdldFNlbGVjdGlvbk1vZGVsKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgcGx1Z2luIGJlZm9yZSB0aGUgR3JpZCBjcmVhdGlvbiwgZWxzZSBpdCB3aWxsIGJlaGF2ZSBvZGRseS5cbiAgICogTW9zdGx5IGJlY2F1c2UgdGhlIGNvbHVtbiBkZWZpbml0aW9ucyBtaWdodCBjaGFuZ2UgYWZ0ZXIgdGhlIGdyaWQgY3JlYXRpb25cbiAgICovXG4gIHJlZ2lzdGVyKHJvd1NlbGVjdGlvblBsdWdpbj86IFNsaWNrUm93U2VsZWN0aW9uTW9kZWwpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuZ3JpZE9wdGlvbnMucm93RGV0YWlsVmlldz8ucHJvY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gd2UgbmVlZCB0byBrZWVwIHRoZSB1c2VyIFwicHJvY2Vzc1wiIG1ldGhvZCBhbmQgcmVwbGFjZSBpdCB3aXRoIG91ciBvd24gZXhlY3V0aW9uIG1ldGhvZFxuICAgICAgLy8gd2UgZG8gdGhpcyBiZWNhdXNlIHdoZW4gd2UgZ2V0IHRoZSBpdGVtIGRldGFpbCwgd2UgbmVlZCB0byBjYWxsIFwib25Bc3luY1Jlc3BvbnNlLm5vdGlmeVwiIGZvciB0aGUgcGx1Z2luIHRvIHdvcmtcbiAgICAgIHRoaXMuX3VzZXJQcm9jZXNzRm4gPSB0aGlzLmdyaWRPcHRpb25zLnJvd0RldGFpbFZpZXcucHJvY2VzcyBhcyAoaXRlbTogYW55KSA9PiBQcm9taXNlPGFueT47ICAgICAgICAgICAgICAgIC8vIGtlZXAgdXNlcidzIHByb2Nlc3MgbWV0aG9kXG4gICAgICB0aGlzLmFkZG9uT3B0aW9ucy5wcm9jZXNzID0gKGl0ZW0pID0+IHRoaXMub25Qcm9jZXNzaW5nKGl0ZW0pOyAgLy8gcmVwbGFjZSBwcm9jZXNzIG1ldGhvZCAmIHJ1biBvdXIgaW50ZXJuYWwgb25lXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignW0FuZ3VsYXItU2xpY2tncmlkXSBZb3UgbmVlZCB0byBwcm92aWRlIGEgXCJwcm9jZXNzXCIgZnVuY3Rpb24gZm9yIHRoZSBSb3cgRGV0YWlsIEV4dGVuc2lvbiB0byB3b3JrIHByb3Blcmx5Jyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2dyaWQgJiYgdGhpcy5ncmlkT3B0aW9ucz8ucm93RGV0YWlsVmlldykge1xuICAgICAgLy8gbG9hZCB0aGUgUHJlbG9hZCAmIFJvd0RldGFpbCBUZW1wbGF0ZXMgKGNvdWxkIGJlIHN0cmFpZ2h0IEhUTUwgb3IgQW5ndWxhciBWaWV3L1ZpZXdNb2RlbClcbiAgICAgIC8vIHdoZW4gdGhvc2UgYXJlIEFuZ3VsYXIgVmlldy9WaWV3TW9kZWwsIHdlIG5lZWQgdG8gY3JlYXRlIFZpZXcgQ29tcG9uZW50ICYgcHJvdmlkZSB0aGUgaHRtbCBjb250YWluZXJzIHRvIHRoZSBQbHVnaW4gKHByZVRlbXBsYXRlL3Bvc3RUZW1wbGF0ZSBtZXRob2RzKVxuICAgICAgaWYgKCF0aGlzLmdyaWRPcHRpb25zLnJvd0RldGFpbFZpZXcucHJlVGVtcGxhdGUpIHtcbiAgICAgICAgdGhpcy5fcHJlbG9hZENvbXBvbmVudCA9IHRoaXMuZ3JpZE9wdGlvbnM/LnJvd0RldGFpbFZpZXc/LnByZWxvYWRDb21wb25lbnQ7XG4gICAgICAgIHRoaXMuYWRkb25PcHRpb25zLnByZVRlbXBsYXRlID0gKCkgPT4gRE9NUHVyaWZ5LnNhbml0aXplKGA8ZGl2IGNsYXNzPVwiJHtQUkVMT0FEX0NPTlRBSU5FUl9QUkVGSVh9XCI+PC9kaXY+YCk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuZ3JpZE9wdGlvbnMucm93RGV0YWlsVmlldy5wb3N0VGVtcGxhdGUpIHtcbiAgICAgICAgdGhpcy5fdmlld0NvbXBvbmVudCA9IHRoaXMuZ3JpZE9wdGlvbnM/LnJvd0RldGFpbFZpZXc/LnZpZXdDb21wb25lbnQ7XG4gICAgICAgIHRoaXMuYWRkb25PcHRpb25zLnBvc3RUZW1wbGF0ZSA9IChpdGVtRGV0YWlsOiBhbnkpID0+IERPTVB1cmlmeS5zYW5pdGl6ZShgPGRpdiBjbGFzcz1cIiR7Uk9XX0RFVEFJTF9DT05UQUlORVJfUFJFRklYfSR7aXRlbURldGFpbFt0aGlzLmRhdGFzZXRJZFByb3BOYW1lXX1cIj48L2Rpdj5gKTtcbiAgICAgIH1cblxuICAgICAgLy8gdGhpcyBhbHNvIHJlcXVpcmVzIHRoZSBSb3cgU2VsZWN0aW9uIE1vZGVsIHRvIGJlIHJlZ2lzdGVyZWQgYXMgd2VsbFxuICAgICAgaWYgKCFyb3dTZWxlY3Rpb25QbHVnaW4gfHwgIXRoaXMuX2dyaWQuZ2V0U2VsZWN0aW9uTW9kZWwoKSkge1xuICAgICAgICByb3dTZWxlY3Rpb25QbHVnaW4gPSBuZXcgU2xpY2tSb3dTZWxlY3Rpb25Nb2RlbCh0aGlzLmdyaWRPcHRpb25zLnJvd1NlbGVjdGlvbk9wdGlvbnMgfHwgeyBzZWxlY3RBY3RpdmVSb3c6IHRydWUgfSk7XG4gICAgICAgIHRoaXMuX2dyaWQuc2V0U2VsZWN0aW9uTW9kZWwocm93U2VsZWN0aW9uUGx1Z2luKTtcbiAgICAgIH1cblxuICAgICAgLy8gaG9vayBhbGwgZXZlbnRzXG4gICAgICBpZiAodGhpcy5fZ3JpZCAmJiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zKSB7XG4gICAgICAgIGlmICh0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uRXh0ZW5zaW9uUmVnaXN0ZXJlZCkge1xuICAgICAgICAgIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25FeHRlbnNpb25SZWdpc3RlcmVkKHRoaXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub25Bc3luY1Jlc3BvbnNlKSB7XG4gICAgICAgICAgdGhpcy5ldmVudEhhbmRsZXIuc3Vic2NyaWJlKHRoaXMub25Bc3luY1Jlc3BvbnNlLCAoZXZlbnQsIGFyZ3MpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zICYmIHR5cGVvZiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQXN5bmNSZXNwb25zZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQXN5bmNSZXNwb25zZShldmVudCwgYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vbkFzeW5jRW5kVXBkYXRlKSB7XG4gICAgICAgICAgdGhpcy5ldmVudEhhbmRsZXIuc3Vic2NyaWJlKHRoaXMub25Bc3luY0VuZFVwZGF0ZSwgKGU6IGFueSwgYXJnczogeyBncmlkOiBTbGlja0dyaWQ7IGl0ZW06IGFueTsgfSkgPT4ge1xuICAgICAgICAgICAgLy8gdHJpZ2dlcnMgYWZ0ZXIgYmFja2VuZCBjYWxsZWQgXCJvbkFzeW5jUmVzcG9uc2Uubm90aWZ5KClcIlxuICAgICAgICAgICAgdGhpcy5yZW5kZXJWaWV3TW9kZWwoYXJncz8uaXRlbSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zICYmIHR5cGVvZiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uQXN5bmNFbmRVcGRhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkFzeW5jRW5kVXBkYXRlKGUsIGFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub25BZnRlclJvd0RldGFpbFRvZ2dsZSkge1xuICAgICAgICAgIHRoaXMuZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLm9uQWZ0ZXJSb3dEZXRhaWxUb2dnbGUsIChlOiBhbnksIGFyZ3M6IHsgZ3JpZDogU2xpY2tHcmlkOyBpdGVtOiBhbnk7IGV4cGFuZGVkUm93czogbnVtYmVyW107IH0pID0+IHtcbiAgICAgICAgICAgIC8vIGRpc3BsYXkgcHJlbG9hZCB0ZW1wbGF0ZSAmIHJlLXJlbmRlciBhbGwgdGhlIG90aGVyIERldGFpbCBWaWV3cyBhZnRlciB0b2dnbGluZ1xuICAgICAgICAgICAgLy8gdGhlIHByZWxvYWQgVmlldyB3aWxsIGV2ZW50dWFsbHkgZ28gYXdheSBvbmNlIHRoZSBkYXRhIGdldHMgbG9hZGVkIGFmdGVyIHRoZSBcIm9uQXN5bmNFbmRVcGRhdGVcIiBldmVudFxuICAgICAgICAgICAgdGhpcy5yZW5kZXJQcmVsb2FkVmlldygpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJBbGxWaWV3Q29tcG9uZW50cygpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucyAmJiB0eXBlb2YgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkFmdGVyUm93RGV0YWlsVG9nZ2xlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25BZnRlclJvd0RldGFpbFRvZ2dsZShlLCBhcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9uQmVmb3JlUm93RGV0YWlsVG9nZ2xlKSB7XG4gICAgICAgICAgdGhpcy5ldmVudEhhbmRsZXIuc3Vic2NyaWJlKHRoaXMub25CZWZvcmVSb3dEZXRhaWxUb2dnbGUsIChlLCBhcmdzKSA9PiB7XG4gICAgICAgICAgICAvLyBiZWZvcmUgdG9nZ2xpbmcgcm93IGRldGFpbCwgd2UgbmVlZCB0byBjcmVhdGUgVmlldyBDb21wb25lbnQgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgICAgICAgICAgdGhpcy5oYW5kbGVPbkJlZm9yZVJvd0RldGFpbFRvZ2dsZShlLCBhcmdzKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMgJiYgdHlwZW9mIHRoaXMucm93RGV0YWlsVmlld09wdGlvbnMub25CZWZvcmVSb3dEZXRhaWxUb2dnbGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vbkJlZm9yZVJvd0RldGFpbFRvZ2dsZShlLCBhcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9uUm93QmFja1RvVmlld3BvcnRSYW5nZSkge1xuICAgICAgICAgIHRoaXMuZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLm9uUm93QmFja1RvVmlld3BvcnRSYW5nZSwgKGU6IGFueSwgYXJnczogeyBncmlkOiBTbGlja0dyaWQ7IGl0ZW06IGFueTsgcm93SWQ6IG51bWJlcjsgcm93SW5kZXg6IG51bWJlcjsgZXhwYW5kZWRSb3dzOiBhbnlbXTsgcm93SWRzT3V0T2ZWaWV3cG9ydDogbnVtYmVyW107IH0pID0+IHtcbiAgICAgICAgICAgIC8vIHdoZW4gcm93IGlzIGJhY2sgdG8gdmlld3BvcnQgcmFuZ2UsIHdlIHdpbGwgcmUtcmVuZGVyIHRoZSBWaWV3IENvbXBvbmVudChzKVxuICAgICAgICAgICAgdGhpcy5oYW5kbGVPblJvd0JhY2tUb1ZpZXdwb3J0UmFuZ2UoZSwgYXJncyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zICYmIHR5cGVvZiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uUm93QmFja1RvVmlld3BvcnRSYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uUm93QmFja1RvVmlld3BvcnRSYW5nZShlLCBhcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9uUm93T3V0T2ZWaWV3cG9ydFJhbmdlKSB7XG4gICAgICAgICAgdGhpcy5ldmVudEhhbmRsZXIuc3Vic2NyaWJlKHRoaXMub25Sb3dPdXRPZlZpZXdwb3J0UmFuZ2UsIChlOiBhbnksIGFyZ3M6IHsgZ3JpZDogU2xpY2tHcmlkOyBpdGVtOiBhbnk7IHJvd0lkOiBudW1iZXI7IHJvd0luZGV4OiBudW1iZXI7IGV4cGFuZGVkUm93czogYW55W107IHJvd0lkc091dE9mVmlld3BvcnQ6IG51bWJlcltdOyB9KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucyAmJiB0eXBlb2YgdGhpcy5yb3dEZXRhaWxWaWV3T3B0aW9ucy5vblJvd091dE9mVmlld3BvcnRSYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zLm9uUm93T3V0T2ZWaWV3cG9ydFJhbmdlKGUsIGFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gLS1cbiAgICAgICAgLy8gaG9vayBzb21lIGV2ZW50cyBuZWVkZWQgYnkgdGhlIFBsdWdpbiBpdHNlbGZcblxuICAgICAgICAvLyB3ZSBuZWVkIHRvIHJlZHJhdyB0aGUgb3BlbiBkZXRhaWwgdmlld3MgaWYgd2UgY2hhbmdlIGNvbHVtbiBwb3NpdGlvbiAoY29sdW1uIHJlb3JkZXIpXG4gICAgICAgIHRoaXMuZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLl9ncmlkLm9uQ29sdW1uc1Jlb3JkZXJlZCwgdGhpcy5yZWRyYXdBbGxWaWV3Q29tcG9uZW50cy5iaW5kKHRoaXMpKTtcblxuICAgICAgICAvLyBvbiByb3cgc2VsZWN0aW9uIGNoYW5nZWQsIHdlIGFsc28gbmVlZCB0byByZWRyYXdcbiAgICAgICAgaWYgKHRoaXMuZ3JpZE9wdGlvbnMuZW5hYmxlUm93U2VsZWN0aW9uIHx8IHRoaXMuZ3JpZE9wdGlvbnMuZW5hYmxlQ2hlY2tib3hTZWxlY3Rvcikge1xuICAgICAgICAgIHRoaXMuZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLl9ncmlkLm9uU2VsZWN0ZWRSb3dzQ2hhbmdlZCwgdGhpcy5yZWRyYXdBbGxWaWV3Q29tcG9uZW50cy5iaW5kKHRoaXMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIG9uIHNvcnQsIGFsbCByb3cgZGV0YWlsIGFyZSBjb2xsYXBzZWQgc28gd2UgY2FuIGRpc3Bvc2Ugb2YgYWxsIHRoZSBWaWV3cyBhcyB3ZWxsXG4gICAgICAgIHRoaXMuZXZlbnRIYW5kbGVyLnN1YnNjcmliZSh0aGlzLl9ncmlkLm9uU29ydCwgdGhpcy5kaXNwb3NlQWxsVmlld0NvbXBvbmVudHMuYmluZCh0aGlzKSk7XG5cbiAgICAgICAgLy8gb24gZmlsdGVyIGNoYW5nZWQsIHdlIG5lZWQgdG8gcmUtcmVuZGVyIGFsbCBWaWV3c1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgdGhpcy5ldmVudFB1YlN1YlNlcnZpY2U/LnN1YnNjcmliZSgnb25GaWx0ZXJDaGFuZ2VkJywgdGhpcy5yZWRyYXdBbGxWaWV3Q29tcG9uZW50cy5iaW5kKHRoaXMpKSxcbiAgICAgICAgICB0aGlzLmV2ZW50UHViU3ViU2VydmljZT8uc3Vic2NyaWJlKCdvbkdyaWRNZW51Q2xlYXJBbGxGaWx0ZXJzJywgKCkgPT4gc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlZHJhd0FsbFZpZXdDb21wb25lbnRzKCkpKSxcbiAgICAgICAgICB0aGlzLmV2ZW50UHViU3ViU2VydmljZT8uc3Vic2NyaWJlKCdvbkdyaWRNZW51Q2xlYXJBbGxTb3J0aW5nJywgKCkgPT4gc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlZHJhd0FsbFZpZXdDb21wb25lbnRzKCkpKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogUmVkcmF3IChyZS1yZW5kZXIpIGFsbCB0aGUgZXhwYW5kZWQgcm93IGRldGFpbCBWaWV3IENvbXBvbmVudHMgKi9cbiAgcmVkcmF3QWxsVmlld0NvbXBvbmVudHMoKSB7XG4gICAgdGhpcy5fdmlld3MuZm9yRWFjaCgoY29tcFJlZikgPT4ge1xuICAgICAgdGhpcy5yZWRyYXdWaWV3Q29tcG9uZW50KGNvbXBSZWYpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIFJlbmRlciBhbGwgdGhlIGV4cGFuZGVkIHJvdyBkZXRhaWwgVmlldyBDb21wb25lbnRzICovXG4gIHJlbmRlckFsbFZpZXdDb21wb25lbnRzKCkge1xuICAgIHRoaXMuX3ZpZXdzLmZvckVhY2goKHZpZXcpID0+IHtcbiAgICAgIGlmICh2aWV3Py5kYXRhQ29udGV4dCkge1xuICAgICAgICB0aGlzLnJlbmRlclZpZXdNb2RlbCh2aWV3LmRhdGFDb250ZXh0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBSZWRyYXcgdGhlIG5lY2Vzc2FyeSBWaWV3IENvbXBvbmVudCAqL1xuICByZWRyYXdWaWV3Q29tcG9uZW50KGNyZWF0ZWRWaWV3OiBDcmVhdGVkVmlldykge1xuICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnRzID0gdGhpcy5ncmlkQ29udGFpbmVyRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGAke1JPV19ERVRBSUxfQ09OVEFJTkVSX1BSRUZJWH0ke2NyZWF0ZWRWaWV3LmlkfWApO1xuICAgIGlmIChjb250YWluZXJFbGVtZW50cz8ubGVuZ3RoID49IDApIHtcbiAgICAgIHRoaXMucmVuZGVyVmlld01vZGVsKGNyZWF0ZWRWaWV3LmRhdGFDb250ZXh0KTtcbiAgICB9XG4gIH1cblxuICAvKiogUmVuZGVyIChvciByZS1yZW5kZXIpIHRoZSBWaWV3IENvbXBvbmVudCAoUm93IERldGFpbCkgKi9cbiAgcmVuZGVyUHJlbG9hZFZpZXcoKSB7XG4gICAgY29uc3QgY29udGFpbmVyRWxlbWVudHMgPSB0aGlzLmdyaWRDb250YWluZXJFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYCR7UFJFTE9BRF9DT05UQUlORVJfUFJFRklYfWApO1xuICAgIGlmIChjb250YWluZXJFbGVtZW50cz8ubGVuZ3RoID49IDApIHtcbiAgICAgIHRoaXMuYW5ndWxhclV0aWxTZXJ2aWNlLmNyZWF0ZUFuZ3VsYXJDb21wb25lbnRBcHBlbmRUb0RvbSh0aGlzLl9wcmVsb2FkQ29tcG9uZW50LCBjb250YWluZXJFbGVtZW50c1tjb250YWluZXJFbGVtZW50cy5sZW5ndGggLSAxXSwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJlbmRlciAob3IgcmUtcmVuZGVyKSB0aGUgVmlldyBDb21wb25lbnQgKFJvdyBEZXRhaWwpICovXG4gIHJlbmRlclZpZXdNb2RlbChpdGVtOiBhbnkpOiBDcmVhdGVkVmlldyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY29udGFpbmVyRWxlbWVudHMgPSB0aGlzLmdyaWRDb250YWluZXJFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYCR7Uk9XX0RFVEFJTF9DT05UQUlORVJfUFJFRklYfSR7aXRlbVt0aGlzLmRhdGFzZXRJZFByb3BOYW1lXX1gKTtcbiAgICBpZiAoY29udGFpbmVyRWxlbWVudHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudE91dHB1dCA9IHRoaXMuYW5ndWxhclV0aWxTZXJ2aWNlLmNyZWF0ZUFuZ3VsYXJDb21wb25lbnRBcHBlbmRUb0RvbSh0aGlzLl92aWV3Q29tcG9uZW50LCBjb250YWluZXJFbGVtZW50c1tjb250YWluZXJFbGVtZW50cy5sZW5ndGggLSAxXSwgdHJ1ZSk7XG4gICAgICBpZiAoY29tcG9uZW50T3V0cHV0ICYmIGNvbXBvbmVudE91dHB1dC5jb21wb25lbnRSZWYgJiYgY29tcG9uZW50T3V0cHV0LmNvbXBvbmVudFJlZi5pbnN0YW5jZSkge1xuICAgICAgICAvLyBwYXNzIGEgZmV3IHByb3BlcnRpZXMgdG8gdGhlIFJvdyBEZXRhaWwgdGVtcGxhdGUgY29tcG9uZW50XG4gICAgICAgIE9iamVjdC5hc3NpZ24oY29tcG9uZW50T3V0cHV0LmNvbXBvbmVudFJlZi5pbnN0YW5jZSwge1xuICAgICAgICAgIG1vZGVsOiBpdGVtLFxuICAgICAgICAgIGFkZG9uOiB0aGlzLFxuICAgICAgICAgIGdyaWQ6IHRoaXMuX2dyaWQsXG4gICAgICAgICAgZGF0YVZpZXc6IHRoaXMuZGF0YVZpZXcsXG4gICAgICAgICAgcGFyZW50OiB0aGlzLnJvd0RldGFpbFZpZXdPcHRpb25zPy5wYXJlbnQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHZpZXdPYmogPSB0aGlzLl92aWV3cy5maW5kKG9iaiA9PiBvYmouaWQgPT09IGl0ZW1bdGhpcy5kYXRhc2V0SWRQcm9wTmFtZV0pO1xuICAgICAgICBpZiAodmlld09iaikge1xuICAgICAgICAgIHZpZXdPYmouY29tcG9uZW50UmVmID0gY29tcG9uZW50T3V0cHV0LmNvbXBvbmVudFJlZjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmlld09iajtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIC0tXG4gIC8vIHByb3RlY3RlZCBmdW5jdGlvbnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJvdGVjdGVkIGRpc3Bvc2VWaWV3Q29tcG9uZW50KGV4cGFuZGVkVmlldzogQ3JlYXRlZFZpZXcpOiBDcmVhdGVkVmlldyB8IHZvaWQge1xuICAgIGNvbnN0IGNvbXBSZWYgPSBleHBhbmRlZFZpZXc/LmNvbXBvbmVudFJlZjtcbiAgICBpZiAoY29tcFJlZikge1xuICAgICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyhjb21wUmVmLmhvc3RWaWV3KTtcbiAgICAgIGlmIChjb21wUmVmPy5kZXN0cm95KSB7XG4gICAgICAgIGNvbXBSZWYuZGVzdHJveSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGV4cGFuZGVkVmlldztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogbm90aWZ5IHRoZSBvbkFzeW5jUmVzcG9uc2Ugd2l0aCB0aGUgXCJhcmdzLml0ZW1cIiAocmVxdWlyZWQgcHJvcGVydHkpXG4gICAqIHRoZSBwbHVnaW4gd2lsbCB0aGVuIHVzZSBpdGVtIHRvIHBvcHVsYXRlIHRoZSByb3cgZGV0YWlsIHBhbmVsIHdpdGggdGhlIFwicG9zdFRlbXBsYXRlXCJcbiAgICogQHBhcmFtIGl0ZW1cbiAgICovXG4gIHByb3RlY3RlZCBub3RpZnlUZW1wbGF0ZShpdGVtOiBhbnkpIHtcbiAgICBpZiAodGhpcy5vbkFzeW5jUmVzcG9uc2UpIHtcbiAgICAgIHRoaXMub25Bc3luY1Jlc3BvbnNlLm5vdGlmeSh7IGl0ZW0gfSwgdW5kZWZpbmVkLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT24gUHJvY2Vzc2luZywgd2Ugd2lsbCBub3RpZnkgdGhlIHBsdWdpbiB3aXRoIHRoZSBuZXcgaXRlbSBkZXRhaWwgb25jZSBiYWNrZW5kIHNlcnZlciBjYWxsIGNvbXBsZXRlc1xuICAgKiBAcGFyYW0gaXRlbVxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIG9uUHJvY2Vzc2luZyhpdGVtOiBhbnkpIHtcbiAgICBpZiAoaXRlbSAmJiB0eXBlb2YgdGhpcy5fdXNlclByb2Nlc3NGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbGV0IGF3YWl0ZWRJdGVtRGV0YWlsOiBhbnk7XG4gICAgICBjb25zdCB1c2VyUHJvY2Vzc0ZuID0gdGhpcy5fdXNlclByb2Nlc3NGbihpdGVtKTtcblxuICAgICAgLy8gd2FpdCBmb3IgdGhlIFwidXNlclByb2Nlc3NGblwiLCBvbmNlIHJlc29sdmVkIHdlIHdpbGwgc2F2ZSBpdCBpbnRvIHRoZSBcImNvbGxlY3Rpb25cIlxuICAgICAgY29uc3QgcmVzcG9uc2U6IGFueSB8IGFueVtdID0gYXdhaXQgdXNlclByb2Nlc3NGbjtcblxuICAgICAgaWYgKHJlc3BvbnNlLmhhc093blByb3BlcnR5KHRoaXMuZGF0YXNldElkUHJvcE5hbWUpKSB7XG4gICAgICAgIGF3YWl0ZWRJdGVtRGV0YWlsID0gcmVzcG9uc2U7IC8vIGZyb20gUHJvbWlzZVxuICAgICAgfSBlbHNlIGlmIChyZXNwb25zZSAmJiByZXNwb25zZSBpbnN0YW5jZW9mIE9ic2VydmFibGUgfHwgcmVzcG9uc2UgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIGF3YWl0ZWRJdGVtRGV0YWlsID0gYXdhaXQgY2FzdE9ic2VydmFibGVUb1Byb21pc2UodGhpcy5yeGpzIGFzIFJ4SnNGYWNhZGUsIHJlc3BvbnNlKTsgLy8gZnJvbSBBbmd1bGFyLWh0dHAtY2xpZW50XG4gICAgICB9XG5cbiAgICAgIGlmICghYXdhaXRlZEl0ZW1EZXRhaWwgfHwgIWF3YWl0ZWRJdGVtRGV0YWlsLmhhc093blByb3BlcnR5KHRoaXMuZGF0YXNldElkUHJvcE5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgW0FuZ3VsYXItU2xpY2tncmlkXSBjb3VsZCBub3QgcHJvY2VzcyB0aGUgUm93IERldGFpbCwgeW91IG11c3QgbWFrZSBzdXJlIHRoYXQgeW91ciBcInByb2Nlc3NcIiBjYWxsYmFja1xuICAgICAgICAgIChhIFByb21pc2Ugb3IgYW4gSHR0cENsaWVudCBjYWxsIHJldHVybmluZyBhbiBPYnNlcnZhYmxlKSByZXR1cm5zIGFuIGl0ZW0gb2JqZWN0IHRoYXQgaGFzIGFuIFwiJHt0aGlzLmRhdGFzZXRJZFByb3BOYW1lfVwiIHByb3BlcnR5YCk7XG4gICAgICB9XG5cbiAgICAgIC8vIG5vdGlmeSB0aGUgcGx1Z2luIHdpdGggdGhlIG5ldyBpdGVtIGRldGFpbHNcbiAgICAgIHRoaXMubm90aWZ5VGVtcGxhdGUoYXdhaXRlZEl0ZW1EZXRhaWwgfHwge30pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBKdXN0IGJlZm9yZSB0aGUgcm93IGdldCBleHBhbmRlZCBvciBjb2xsYXBzZWQgd2Ugd2lsbCBkbyB0aGUgZm9sbG93aW5nXG4gICAqIEZpcnN0IGRldGVybWluZSBpZiB0aGUgcm93IGlzIGV4cGFuZGluZyBvciBjb2xsYXBzaW5nLFxuICAgKiBpZiBpdCdzIGV4cGFuZGluZyB3ZSB3aWxsIGFkZCBpdCB0byBvdXIgVmlldyBDb21wb25lbnRzIHJlZmVyZW5jZSBhcnJheSBpZiB3ZSBkb24ndCBhbHJlYWR5IGhhdmUgaXRcbiAgICogb3IgaWYgaXQncyBjb2xsYXBzaW5nIHdlIHdpbGwgcmVtb3ZlIGl0IGZyb20gb3VyIFZpZXcgQ29tcG9uZW50cyByZWZlcmVuY2UgYXJyYXlcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVPbkJlZm9yZVJvd0RldGFpbFRvZ2dsZShlOiBFdmVudCwgYXJnczogeyBncmlkOiBTbGlja0dyaWQ7IGl0ZW06IGFueTsgfSkge1xuICAgIC8vIGV4cGFuZGluZ1xuICAgIGlmIChhcmdzICYmIGFyZ3MuaXRlbSAmJiBhcmdzLml0ZW0uX19jb2xsYXBzZWQpIHtcbiAgICAgIC8vIGV4cGFuZGluZyByb3cgZGV0YWlsXG4gICAgICBjb25zdCB2aWV3SW5mbzogQ3JlYXRlZFZpZXcgPSB7XG4gICAgICAgIGlkOiBhcmdzLml0ZW1bdGhpcy5kYXRhc2V0SWRQcm9wTmFtZV0sXG4gICAgICAgIGRhdGFDb250ZXh0OiBhcmdzLml0ZW1cbiAgICAgIH07XG4gICAgICBjb25zdCBpZFByb3BOYW1lID0gdGhpcy5ncmlkT3B0aW9ucy5kYXRhc2V0SWRQcm9wZXJ0eU5hbWUgfHwgJ2lkJztcbiAgICAgIGFkZFRvQXJyYXlXaGVuTm90RXhpc3RzKHRoaXMuX3ZpZXdzLCB2aWV3SW5mbywgaWRQcm9wTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNvbGxhcHNpbmcsIHNvIGRpc3Bvc2Ugb2YgdGhlIFZpZXcvQ29tcG9uZW50XG4gICAgICBjb25zdCBmb3VuZFZpZXdJbmRleCA9IHRoaXMuX3ZpZXdzLmZpbmRJbmRleCgodmlldzogQ3JlYXRlZFZpZXcpID0+IHZpZXcuaWQgPT09IGFyZ3MuaXRlbVt0aGlzLmRhdGFzZXRJZFByb3BOYW1lXSk7XG4gICAgICBpZiAoZm91bmRWaWV3SW5kZXggPj0gMCAmJiB0aGlzLl92aWV3cy5oYXNPd25Qcm9wZXJ0eShmb3VuZFZpZXdJbmRleCkpIHtcbiAgICAgICAgY29uc3QgY29tcFJlZiA9IHRoaXMuX3ZpZXdzW2ZvdW5kVmlld0luZGV4XS5jb21wb25lbnRSZWY7XG4gICAgICAgIGlmIChjb21wUmVmKSB7XG4gICAgICAgICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyhjb21wUmVmLmhvc3RWaWV3KTtcbiAgICAgICAgICBjb21wUmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl92aWV3cy5zcGxpY2UoZm91bmRWaWV3SW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBXaGVuIFJvdyBjb21lcyBiYWNrIHRvIFZpZXdwb3J0IFJhbmdlLCB3ZSBuZWVkIHRvIHJlZHJhdyB0aGUgVmlldyAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlT25Sb3dCYWNrVG9WaWV3cG9ydFJhbmdlKGU6IEV2ZW50LCBhcmdzOiB7IGdyaWQ6IFNsaWNrR3JpZDsgaXRlbTogYW55OyByb3dJZDogbnVtYmVyOyByb3dJbmRleDogbnVtYmVyOyBleHBhbmRlZFJvd3M6IGFueVtdOyByb3dJZHNPdXRPZlZpZXdwb3J0OiBudW1iZXJbXTsgfSkge1xuICAgIGlmIChhcmdzPy5pdGVtKSB7XG4gICAgICB0aGlzLnJlZHJhd0FsbFZpZXdDb21wb25lbnRzKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|