@colijnit/sharedcomponents 1.0.61 → 1.0.62
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 +24 -24
- package/bundles/colijnit-sharedcomponents.umd.js +9848 -9843
- package/bundles/colijnit-sharedcomponents.umd.js.map +1 -1
- package/colijnit-sharedcomponents.d.ts +91 -91
- package/colijnit-sharedcomponents.metadata.json +1 -1
- package/esm2015/colijnit-sharedcomponents.js +91 -91
- package/esm2015/lib/assets/dictionary/text.properties.js +11 -11
- package/esm2015/lib/businessobject/build-images-and-documentation-result.js +2 -2
- package/esm2015/lib/businessobject/co-document-right.bo.js +3 -3
- package/esm2015/lib/businessobject/drag-drop-container-element.js +2 -2
- package/esm2015/lib/businessobject/drag-drop-container.js +7 -7
- package/esm2015/lib/components/activity-list/activity-list.component.js +130 -130
- package/esm2015/lib/components/activity-list/activity-list.module.js +24 -24
- package/esm2015/lib/components/app-file-dropzone/app-file-dropzone.component.js +47 -47
- package/esm2015/lib/components/app-file-dropzone/app-file-dropzone.module.js +20 -20
- package/esm2015/lib/components/date-planning/component/agenda/agenda-base-view.component.js +61 -61
- package/esm2015/lib/components/date-planning/component/agenda/agenda-day-view.component.js +36 -36
- package/esm2015/lib/components/date-planning/component/agenda/agenda-event.component.js +56 -56
- package/esm2015/lib/components/date-planning/component/agenda/agenda-events.component.js +47 -47
- package/esm2015/lib/components/date-planning/component/agenda/agenda-half-hour-cell.component.js +68 -68
- package/esm2015/lib/components/date-planning/component/agenda/agenda-header.component.js +243 -243
- package/esm2015/lib/components/date-planning/component/agenda/agenda-hour-cell.component.js +36 -36
- package/esm2015/lib/components/date-planning/component/agenda/agenda-hour-view-labels.component.js +50 -50
- package/esm2015/lib/components/date-planning/component/agenda/agenda-hour-view.component.js +46 -46
- package/esm2015/lib/components/date-planning/component/agenda/agenda-month-view.component.js +61 -61
- package/esm2015/lib/components/date-planning/component/agenda/agenda-select-event.component.js +39 -39
- package/esm2015/lib/components/date-planning/component/agenda/agenda-view.component.js +35 -35
- package/esm2015/lib/components/date-planning/component/agenda/agenda-week-select-view.component.js +64 -64
- package/esm2015/lib/components/date-planning/component/agenda/agenda-week-view.component.js +48 -48
- package/esm2015/lib/components/date-planning/component/agenda/view-select.component.js +42 -42
- package/esm2015/lib/components/date-planning/component/calendar/calendar-all-months.component.js +34 -34
- package/esm2015/lib/components/date-planning/component/calendar/calendar-all-years.component.js +48 -48
- package/esm2015/lib/components/date-planning/component/calendar/calendar-header.component.js +107 -107
- package/esm2015/lib/components/date-planning/component/calendar/calendar-view.component.js +178 -178
- package/esm2015/lib/components/date-planning/component/calendar/calendar.component.js +34 -34
- package/esm2015/lib/components/date-planning/date-planning.component.js +113 -113
- package/esm2015/lib/components/date-planning/date-planning.module.js +63 -63
- package/esm2015/lib/components/docsign/component/signature/signature.component.js +75 -75
- package/esm2015/lib/components/docsign/component/signatures/signatures.component.js +44 -44
- package/esm2015/lib/components/docsign/docsign.component.js +242 -242
- package/esm2015/lib/components/docsign/docsign.module.js +23 -23
- package/esm2015/lib/components/file-upload/file-upload.component.js +189 -189
- package/esm2015/lib/components/file-upload/file-upload.module.js +25 -25
- package/esm2015/lib/components/file-upload-popup/file-upload-popup.component.js +397 -397
- package/esm2015/lib/components/file-upload-popup/file-upload-popup.module.js +30 -30
- package/esm2015/lib/components/files-upload/components/base-file-upload.component.js +469 -469
- package/esm2015/lib/components/files-upload/components/drag-drop-container.component.js +115 -115
- package/esm2015/lib/components/files-upload/files-upload.component.js +131 -131
- package/esm2015/lib/components/files-upload/files-upload.module.js +47 -47
- package/esm2015/lib/components/image-display/image-display.component.js +36 -36
- package/esm2015/lib/components/image-display/image-display.module.js +23 -23
- package/esm2015/lib/components/key-pad/key-pad.component.js +200 -200
- package/esm2015/lib/components/key-pad/key-pad.module.js +22 -22
- package/esm2015/lib/components/layout-switcher/layout-switcher.component.js +74 -74
- package/esm2015/lib/components/layout-switcher/layout-switcher.module.js +21 -21
- package/esm2015/lib/components/linear-gauge/co-linear-gauge.component.js +59 -59
- package/esm2015/lib/components/linear-gauge/co-linear-gauge.module.js +19 -19
- package/esm2015/lib/components/multi-property-toggler/multiple-property-toggler.component.js +89 -89
- package/esm2015/lib/components/multi-property-toggler/multiple-property-toggler.module.js +21 -21
- package/esm2015/lib/components/send-method-dialog/components/layout-selection/layout-selection.component.js +79 -79
- package/esm2015/lib/components/send-method-dialog/components/layout-selection/layout-selection.module.js +21 -21
- package/esm2015/lib/components/send-method-dialog/components/printer-selection/printer-selection.component.js +85 -85
- package/esm2015/lib/components/send-method-dialog/components/printer-selection/printer-selection.module.js +21 -21
- package/esm2015/lib/components/send-method-dialog/components/send-method-email/send-method-email.component.js +64 -64
- package/esm2015/lib/components/send-method-dialog/components/send-method-email/send-method-email.module.js +26 -26
- package/esm2015/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.component.js +40 -40
- package/esm2015/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.module.js +23 -23
- package/esm2015/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.component.js +61 -61
- package/esm2015/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.module.js +28 -28
- package/esm2015/lib/components/send-method-dialog/components/signature-button/signature-button.component.js +38 -38
- package/esm2015/lib/components/send-method-dialog/components/signature-button/signature-button.module.js +21 -21
- package/esm2015/lib/components/send-method-dialog/model/email-address-viewmodel.js +7 -7
- package/esm2015/lib/components/send-method-dialog/send-method-dialog.component.js +258 -258
- package/esm2015/lib/components/send-method-dialog/send-method-dialog.module.js +35 -35
- package/esm2015/lib/components/send-method-dialog/send-method-params.interface.js +2 -2
- package/esm2015/lib/components/send-method-dialog/service/send-method.service.js +59 -59
- package/esm2015/lib/components/simple-tags/simple-tags.component.js +229 -229
- package/esm2015/lib/components/simple-tags/simple-tags.module.js +26 -26
- package/esm2015/lib/components/statusbar/statusbar-popup.component.js +97 -97
- package/esm2015/lib/components/statusbar/statusbar.component.js +81 -81
- package/esm2015/lib/components/statusbar/statusbar.module.js +27 -27
- package/esm2015/lib/components/stock/components/allocation-stock-history/allocation-stock-history.component.js +47 -47
- package/esm2015/lib/components/stock/components/order-commission-stock-history/order-commission-stock-history.component.js +47 -47
- package/esm2015/lib/components/stock/components/order-stock-history/order-stock-history.component.js +47 -47
- package/esm2015/lib/components/stock/components/order-stock-tab/order-stock-tab.component.js +47 -47
- package/esm2015/lib/components/stock/components/order-supply-stock-history/order-supply-stock-history.component.js +47 -47
- package/esm2015/lib/components/stock/components/order-tab/order-tab.component.js +67 -67
- package/esm2015/lib/components/stock/components/stock-history/stock-history.component.js +53 -53
- package/esm2015/lib/components/stock/components/stock-location/stock-location.component.js +240 -240
- package/esm2015/lib/components/stock/components/stock-prognose/stock-prognose.component.js +52 -52
- package/esm2015/lib/components/stock/components/stock-tab/stock-tab.component.js +39 -41
- package/esm2015/lib/components/stock/localization/translation.js +63 -63
- package/esm2015/lib/components/stock/stock-history-tabs/stock-history-tabs.component.js +33 -33
- package/esm2015/lib/components/stock/stock-information/stock-information.component.js +49 -48
- package/esm2015/lib/components/stock/stock-information-grid/stock-information-grid.component.js +457 -457
- package/esm2015/lib/components/stock/stock-tabs/stock-tabs.component.js +243 -241
- package/esm2015/lib/components/stock/stock-transfer/co-drop-down-list-fields.interface.js +2 -2
- package/esm2015/lib/components/stock/stock-transfer/stock-change-amount.component.js +72 -72
- package/esm2015/lib/components/stock/stock-transfer/stock-transfer.component.js +149 -149
- package/esm2015/lib/components/stock/stock.component.js +197 -193
- package/esm2015/lib/components/stock/stock.module.js +80 -80
- package/esm2015/lib/components/stock-statusbar/stock-statusbar.component.js +23 -23
- package/esm2015/lib/components/stock-statusbar/stock-statusbar.module.js +19 -19
- package/esm2015/lib/components/tab-bar/tab-bar.component.js +90 -88
- package/esm2015/lib/components/tab-bar/tab-bar.module.js +21 -21
- package/esm2015/lib/components/tab-bar/tab.interface.js +2 -2
- package/esm2015/lib/components/tile-renderer/tile-render.component.js +80 -80
- package/esm2015/lib/components/tile-renderer/tile-render.module.js +26 -26
- package/esm2015/lib/decorator/input-boolean.decorator.js +34 -34
- package/esm2015/lib/enum/calendar-view.enum.js +9 -9
- package/esm2015/lib/enum/document-email-report.enum.js +18 -18
- package/esm2015/lib/enum/domain-multiple-name.enum.js +13 -13
- package/esm2015/lib/enum/file-type.js +14 -14
- package/esm2015/lib/enum/files-upload-config-objects.js +3 -3
- package/esm2015/lib/enum/gauge-color.enum.js +10 -10
- package/esm2015/lib/enum/icon.enum.js +44 -44
- package/esm2015/lib/enum/internal-param.enum.js +38 -38
- package/esm2015/lib/enum/keyboard-code.enum.js +32 -32
- package/esm2015/lib/enum/language-code.enum.js +8 -8
- package/esm2015/lib/enum/month.enum.js +17 -17
- package/esm2015/lib/enum/read-write-access-config-names.enum.js +2 -2
- package/esm2015/lib/enum/table-name.enum.js +86 -86
- package/esm2015/lib/enum/tag-category.enum.js +22 -22
- package/esm2015/lib/enum/tags-component-config-names.js +2 -2
- package/esm2015/lib/enum/thumb-three-way-state.js +19 -19
- package/esm2015/lib/enum/tile-size-type.js +7 -7
- package/esm2015/lib/enum/time-period.enum.js +11 -11
- package/esm2015/lib/event/co-drag-event.js +2 -2
- package/esm2015/lib/event/co-drop-event.js +2 -2
- package/esm2015/lib/interface/key-value-pair.js +2 -2
- package/esm2015/lib/interface/operation-callback-simple-function.js +4 -4
- package/esm2015/lib/localization/localization.module.js +19 -19
- package/esm2015/lib/localization/localize.pipe.js +26 -26
- package/esm2015/lib/localization/localize.service.js +30 -30
- package/esm2015/lib/localization/translation.js +3 -3
- package/esm2015/lib/model/agenda-event-per-day.model.js +6 -6
- package/esm2015/lib/model/agenda-event.model.js +8 -8
- package/esm2015/lib/model/agenda-null-objects.js +11 -11
- package/esm2015/lib/model/constant/all-months.js +17 -17
- package/esm2015/lib/model/date-range.js +5 -5
- package/esm2015/lib/model/day.model.js +7 -7
- package/esm2015/lib/model/icon-svg.js +43 -43
- package/esm2015/lib/model/month.model.js +11 -11
- package/esm2015/lib/model/send-method.js +8 -8
- package/esm2015/lib/model/settings.js +4 -4
- package/esm2015/lib/model/tag-tree-item.bo.js +16 -16
- package/esm2015/lib/model/time-window.bo.js +26 -26
- package/esm2015/lib/model/tree-object.js +15 -15
- package/esm2015/lib/model/week.model.js +6 -6
- package/esm2015/lib/model/weekday.model.js +10 -10
- package/esm2015/lib/pipe/array-number.pipe.js +15 -15
- package/esm2015/lib/pipe/file-type-image.pipe.js +51 -51
- package/esm2015/lib/pipe/master-pipes.js +9 -9
- package/esm2015/lib/pipe/ucfirst.pipe.js +16 -16
- package/esm2015/lib/service/dictionary.service.js +76 -76
- package/esm2015/lib/service/drag-drop.service.js +365 -365
- package/esm2015/lib/service/icon-cache.service.js +51 -51
- package/esm2015/lib/service/options.service.js +48 -48
- package/esm2015/lib/service/shared-connector.service.js +433 -433
- package/esm2015/lib/service/shared.service.js +60 -60
- package/esm2015/lib/service/stock.service.js +110 -110
- package/esm2015/lib/utils/array-utils.js +202 -202
- package/esm2015/lib/utils/calendar.utils.js +68 -68
- package/esm2015/lib/utils/check-precision-and-scale-result.js +2 -2
- package/esm2015/lib/utils/check-within-stepped-bounds-result.js +2 -2
- package/esm2015/lib/utils/co-document-shared-field-logic.js +50 -50
- package/esm2015/lib/utils/date-utils.js +264 -264
- package/esm2015/lib/utils/enum-utils.js +128 -128
- package/esm2015/lib/utils/function/not-nill.function.js +5 -5
- package/esm2015/lib/utils/is-nill.function.js +5 -5
- package/esm2015/lib/utils/map-utils.js +41 -41
- package/esm2015/lib/utils/number-utils.js +390 -390
- package/esm2015/lib/utils/object-utils.js +278 -278
- package/esm2015/lib/utils/ref-code-utils.js +49 -49
- package/esm2015/lib/utils/string-utils.js +93 -93
- package/esm2015/public-api.js +31 -31
- package/fesm2015/colijnit-sharedcomponents.js +10332 -10326
- package/fesm2015/colijnit-sharedcomponents.js.map +1 -1
- package/lib/assets/dictionary/text.properties.d.ts +3 -3
- package/lib/businessobject/build-images-and-documentation-result.d.ts +5 -5
- package/lib/businessobject/co-document-right.bo.d.ts +6 -6
- package/lib/businessobject/drag-drop-container-element.d.ts +6 -6
- package/lib/businessobject/drag-drop-container.d.ts +6 -6
- package/lib/components/access/read-write-access.scss +25 -25
- package/lib/components/access/style/_layout.scss +23 -23
- package/lib/components/access/style/_material-definition.scss +12 -12
- package/lib/components/access/style/_theme.scss +4 -4
- package/lib/components/access/style/material.scss +4 -4
- package/lib/components/activity-list/activity-list.component.d.ts +33 -33
- package/lib/components/activity-list/activity-list.module.d.ts +2 -2
- package/lib/components/activity-list/style/_layout.scss +68 -68
- package/lib/components/activity-list/style/_theme.scss +4 -4
- package/lib/components/activity-list/style/material.scss +4 -4
- package/lib/components/app-file-dropzone/app-file-dropzone.component.d.ts +14 -14
- package/lib/components/app-file-dropzone/app-file-dropzone.module.d.ts +2 -2
- package/lib/components/app-file-dropzone/style/_layout.scss +61 -61
- package/lib/components/app-file-dropzone/style/_theme.scss +4 -4
- package/lib/components/app-file-dropzone/style/material.scss +4 -4
- package/lib/components/date-planning/component/agenda/agenda-base-view.component.d.ts +21 -21
- package/lib/components/date-planning/component/agenda/agenda-day-view.component.d.ts +7 -7
- package/lib/components/date-planning/component/agenda/agenda-event.component.d.ts +18 -18
- package/lib/components/date-planning/component/agenda/agenda-events.component.d.ts +13 -13
- package/lib/components/date-planning/component/agenda/agenda-half-hour-cell.component.d.ts +18 -18
- package/lib/components/date-planning/component/agenda/agenda-header.component.d.ts +48 -48
- package/lib/components/date-planning/component/agenda/agenda-hour-cell.component.d.ts +9 -9
- package/lib/components/date-planning/component/agenda/agenda-hour-view-labels.component.d.ts +8 -8
- package/lib/components/date-planning/component/agenda/agenda-hour-view.component.d.ts +7 -7
- package/lib/components/date-planning/component/agenda/agenda-month-view.component.d.ts +10 -10
- package/lib/components/date-planning/component/agenda/agenda-select-event.component.d.ts +12 -12
- package/lib/components/date-planning/component/agenda/agenda-view.component.d.ts +12 -12
- package/lib/components/date-planning/component/agenda/agenda-week-select-view.component.d.ts +10 -10
- package/lib/components/date-planning/component/agenda/agenda-week-view.component.d.ts +9 -9
- package/lib/components/date-planning/component/agenda/style/_layout.scss +443 -443
- package/lib/components/date-planning/component/agenda/style/_material-definition.scss +12 -12
- package/lib/components/date-planning/component/agenda/style/_theme.scss +7 -7
- package/lib/components/date-planning/component/agenda/style/material.scss +5 -5
- package/lib/components/date-planning/component/agenda/view-select.component.d.ts +11 -11
- package/lib/components/date-planning/component/calendar/calendar-all-months.component.d.ts +9 -9
- package/lib/components/date-planning/component/calendar/calendar-all-years.component.d.ts +9 -9
- package/lib/components/date-planning/component/calendar/calendar-header.component.d.ts +23 -23
- package/lib/components/date-planning/component/calendar/calendar-view.component.d.ts +31 -31
- package/lib/components/date-planning/component/calendar/calendar.component.d.ts +10 -10
- package/lib/components/date-planning/component/calendar/style/_layout.scss +167 -167
- package/lib/components/date-planning/component/calendar/style/_material-definition.scss +7 -7
- package/lib/components/date-planning/component/calendar/style/_theme.scss +7 -7
- package/lib/components/date-planning/component/calendar/style/material.scss +5 -5
- package/lib/components/date-planning/date-planning.component.d.ts +28 -28
- package/lib/components/date-planning/date-planning.module.d.ts +2 -2
- package/lib/components/date-planning/style/_layout.scss +45 -45
- package/lib/components/date-planning/style/_theme.scss +5 -5
- package/lib/components/date-planning/style/material.scss +7 -7
- package/lib/components/docsign/component/signature/signature.component.d.ts +16 -16
- package/lib/components/docsign/component/signature/style/_layout.scss +40 -40
- package/lib/components/docsign/component/signature/style/_material-definition.scss +11 -11
- package/lib/components/docsign/component/signature/style/_theme.scss +13 -13
- package/lib/components/docsign/component/signature/style/material.scss +4 -4
- package/lib/components/docsign/component/signatures/signatures.component.d.ts +12 -12
- package/lib/components/docsign/component/signatures/style/_layout.scss +13 -13
- package/lib/components/docsign/component/signatures/style/_material-definition.scss +1 -1
- package/lib/components/docsign/component/signatures/style/_theme.scss +4 -4
- package/lib/components/docsign/component/signatures/style/material.scss +5 -5
- package/lib/components/docsign/docsign.component.d.ts +94 -94
- package/lib/components/docsign/docsign.module.d.ts +2 -2
- package/lib/components/docsign/style/_layout.scss +40 -40
- package/lib/components/docsign/style/_material-definition.scss +12 -12
- package/lib/components/docsign/style/_theme.scss +12 -12
- package/lib/components/docsign/style/material.scss +15 -15
- package/lib/components/file-upload/file-upload.component.d.ts +42 -42
- package/lib/components/file-upload/file-upload.module.d.ts +2 -2
- package/lib/components/file-upload/style/_layout.scss +59 -59
- package/lib/components/file-upload/style/_material-definition.scss +2 -2
- package/lib/components/file-upload/style/_theme.scss +4 -4
- package/lib/components/file-upload/style/material.scss +4 -4
- package/lib/components/file-upload-popup/file-upload-popup.component.d.ts +75 -75
- package/lib/components/file-upload-popup/file-upload-popup.module.d.ts +2 -2
- package/lib/components/file-upload-popup/style/_layout.scss +48 -48
- package/lib/components/file-upload-popup/style/_material-definition.scss +2 -2
- package/lib/components/file-upload-popup/style/_theme.scss +5 -5
- package/lib/components/file-upload-popup/style/material.scss +4 -4
- package/lib/components/files-upload/components/base-file-upload.component.d.ts +98 -98
- package/lib/components/files-upload/components/drag-drop-container.component.d.ts +34 -34
- package/lib/components/files-upload/files-upload.component.d.ts +32 -32
- package/lib/components/files-upload/files-upload.module.d.ts +2 -2
- package/lib/components/files-upload/style/_layout.scss +49 -49
- package/lib/components/files-upload/style/_theme.scss +5 -5
- package/lib/components/files-upload/style/material.scss +4 -4
- package/lib/components/image-display/image-display.component.d.ts +14 -14
- package/lib/components/image-display/image-display.module.d.ts +2 -2
- package/lib/components/image-display/style/_layout.scss +56 -56
- package/lib/components/image-display/style/_material-definition.scss +4 -4
- package/lib/components/image-display/style/_theme.scss +6 -6
- package/lib/components/image-display/style/material.scss +3 -3
- package/lib/components/key-pad/key-pad.component.d.ts +38 -38
- package/lib/components/key-pad/key-pad.module.d.ts +2 -2
- package/lib/components/key-pad/style/_layout.scss +160 -160
- package/lib/components/key-pad/style/_material-definition.scss +19 -19
- package/lib/components/key-pad/style/_theme.scss +35 -35
- package/lib/components/key-pad/style/material.scss +4 -4
- package/lib/components/layout-switcher/layout-switcher.component.d.ts +16 -16
- package/lib/components/layout-switcher/layout-switcher.module.d.ts +2 -2
- package/lib/components/layout-switcher/style/_layout.scss +94 -94
- package/lib/components/layout-switcher/style/_material-definition.scss +16 -16
- package/lib/components/layout-switcher/style/_theme.scss +4 -4
- package/lib/components/layout-switcher/style/material.scss +6 -6
- package/lib/components/linear-gauge/co-linear-gauge.component.d.ts +11 -11
- package/lib/components/linear-gauge/co-linear-gauge.module.d.ts +2 -2
- package/lib/components/linear-gauge/style/_layout.scss +20 -20
- package/lib/components/linear-gauge/style/_material-definition.scss +8 -8
- package/lib/components/linear-gauge/style/_theme.scss +4 -4
- package/lib/components/linear-gauge/style/material.scss +6 -6
- package/lib/components/login/style/_layout.scss +57 -57
- package/lib/components/login/style/_material-definition.scss +23 -23
- package/lib/components/login/style/_theme.scss +7 -7
- package/lib/components/login/style/material.scss +4 -4
- package/lib/components/multi-property-toggler/multiple-property-toggler.component.d.ts +27 -27
- package/lib/components/multi-property-toggler/multiple-property-toggler.module.d.ts +2 -2
- package/lib/components/multi-property-toggler/style/_layout.scss +24 -24
- package/lib/components/multi-property-toggler/style/_theme.scss +4 -4
- package/lib/components/multi-property-toggler/style/material.scss +4 -4
- package/lib/components/screen-config-generator/style/_layout.scss +95 -95
- package/lib/components/screen-config-generator/style/_theme.scss +4 -4
- package/lib/components/screen-config-generator/style/material.scss +4 -4
- package/lib/components/send-method-dialog/components/layout-selection/layout-selection.component.d.ts +19 -19
- package/lib/components/send-method-dialog/components/layout-selection/layout-selection.module.d.ts +2 -2
- package/lib/components/send-method-dialog/components/layout-selection/style/_layout.scss +44 -44
- package/lib/components/send-method-dialog/components/layout-selection/style/_material-definition.scss +19 -19
- package/lib/components/send-method-dialog/components/layout-selection/style/_theme.scss +17 -17
- package/lib/components/send-method-dialog/components/layout-selection/style/material.scss +4 -4
- package/lib/components/send-method-dialog/components/printer-selection/printer-selection.component.d.ts +19 -19
- package/lib/components/send-method-dialog/components/printer-selection/printer-selection.module.d.ts +2 -2
- package/lib/components/send-method-dialog/components/printer-selection/style/_layout.scss +69 -69
- package/lib/components/send-method-dialog/components/printer-selection/style/_material-definition.scss +37 -37
- package/lib/components/send-method-dialog/components/printer-selection/style/_theme.scss +23 -23
- package/lib/components/send-method-dialog/components/printer-selection/style/material.scss +4 -4
- package/lib/components/send-method-dialog/components/send-method-email/send-method-email.component.d.ts +14 -14
- package/lib/components/send-method-dialog/components/send-method-email/send-method-email.module.d.ts +2 -2
- package/lib/components/send-method-dialog/components/send-method-email/style/_layout.scss +29 -29
- package/lib/components/send-method-dialog/components/send-method-email/style/_material-definition.scss +8 -8
- package/lib/components/send-method-dialog/components/send-method-email/style/_theme.scss +5 -5
- package/lib/components/send-method-dialog/components/send-method-email/style/material.scss +4 -4
- package/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.component.d.ts +8 -8
- package/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.module.d.ts +2 -2
- package/lib/components/send-method-dialog/components/send-method-pdf/style/_layout.scss +25 -25
- package/lib/components/send-method-dialog/components/send-method-pdf/style/_material-definition.scss +5 -5
- package/lib/components/send-method-dialog/components/send-method-pdf/style/_theme.scss +5 -5
- package/lib/components/send-method-dialog/components/send-method-pdf/style/material.scss +4 -4
- package/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.component.d.ts +13 -13
- package/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.module.d.ts +2 -2
- package/lib/components/send-method-dialog/components/send-method-printer/style/_layout.scss +30 -30
- package/lib/components/send-method-dialog/components/send-method-printer/style/_material-definition.scss +5 -5
- package/lib/components/send-method-dialog/components/send-method-printer/style/_theme.scss +5 -5
- package/lib/components/send-method-dialog/components/send-method-printer/style/material.scss +4 -4
- package/lib/components/send-method-dialog/components/signature-button/signature-button.component.d.ts +12 -12
- package/lib/components/send-method-dialog/components/signature-button/signature-button.module.d.ts +2 -2
- package/lib/components/send-method-dialog/components/signature-button/style/_layout.scss +28 -28
- package/lib/components/send-method-dialog/components/signature-button/style/_material-definition.scss +8 -8
- package/lib/components/send-method-dialog/components/signature-button/style/_theme.scss +4 -4
- package/lib/components/send-method-dialog/components/signature-button/style/material.scss +4 -4
- package/lib/components/send-method-dialog/model/email-address-viewmodel.d.ts +5 -5
- package/lib/components/send-method-dialog/send-method-dialog.component.d.ts +71 -71
- package/lib/components/send-method-dialog/send-method-dialog.module.d.ts +2 -2
- package/lib/components/send-method-dialog/send-method-params.interface.d.ts +13 -13
- package/lib/components/send-method-dialog/service/send-method.service.d.ts +23 -23
- package/lib/components/send-method-dialog/style/_layout.scss +165 -165
- package/lib/components/send-method-dialog/style/_material-definition.scss +48 -48
- package/lib/components/send-method-dialog/style/_theme.scss +33 -33
- package/lib/components/send-method-dialog/style/material.scss +10 -10
- package/lib/components/simple-tags/simple-tags.component.d.ts +31 -31
- package/lib/components/simple-tags/simple-tags.module.d.ts +2 -2
- package/lib/components/simple-tags/style/_layout.scss +272 -272
- package/lib/components/simple-tags/style/_material-definition.scss +39 -39
- package/lib/components/simple-tags/style/_theme.scss +4 -4
- package/lib/components/simple-tags/style/material.scss +4 -4
- package/lib/components/statusbar/statusbar-popup.component.d.ts +21 -21
- package/lib/components/statusbar/statusbar.component.d.ts +26 -26
- package/lib/components/statusbar/statusbar.module.d.ts +2 -2
- package/lib/components/statusbar/style/_layout.scss +70 -70
- package/lib/components/statusbar/style/_material-definition.scss +23 -23
- package/lib/components/statusbar/style/_theme.scss +13 -13
- package/lib/components/statusbar/style/material.scss +5 -5
- package/lib/components/stock/components/allocation-stock-history/allocation-stock-history.component.d.ts +9 -9
- package/lib/components/stock/components/order-commission-stock-history/order-commission-stock-history.component.d.ts +9 -9
- package/lib/components/stock/components/order-stock-history/order-stock-history.component.d.ts +9 -9
- package/lib/components/stock/components/order-stock-tab/order-stock-tab.component.d.ts +11 -11
- package/lib/components/stock/components/order-supply-stock-history/order-supply-stock-history.component.d.ts +9 -9
- package/lib/components/stock/components/order-tab/order-tab.component.d.ts +20 -20
- package/lib/components/stock/components/stock-history/stock-history.component.d.ts +13 -13
- package/lib/components/stock/components/stock-location/stock-location.component.d.ts +50 -50
- package/lib/components/stock/components/stock-prognose/stock-prognose.component.d.ts +11 -11
- package/lib/components/stock/components/stock-tab/stock-tab.component.d.ts +7 -9
- package/lib/components/stock/localization/translation.d.ts +60 -60
- package/lib/components/stock/stock-history-tabs/stock-history-tabs.component.d.ts +7 -7
- package/lib/components/stock/stock-information/stock-information.component.d.ts +9 -8
- package/lib/components/stock/stock-information-grid/stock-information-grid.component.d.ts +75 -75
- package/lib/components/stock/stock-tabs/stock-tabs.component.d.ts +56 -56
- package/lib/components/stock/stock-transfer/co-drop-down-list-fields.interface.d.ts +4 -4
- package/lib/components/stock/stock-transfer/stock-change-amount.component.d.ts +18 -18
- package/lib/components/stock/stock-transfer/stock-transfer.component.d.ts +42 -42
- package/lib/components/stock/stock.component.d.ts +58 -57
- package/lib/components/stock/stock.module.d.ts +2 -2
- package/lib/components/stock/style/_layout.scss +286 -286
- package/lib/components/stock/style/_material-definition.scss +25 -25
- package/lib/components/stock/style/_theme.scss +5 -5
- package/lib/components/stock/style/material.scss +4 -4
- package/lib/components/stock-statusbar/stock-statusbar.component.d.ts +4 -4
- package/lib/components/stock-statusbar/stock-statusbar.module.d.ts +2 -2
- package/lib/components/stock-statusbar/style/_layout.scss +24 -24
- package/lib/components/stock-statusbar/style/material.scss +4 -4
- package/lib/components/tab-bar/style/_layout.scss +78 -78
- package/lib/components/tab-bar/style/_material-definition.scss +6 -6
- package/lib/components/tab-bar/style/material.scss +4 -4
- package/lib/components/tab-bar/tab-bar.component.d.ts +21 -21
- package/lib/components/tab-bar/tab-bar.module.d.ts +2 -2
- package/lib/components/tab-bar/tab.interface.d.ts +5 -5
- package/lib/components/tags/component/style/_layout.scss +67 -67
- package/lib/components/tags/component/style/_material-definition.scss +1 -1
- package/lib/components/tags/component/style/_theme.scss +8 -8
- package/lib/components/tags/component/style/material.scss +3 -3
- package/lib/components/tags/component/tag-join-label/style/_layout.scss +97 -97
- package/lib/components/tags/component/tag-join-label/style/_material-definition.scss +4 -4
- package/lib/components/tags/component/tag-join-label/style/_theme.scss +8 -8
- package/lib/components/tags/component/tag-join-label/style/material.scss +3 -3
- package/lib/components/tile-renderer/style/_layout.scss +90 -90
- package/lib/components/tile-renderer/style/_theme.scss +4 -4
- package/lib/components/tile-renderer/style/material.scss +4 -4
- package/lib/components/tile-renderer/tile-render.component.d.ts +31 -31
- package/lib/components/tile-renderer/tile-render.module.d.ts +2 -2
- package/lib/decorator/input-boolean.decorator.d.ts +8 -8
- package/lib/enum/calendar-view.enum.d.ts +7 -7
- package/lib/enum/document-email-report.enum.d.ts +15 -15
- package/lib/enum/domain-multiple-name.enum.d.ts +10 -10
- package/lib/enum/file-type.d.ts +7 -7
- package/lib/enum/files-upload-config-objects.d.ts +22 -22
- package/lib/enum/gauge-color.enum.d.ts +8 -8
- package/lib/enum/icon.enum.d.ts +42 -42
- package/lib/enum/internal-param.enum.d.ts +34 -34
- package/lib/enum/keyboard-code.enum.d.ts +30 -30
- package/lib/enum/language-code.enum.d.ts +6 -6
- package/lib/enum/month.enum.d.ts +14 -14
- package/lib/enum/read-write-access-config-names.enum.d.ts +4 -4
- package/lib/enum/table-name.enum.d.ts +84 -84
- package/lib/enum/tag-category.enum.d.ts +19 -19
- package/lib/enum/tags-component-config-names.d.ts +4 -4
- package/lib/enum/thumb-three-way-state.d.ts +6 -6
- package/lib/enum/tile-size-type.d.ts +4 -4
- package/lib/enum/time-period.enum.d.ts +8 -8
- package/lib/event/co-drag-event.d.ts +5 -5
- package/lib/event/co-drop-event.d.ts +8 -8
- package/lib/interface/key-value-pair.d.ts +4 -4
- package/lib/interface/operation-callback-simple-function.d.ts +4 -4
- package/lib/localization/localization.module.d.ts +2 -2
- package/lib/localization/localize.pipe.d.ts +7 -7
- package/lib/localization/localize.service.d.ts +7 -7
- package/lib/localization/translation.d.ts +2 -2
- package/lib/model/agenda-event-per-day.model.d.ts +5 -5
- package/lib/model/agenda-event.model.d.ts +17 -17
- package/lib/model/agenda-null-objects.d.ts +10 -10
- package/lib/model/constant/all-months.d.ts +2 -2
- package/lib/model/date-range.d.ts +7 -7
- package/lib/model/day.model.d.ts +8 -8
- package/lib/model/icon-svg.d.ts +4 -4
- package/lib/model/month.model.d.ts +5 -5
- package/lib/model/send-method.d.ts +7 -7
- package/lib/model/settings.d.ts +3 -3
- package/lib/model/tag-tree-item.bo.d.ts +18 -18
- package/lib/model/time-window.bo.d.ts +13 -13
- package/lib/model/tree-object.d.ts +8 -8
- package/lib/model/week.model.d.ts +4 -4
- package/lib/model/weekday.model.d.ts +16 -16
- package/lib/pipe/array-number.pipe.d.ts +4 -4
- package/lib/pipe/file-type-image.pipe.d.ts +12 -12
- package/lib/pipe/master-pipes.d.ts +1 -1
- package/lib/pipe/ucfirst.pipe.d.ts +4 -4
- package/lib/service/dictionary.service.d.ts +21 -21
- package/lib/service/drag-drop.service.d.ts +86 -86
- package/lib/service/icon-cache.service.d.ts +18 -18
- package/lib/service/options.service.d.ts +13 -13
- package/lib/service/shared-connector.service.d.ts +55 -55
- package/lib/service/shared.service.d.ts +18 -18
- package/lib/service/stock.service.d.ts +41 -41
- package/lib/style/_mixin.scss +14 -14
- package/lib/style/_variables.scss +21 -21
- package/lib/style/sharedcomponents-globals.scss +10 -10
- package/lib/utils/array-utils.d.ts +63 -63
- package/lib/utils/calendar.utils.d.ts +10 -10
- package/lib/utils/check-precision-and-scale-result.d.ts +4 -4
- package/lib/utils/check-within-stepped-bounds-result.d.ts +8 -8
- package/lib/utils/co-document-shared-field-logic.d.ts +7 -7
- package/lib/utils/date-utils.d.ts +44 -44
- package/lib/utils/enum-utils.d.ts +31 -31
- package/lib/utils/function/not-nill.function.d.ts +1 -1
- package/lib/utils/is-nill.function.d.ts +1 -1
- package/lib/utils/map-utils.d.ts +16 -16
- package/lib/utils/number-utils.d.ts +125 -125
- package/lib/utils/object-utils.d.ts +40 -40
- package/lib/utils/ref-code-utils.d.ts +10 -10
- package/lib/utils/string-utils.d.ts +38 -38
- package/package.json +1 -1
- package/public-api.d.ts +27 -27
|
@@ -1,128 +1,128 @@
|
|
|
1
|
-
import { CoDomainValue } from "@colijnit/mainapi/build/model/co-domain-value.bo";
|
|
2
|
-
import { NumberUtils } from "./number-utils";
|
|
3
|
-
import { StringUtils } from "./string-utils";
|
|
4
|
-
// @dynamic
|
|
5
|
-
export class EnumUtils {
|
|
6
|
-
// Returns a new array with all string values (not keys) of given string enum class.
|
|
7
|
-
static StringEnumToArray(clazz) {
|
|
8
|
-
const asArray = [];
|
|
9
|
-
const keys = Object.keys(clazz);
|
|
10
|
-
for (let i = 0, len = keys.length; i < len; i++) {
|
|
11
|
-
asArray.push(clazz[keys[i]]);
|
|
12
|
-
}
|
|
13
|
-
return asArray;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Returns a single string representation of given string enum class
|
|
17
|
-
* @param clazz
|
|
18
|
-
* @returns {string} eg "input-lov-slideout, financial-customer-group-select" for a given clazz of InputLovSlideoutComponentSelectors
|
|
19
|
-
*/
|
|
20
|
-
static StringEnumToSingleString(clazz) {
|
|
21
|
-
return StringEnumToSingleString(clazz);
|
|
22
|
-
}
|
|
23
|
-
// Get the number values from an enum
|
|
24
|
-
static GetNumberEnumValues(numberEnumClass) {
|
|
25
|
-
return this.GetObjValues(numberEnumClass).filter(value => NumberUtils.IsNumber(value));
|
|
26
|
-
}
|
|
27
|
-
// Get the the property object value names in string format from the enum
|
|
28
|
-
static GetStringEnumValues(stringEnumClass) {
|
|
29
|
-
return this.GetObjValues(stringEnumClass).filter(value => StringUtils.IsString(value));
|
|
30
|
-
}
|
|
31
|
-
static GetObjValues(numberEnumClass) {
|
|
32
|
-
return Object.keys(numberEnumClass).map(key => numberEnumClass[key]);
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Returns the enum in object format to make handling easier
|
|
36
|
-
* Works for Enums with the following format:
|
|
37
|
-
* foo: 1
|
|
38
|
-
* bar: 2
|
|
39
|
-
* etc...
|
|
40
|
-
* @param enumClass
|
|
41
|
-
* @returns {Object}
|
|
42
|
-
*/
|
|
43
|
-
static createObjectFromEnum(enumClass) {
|
|
44
|
-
// const objectifiedEnum: { refNumber: number; name: string }[] = [];
|
|
45
|
-
const objectifiedEnum = [];
|
|
46
|
-
for (const enumItem in enumClass) {
|
|
47
|
-
if (typeof enumClass[enumItem] === "number") {
|
|
48
|
-
objectifiedEnum.push({ key: enumClass[enumItem], value: enumItem });
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return objectifiedEnum;
|
|
52
|
-
}
|
|
53
|
-
static getStringEnumKeysArray(enumType) {
|
|
54
|
-
const members = Object.keys(enumType);
|
|
55
|
-
if (!EnumUtils.isNumeral(enumType)) {
|
|
56
|
-
return members;
|
|
57
|
-
}
|
|
58
|
-
const keys = [];
|
|
59
|
-
members.forEach((x) => {
|
|
60
|
-
const parsedValue = parseInt(x, 10);
|
|
61
|
-
if (Number.isNaN(parsedValue)) {
|
|
62
|
-
keys.push(x);
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
return keys;
|
|
66
|
-
}
|
|
67
|
-
static buildPromiseDomainValueListFromEnumClass(enumClass, dictionary, keysAsDescription = false) {
|
|
68
|
-
return new Promise((resolve, reject) => {
|
|
69
|
-
try {
|
|
70
|
-
resolve(EnumUtils.buildDomainValueListFromEnumClass(enumClass, dictionary, keysAsDescription));
|
|
71
|
-
}
|
|
72
|
-
catch (e) {
|
|
73
|
-
reject();
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
static buildDomainValueListFromEnumClass(enumClass, dictionary, keysAsDescription = false) {
|
|
78
|
-
const collection = [];
|
|
79
|
-
if (keysAsDescription) {
|
|
80
|
-
const enumKeys = EnumUtils.getStringEnumKeysArray(enumClass);
|
|
81
|
-
enumKeys.forEach((key, index) => {
|
|
82
|
-
const domainObjectForLov = new CoDomainValue();
|
|
83
|
-
domainObjectForLov.code = enumClass[key];
|
|
84
|
-
domainObjectForLov.description = dictionary.get(key);
|
|
85
|
-
domainObjectForLov.sequence = index;
|
|
86
|
-
collection.push(domainObjectForLov);
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
EnumUtils.StringEnumToArray(enumClass).forEach((strEnumVal, index) => {
|
|
91
|
-
const domainObjectForLov = new CoDomainValue();
|
|
92
|
-
domainObjectForLov.code = strEnumVal;
|
|
93
|
-
domainObjectForLov.description = dictionary.get(strEnumVal);
|
|
94
|
-
domainObjectForLov.sequence = index;
|
|
95
|
-
collection.push(domainObjectForLov);
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
return collection;
|
|
99
|
-
}
|
|
100
|
-
static getKeyByValue(enumType, enumValue) {
|
|
101
|
-
return Object.keys(enumType)[Object.values(enumType).indexOf(enumValue)];
|
|
102
|
-
}
|
|
103
|
-
static isNumeral(enumType) {
|
|
104
|
-
const members = Object.keys(enumType);
|
|
105
|
-
if (!members.some((x) => true)) {
|
|
106
|
-
throw new TypeError("Invalid enumeration type.");
|
|
107
|
-
}
|
|
108
|
-
let parsedCount = 0;
|
|
109
|
-
members.forEach((x) => {
|
|
110
|
-
const parsedValue = parseInt(x, 10);
|
|
111
|
-
if (!Number.isNaN(parsedValue)) {
|
|
112
|
-
parsedCount++;
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
return parsedCount === members.length / 2;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
// Outside the class because it's used to generate component selectors, and aot can't call statics.
|
|
119
|
-
export function StringEnumToSingleString(clazz) {
|
|
120
|
-
let str = "";
|
|
121
|
-
const keys = Object.keys(clazz);
|
|
122
|
-
for (let i = 0, len = keys.length; i < len; i++) {
|
|
123
|
-
str += clazz[keys[i]] + ", ";
|
|
124
|
-
}
|
|
125
|
-
str = StringUtils.RemoveLastChars(str, 2);
|
|
126
|
-
return str;
|
|
127
|
-
}
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZGNvbXBvbmVudHMvc3JjL2xpYi91dGlscy9lbnVtLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUMvRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLFdBQVc7QUFDWCxNQUFNLE9BQU8sU0FBUztJQUNsQixvRkFBb0Y7SUFDN0UsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEtBQVU7UUFDdEMsTUFBTSxPQUFPLEdBQVUsRUFBRSxDQUFDO1FBRTFCLE1BQU0sSUFBSSxHQUFhLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsR0FBRyxHQUFXLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM3RCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsd0JBQXdCLENBQUMsS0FBVTtRQUM3QyxPQUFPLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxxQ0FBcUM7SUFDOUIsTUFBTSxDQUFDLG1CQUFtQixDQUFDLGVBQW9CO1FBQ2xELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUss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QUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsQixNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUM1QixXQUFXLEVBQUUsQ0FBQzthQUNqQjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxXQUFXLEtBQUssT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUVKO0FBRUQsbUdBQW1HO0FBQ25HLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxLQUFVO0lBQy9DLElBQUksR0FBRyxHQUFXLEVBQUUsQ0FBQztJQUVyQixNQUFNLElBQUksR0FBYSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLEdBQUcsR0FBVyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDN0QsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7S0FDaEM7SUFFRCxHQUFHLEdBQUcsV0FBVyxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU3RhdGljIHV0aWxpdHkgZnVuY3Rpb24gaG9sZGVyIHJlbGF0ZWQgdG8gZW51bXMuXG5pbXBvcnQge0tleVZhbHVlUGFpcn0gZnJvbSBcIi4uL2ludGVyZmFjZS9rZXktdmFsdWUtcGFpclwiO1xuaW1wb3J0IHtDb0RvbWFpblZhbHVlfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvY28tZG9tYWluLXZhbHVlLmJvXCI7XG5pbXBvcnQge051bWJlclV0aWxzfSBmcm9tIFwiLi9udW1iZXItdXRpbHNcIjtcbmltcG9ydCB7U3RyaW5nVXRpbHN9IGZyb20gXCIuL3N0cmluZy11dGlsc1wiO1xuaW1wb3J0IHtEaWN0aW9uYXJ5U2VydmljZX0gZnJvbSBcIi4uL3NlcnZpY2UvZGljdGlvbmFyeS5zZXJ2aWNlXCI7XG4vLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIEVudW1VdGlscyB7XG4gICAgLy8gUmV0dXJucyBhIG5ldyBhcnJheSB3aXRoIGFsbCBzdHJpbmcgdmFsdWVzIChub3Qga2V5cykgb2YgZ2l2ZW4gc3RyaW5nIGVudW0gY2xhc3MuXG4gICAgcHVibGljIHN0YXRpYyBTdHJpbmdFbnVtVG9BcnJheShjbGF6ejogYW55KTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBhc0FycmF5OiBhbnlbXSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gT2JqZWN0LmtleXMoY2xhenopO1xuICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwLCBsZW46IG51bWJlciA9IGtleXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIGFzQXJyYXkucHVzaChjbGF6eltrZXlzW2ldXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXNBcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgc2luZ2xlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBnaXZlbiBzdHJpbmcgZW51bSBjbGFzc1xuICAgICAqIEBwYXJhbSBjbGF6elxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IGVnIFwiaW5wdXQtbG92LXNsaWRlb3V0LCBmaW5hbmNpYWwtY3VzdG9tZXItZ3JvdXAtc2VsZWN0XCIgZm9yIGEgZ2l2ZW4gY2xhenogb2YgSW5wdXRMb3ZTbGlkZW91dENvbXBvbmVudFNlbGVjdG9yc1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nRW51bVRvU2luZ2xlU3RyaW5nKGNsYXp6OiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gU3RyaW5nRW51bVRvU2luZ2xlU3RyaW5nKGNsYXp6KTtcbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIG51bWJlciB2YWx1ZXMgZnJvbSBhbiBlbnVtXG4gICAgcHVibGljIHN0YXRpYyBHZXROdW1iZXJFbnVtVmFsdWVzKG51bWJlckVudW1DbGFzczogYW55KTogYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5HZXRPYmpWYWx1ZXMobnVtYmVyRW51bUNsYXNzKS5maWx0ZXIodmFsdWUgPT4gTnVtYmVyVXRpbHMuSXNOdW1iZXIodmFsdWUpKTtcbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIHRoZSBwcm9wZXJ0eSBvYmplY3QgdmFsdWUgbmFtZXMgaW4gc3RyaW5nIGZvcm1hdCBmcm9tIHRoZSBlbnVtXG4gICAgcHVibGljIHN0YXRpYyBHZXRTdHJpbmdFbnVtVmFsdWVzKHN0cmluZ0VudW1DbGFzczogYW55KTogYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5HZXRPYmpWYWx1ZXMoc3RyaW5nRW51bUNsYXNzKS5maWx0ZXIodmFsdWUgPT4gU3RyaW5nVXRpbHMuSXNTdHJpbmcodmFsdWUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIEdldE9ialZhbHVlcyhudW1iZXJFbnVtQ2xhc3M6IGFueSk6IChudW1iZXIgfCBzdHJpbmcpW10ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMobnVtYmVyRW51bUNsYXNzKS5tYXAoa2V5ID0+IG51bWJlckVudW1DbGFzc1trZXldKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBlbnVtIGluIG9iamVjdCBmb3JtYXQgdG8gbWFrZSBoYW5kbGluZyBlYXNpZXJcbiAgICAgKiBXb3JrcyBmb3IgRW51bXMgd2l0aCB0aGUgZm9sbG93aW5nIGZvcm1hdDpcbiAgICAgKiBmb286IDFcbiAgICAgKiBiYXI6IDJcbiAgICAgKiBldGMuLi5cbiAgICAgKiBAcGFyYW0gZW51bUNsYXNzXG4gICAgICogQHJldHVybnMge09iamVjdH1cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZU9iamVjdEZyb21FbnVtKGVudW1DbGFzczogYW55KTogS2V5VmFsdWVQYWlyW10ge1xuICAgICAgIC8vIGNvbnN0IG9iamVjdGlmaWVkRW51bTogeyByZWZOdW1iZXI6IG51bWJlcjsgbmFtZTogc3RyaW5nIH1bXSA9IFtdO1xuICAgICAgICBjb25zdCBvYmplY3RpZmllZEVudW06IEtleVZhbHVlUGFpcltdID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBlbnVtSXRlbSBpbiBlbnVtQ2xhc3MpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZW51bUNsYXNzW2VudW1JdGVtXSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgIG9iamVjdGlmaWVkRW51bS5wdXNoKHtrZXk6IDxudW1iZXI+ZW51bUNsYXNzW2VudW1JdGVtXSwgdmFsdWU6IGVudW1JdGVtfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2JqZWN0aWZpZWRFbnVtO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0U3RyaW5nRW51bUtleXNBcnJheShlbnVtVHlwZTogb2JqZWN0KTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBtZW1iZXJzID0gT2JqZWN0LmtleXMoZW51bVR5cGUpO1xuICAgICAgICBpZiAoIUVudW1VdGlscy5pc051bWVyYWwoZW51bVR5cGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbWVtYmVycztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIG1lbWJlcnMuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkVmFsdWUgPSBwYXJzZUludCh4LCAxMCk7XG4gICAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKHBhcnNlZFZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGtleXMucHVzaCh4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBrZXlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgIGJ1aWxkUHJvbWlzZURvbWFpblZhbHVlTGlzdEZyb21FbnVtQ2xhc3MoZW51bUNsYXNzOiBhbnksIGRpY3Rpb25hcnk6IERpY3Rpb25hcnlTZXJ2aWNlLCBrZXlzQXNEZXNjcmlwdGlvbjogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShFbnVtVXRpbHMuYnVpbGREb21haW5WYWx1ZUxpc3RGcm9tRW51bUNsYXNzKGVudW1DbGFzcywgZGljdGlvbmFyeSwga2V5c0FzRGVzY3JpcHRpb24pKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBidWlsZERvbWFpblZhbHVlTGlzdEZyb21FbnVtQ2xhc3MoZW51bUNsYXNzOiBhbnksIGRpY3Rpb25hcnk6IERpY3Rpb25hcnlTZXJ2aWNlLCBrZXlzQXNEZXNjcmlwdGlvbjogYm9vbGVhbiA9IGZhbHNlKTogQ29Eb21haW5WYWx1ZVtdIHtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbjogQ29Eb21haW5WYWx1ZVtdID0gW107XG5cbiAgICAgICAgaWYgKGtleXNBc0Rlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBlbnVtS2V5czogc3RyaW5nW10gPSBFbnVtVXRpbHMuZ2V0U3RyaW5nRW51bUtleXNBcnJheShlbnVtQ2xhc3MpO1xuICAgICAgICAgICAgZW51bUtleXMuZm9yRWFjaCgoa2V5OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkb21haW5PYmplY3RGb3JMb3Y6IENvRG9tYWluVmFsdWUgPSBuZXcgQ29Eb21haW5WYWx1ZSgpO1xuICAgICAgICAgICAgICAgIGRvbWFpbk9iamVjdEZvckxvdi5jb2RlID0gZW51bUNsYXNzW2tleV07XG4gICAgICAgICAgICAgICAgZG9tYWluT2JqZWN0Rm9yTG92LmRlc2NyaXB0aW9uID0gZGljdGlvbmFyeS5nZXQoa2V5KTtcbiAgICAgICAgICAgICAgICBkb21haW5PYmplY3RGb3JMb3Yuc2VxdWVuY2UgPSBpbmRleDtcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLnB1c2goZG9tYWluT2JqZWN0Rm9yTG92KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgRW51bVV0aWxzLlN0cmluZ0VudW1Ub0FycmF5KGVudW1DbGFzcykuZm9yRWFjaCgoc3RyRW51bVZhbDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZG9tYWluT2JqZWN0Rm9yTG92OiBDb0RvbWFpblZhbHVlID0gbmV3IENvRG9tYWluVmFsdWUoKTtcbiAgICAgICAgICAgICAgICBkb21haW5PYmplY3RGb3JMb3YuY29kZSA9IHN0ckVudW1WYWw7XG4gICAgICAgICAgICAgICAgZG9tYWluT2JqZWN0Rm9yTG92LmRlc2NyaXB0aW9uID0gZGljdGlvbmFyeS5nZXQoc3RyRW51bVZhbCk7XG4gICAgICAgICAgICAgICAgZG9tYWluT2JqZWN0Rm9yTG92LnNlcXVlbmNlID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbi5wdXNoKGRvbWFpbk9iamVjdEZvckxvdik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0S2V5QnlWYWx1ZShlbnVtVHlwZTogb2JqZWN0LCBlbnVtVmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhlbnVtVHlwZSlbT2JqZWN0LnZhbHVlcyhlbnVtVHlwZSkuaW5kZXhPZihlbnVtVmFsdWUpXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBpc051bWVyYWwoZW51bVR5cGU6IG9iamVjdCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBtZW1iZXJzID0gT2JqZWN0LmtleXMoZW51bVR5cGUpO1xuICAgICAgICBpZiAoIW1lbWJlcnMuc29tZSgoeCkgPT4gdHJ1ZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGVudW1lcmF0aW9uIHR5cGUuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwYXJzZWRDb3VudCA9IDA7XG4gICAgICAgIG1lbWJlcnMuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkVmFsdWUgPSBwYXJzZUludCh4LCAxMCk7XG4gICAgICAgICAgICBpZiAoIU51bWJlci5pc05hTihwYXJzZWRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBwYXJzZWRDb3VudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBhcnNlZENvdW50ID09PSBtZW1iZXJzLmxlbmd0aCAvIDI7XG4gICAgfVxuXG59XG5cbi8vIE91dHNpZGUgdGhlIGNsYXNzIGJlY2F1c2UgaXQncyB1c2VkIHRvIGdlbmVyYXRlIGNvbXBvbmVudCBzZWxlY3RvcnMsIGFuZCBhb3QgY2FuJ3QgY2FsbCBzdGF0aWNzLlxuZXhwb3J0IGZ1bmN0aW9uIFN0cmluZ0VudW1Ub1NpbmdsZVN0cmluZyhjbGF6ejogYW55KTogc3RyaW5nIHtcbiAgICBsZXQgc3RyOiBzdHJpbmcgPSBcIlwiO1xuXG4gICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBPYmplY3Qua2V5cyhjbGF6eik7XG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMCwgbGVuOiBudW1iZXIgPSBrZXlzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIHN0ciArPSBjbGF6eltrZXlzW2ldXSArIFwiLCBcIjtcbiAgICB9XG5cbiAgICBzdHIgPSBTdHJpbmdVdGlscy5SZW1vdmVMYXN0Q2hhcnMoc3RyLCAyKTtcbiAgICByZXR1cm4gc3RyO1xufVxuIl19
|
|
1
|
+
import { CoDomainValue } from "@colijnit/mainapi/build/model/co-domain-value.bo";
|
|
2
|
+
import { NumberUtils } from "./number-utils";
|
|
3
|
+
import { StringUtils } from "./string-utils";
|
|
4
|
+
// @dynamic
|
|
5
|
+
export class EnumUtils {
|
|
6
|
+
// Returns a new array with all string values (not keys) of given string enum class.
|
|
7
|
+
static StringEnumToArray(clazz) {
|
|
8
|
+
const asArray = [];
|
|
9
|
+
const keys = Object.keys(clazz);
|
|
10
|
+
for (let i = 0, len = keys.length; i < len; i++) {
|
|
11
|
+
asArray.push(clazz[keys[i]]);
|
|
12
|
+
}
|
|
13
|
+
return asArray;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Returns a single string representation of given string enum class
|
|
17
|
+
* @param clazz
|
|
18
|
+
* @returns {string} eg "input-lov-slideout, financial-customer-group-select" for a given clazz of InputLovSlideoutComponentSelectors
|
|
19
|
+
*/
|
|
20
|
+
static StringEnumToSingleString(clazz) {
|
|
21
|
+
return StringEnumToSingleString(clazz);
|
|
22
|
+
}
|
|
23
|
+
// Get the number values from an enum
|
|
24
|
+
static GetNumberEnumValues(numberEnumClass) {
|
|
25
|
+
return this.GetObjValues(numberEnumClass).filter(value => NumberUtils.IsNumber(value));
|
|
26
|
+
}
|
|
27
|
+
// Get the the property object value names in string format from the enum
|
|
28
|
+
static GetStringEnumValues(stringEnumClass) {
|
|
29
|
+
return this.GetObjValues(stringEnumClass).filter(value => StringUtils.IsString(value));
|
|
30
|
+
}
|
|
31
|
+
static GetObjValues(numberEnumClass) {
|
|
32
|
+
return Object.keys(numberEnumClass).map(key => numberEnumClass[key]);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Returns the enum in object format to make handling easier
|
|
36
|
+
* Works for Enums with the following format:
|
|
37
|
+
* foo: 1
|
|
38
|
+
* bar: 2
|
|
39
|
+
* etc...
|
|
40
|
+
* @param enumClass
|
|
41
|
+
* @returns {Object}
|
|
42
|
+
*/
|
|
43
|
+
static createObjectFromEnum(enumClass) {
|
|
44
|
+
// const objectifiedEnum: { refNumber: number; name: string }[] = [];
|
|
45
|
+
const objectifiedEnum = [];
|
|
46
|
+
for (const enumItem in enumClass) {
|
|
47
|
+
if (typeof enumClass[enumItem] === "number") {
|
|
48
|
+
objectifiedEnum.push({ key: enumClass[enumItem], value: enumItem });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return objectifiedEnum;
|
|
52
|
+
}
|
|
53
|
+
static getStringEnumKeysArray(enumType) {
|
|
54
|
+
const members = Object.keys(enumType);
|
|
55
|
+
if (!EnumUtils.isNumeral(enumType)) {
|
|
56
|
+
return members;
|
|
57
|
+
}
|
|
58
|
+
const keys = [];
|
|
59
|
+
members.forEach((x) => {
|
|
60
|
+
const parsedValue = parseInt(x, 10);
|
|
61
|
+
if (Number.isNaN(parsedValue)) {
|
|
62
|
+
keys.push(x);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
return keys;
|
|
66
|
+
}
|
|
67
|
+
static buildPromiseDomainValueListFromEnumClass(enumClass, dictionary, keysAsDescription = false) {
|
|
68
|
+
return new Promise((resolve, reject) => {
|
|
69
|
+
try {
|
|
70
|
+
resolve(EnumUtils.buildDomainValueListFromEnumClass(enumClass, dictionary, keysAsDescription));
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
reject();
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
static buildDomainValueListFromEnumClass(enumClass, dictionary, keysAsDescription = false) {
|
|
78
|
+
const collection = [];
|
|
79
|
+
if (keysAsDescription) {
|
|
80
|
+
const enumKeys = EnumUtils.getStringEnumKeysArray(enumClass);
|
|
81
|
+
enumKeys.forEach((key, index) => {
|
|
82
|
+
const domainObjectForLov = new CoDomainValue();
|
|
83
|
+
domainObjectForLov.code = enumClass[key];
|
|
84
|
+
domainObjectForLov.description = dictionary.get(key);
|
|
85
|
+
domainObjectForLov.sequence = index;
|
|
86
|
+
collection.push(domainObjectForLov);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
EnumUtils.StringEnumToArray(enumClass).forEach((strEnumVal, index) => {
|
|
91
|
+
const domainObjectForLov = new CoDomainValue();
|
|
92
|
+
domainObjectForLov.code = strEnumVal;
|
|
93
|
+
domainObjectForLov.description = dictionary.get(strEnumVal);
|
|
94
|
+
domainObjectForLov.sequence = index;
|
|
95
|
+
collection.push(domainObjectForLov);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
return collection;
|
|
99
|
+
}
|
|
100
|
+
static getKeyByValue(enumType, enumValue) {
|
|
101
|
+
return Object.keys(enumType)[Object.values(enumType).indexOf(enumValue)];
|
|
102
|
+
}
|
|
103
|
+
static isNumeral(enumType) {
|
|
104
|
+
const members = Object.keys(enumType);
|
|
105
|
+
if (!members.some((x) => true)) {
|
|
106
|
+
throw new TypeError("Invalid enumeration type.");
|
|
107
|
+
}
|
|
108
|
+
let parsedCount = 0;
|
|
109
|
+
members.forEach((x) => {
|
|
110
|
+
const parsedValue = parseInt(x, 10);
|
|
111
|
+
if (!Number.isNaN(parsedValue)) {
|
|
112
|
+
parsedCount++;
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
return parsedCount === members.length / 2;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Outside the class because it's used to generate component selectors, and aot can't call statics.
|
|
119
|
+
export function StringEnumToSingleString(clazz) {
|
|
120
|
+
let str = "";
|
|
121
|
+
const keys = Object.keys(clazz);
|
|
122
|
+
for (let i = 0, len = keys.length; i < len; i++) {
|
|
123
|
+
str += clazz[keys[i]] + ", ";
|
|
124
|
+
}
|
|
125
|
+
str = StringUtils.RemoveLastChars(str, 2);
|
|
126
|
+
return str;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZGNvbXBvbmVudHMvc3JjL2xpYi91dGlscy9lbnVtLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUMvRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLFdBQVc7QUFDWCxNQUFNLE9BQU8sU0FBUztJQUNsQixvRkFBb0Y7SUFDN0UsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEtBQVU7UUFDdEMsTUFBTSxPQUFPLEdBQVUsRUFBRSxDQUFDO1FBRTFCLE1BQU0sSUFBSSxHQUFhLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsR0FBRyxHQUFXLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM3RCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsd0JBQXdCLENBQUMsS0FBVTtRQUM3QyxPQUFPLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxxQ0FBcUM7SUFDOUIsTUFBTSxDQUFDLG1CQUFtQixDQUFDLGVBQW9CO1FBQ2xELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUss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QUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsQixNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUM1QixXQUFXLEVBQUUsQ0FBQzthQUNqQjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxXQUFXLEtBQUssT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUVKO0FBRUQsbUdBQW1HO0FBQ25HLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxLQUFVO0lBQy9DLElBQUksR0FBRyxHQUFXLEVBQUUsQ0FBQztJQUVyQixNQUFNLElBQUksR0FBYSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLEdBQUcsR0FBVyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDN0QsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7S0FDaEM7SUFFRCxHQUFHLEdBQUcsV0FBVyxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU3RhdGljIHV0aWxpdHkgZnVuY3Rpb24gaG9sZGVyIHJlbGF0ZWQgdG8gZW51bXMuXHJcbmltcG9ydCB7S2V5VmFsdWVQYWlyfSBmcm9tIFwiLi4vaW50ZXJmYWNlL2tleS12YWx1ZS1wYWlyXCI7XHJcbmltcG9ydCB7Q29Eb21haW5WYWx1ZX0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2NvLWRvbWFpbi12YWx1ZS5ib1wiO1xyXG5pbXBvcnQge051bWJlclV0aWxzfSBmcm9tIFwiLi9udW1iZXItdXRpbHNcIjtcclxuaW1wb3J0IHtTdHJpbmdVdGlsc30gZnJvbSBcIi4vc3RyaW5nLXV0aWxzXCI7XHJcbmltcG9ydCB7RGljdGlvbmFyeVNlcnZpY2V9IGZyb20gXCIuLi9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZVwiO1xyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgRW51bVV0aWxzIHtcclxuICAgIC8vIFJldHVybnMgYSBuZXcgYXJyYXkgd2l0aCBhbGwgc3RyaW5nIHZhbHVlcyAobm90IGtleXMpIG9mIGdpdmVuIHN0cmluZyBlbnVtIGNsYXNzLlxyXG4gICAgcHVibGljIHN0YXRpYyBTdHJpbmdFbnVtVG9BcnJheShjbGF6ejogYW55KTogc3RyaW5nW10ge1xyXG4gICAgICAgIGNvbnN0IGFzQXJyYXk6IGFueVtdID0gW107XHJcblxyXG4gICAgICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gT2JqZWN0LmtleXMoY2xhenopO1xyXG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDAsIGxlbjogbnVtYmVyID0ga2V5cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICBhc0FycmF5LnB1c2goY2xhenpba2V5c1tpXV0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGFzQXJyYXk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGEgc2luZ2xlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBnaXZlbiBzdHJpbmcgZW51bSBjbGFzc1xyXG4gICAgICogQHBhcmFtIGNsYXp6XHJcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBlZyBcImlucHV0LWxvdi1zbGlkZW91dCwgZmluYW5jaWFsLWN1c3RvbWVyLWdyb3VwLXNlbGVjdFwiIGZvciBhIGdpdmVuIGNsYXp6IG9mIElucHV0TG92U2xpZGVvdXRDb21wb25lbnRTZWxlY3RvcnNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBTdHJpbmdFbnVtVG9TaW5nbGVTdHJpbmcoY2xheno6IGFueSk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIFN0cmluZ0VudW1Ub1NpbmdsZVN0cmluZyhjbGF6eik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gR2V0IHRoZSBudW1iZXIgdmFsdWVzIGZyb20gYW4gZW51bVxyXG4gICAgcHVibGljIHN0YXRpYyBHZXROdW1iZXJFbnVtVmFsdWVzKG51bWJlckVudW1DbGFzczogYW55KTogYW55W10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkdldE9ialZhbHVlcyhudW1iZXJFbnVtQ2xhc3MpLmZpbHRlcih2YWx1ZSA9PiBOdW1iZXJVdGlscy5Jc051bWJlcih2YWx1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdldCB0aGUgdGhlIHByb3BlcnR5IG9iamVjdCB2YWx1ZSBuYW1lcyBpbiBzdHJpbmcgZm9ybWF0IGZyb20gdGhlIGVudW1cclxuICAgIHB1YmxpYyBzdGF0aWMgR2V0U3RyaW5nRW51bVZhbHVlcyhzdHJpbmdFbnVtQ2xhc3M6IGFueSk6IGFueVtdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5HZXRPYmpWYWx1ZXMoc3RyaW5nRW51bUNsYXNzKS5maWx0ZXIodmFsdWUgPT4gU3RyaW5nVXRpbHMuSXNTdHJpbmcodmFsdWUpKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIEdldE9ialZhbHVlcyhudW1iZXJFbnVtQ2xhc3M6IGFueSk6IChudW1iZXIgfCBzdHJpbmcpW10ge1xyXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhudW1iZXJFbnVtQ2xhc3MpLm1hcChrZXkgPT4gbnVtYmVyRW51bUNsYXNzW2tleV0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgZW51bSBpbiBvYmplY3QgZm9ybWF0IHRvIG1ha2UgaGFuZGxpbmcgZWFzaWVyXHJcbiAgICAgKiBXb3JrcyBmb3IgRW51bXMgd2l0aCB0aGUgZm9sbG93aW5nIGZvcm1hdDpcclxuICAgICAqIGZvbzogMVxyXG4gICAgICogYmFyOiAyXHJcbiAgICAgKiBldGMuLi5cclxuICAgICAqIEBwYXJhbSBlbnVtQ2xhc3NcclxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlT2JqZWN0RnJvbUVudW0oZW51bUNsYXNzOiBhbnkpOiBLZXlWYWx1ZVBhaXJbXSB7XHJcbiAgICAgICAvLyBjb25zdCBvYmplY3RpZmllZEVudW06IHsgcmVmTnVtYmVyOiBudW1iZXI7IG5hbWU6IHN0cmluZyB9W10gPSBbXTtcclxuICAgICAgICBjb25zdCBvYmplY3RpZmllZEVudW06IEtleVZhbHVlUGFpcltdID0gW107XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgZW51bUl0ZW0gaW4gZW51bUNsYXNzKSB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZW51bUNsYXNzW2VudW1JdGVtXSA9PT0gXCJudW1iZXJcIikge1xyXG4gICAgICAgICAgICAgICAgb2JqZWN0aWZpZWRFbnVtLnB1c2goe2tleTogPG51bWJlcj5lbnVtQ2xhc3NbZW51bUl0ZW1dLCB2YWx1ZTogZW51bUl0ZW19KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG9iamVjdGlmaWVkRW51bTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFN0cmluZ0VudW1LZXlzQXJyYXkoZW51bVR5cGU6IG9iamVjdCk6IHN0cmluZ1tdIHtcclxuICAgICAgICBjb25zdCBtZW1iZXJzID0gT2JqZWN0LmtleXMoZW51bVR5cGUpO1xyXG4gICAgICAgIGlmICghRW51bVV0aWxzLmlzTnVtZXJhbChlbnVtVHlwZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1lbWJlcnM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgIG1lbWJlcnMuZm9yRWFjaCgoeCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IHBhcnNlSW50KHgsIDEwKTtcclxuICAgICAgICAgICAgaWYgKE51bWJlci5pc05hTihwYXJzZWRWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIGtleXMucHVzaCh4KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBrZXlzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgIGJ1aWxkUHJvbWlzZURvbWFpblZhbHVlTGlzdEZyb21FbnVtQ2xhc3MoZW51bUNsYXNzOiBhbnksIGRpY3Rpb25hcnk6IERpY3Rpb25hcnlTZXJ2aWNlLCBrZXlzQXNEZXNjcmlwdGlvbjogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxDb0RvbWFpblZhbHVlW10+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShFbnVtVXRpbHMuYnVpbGREb21haW5WYWx1ZUxpc3RGcm9tRW51bUNsYXNzKGVudW1DbGFzcywgZGljdGlvbmFyeSwga2V5c0FzRGVzY3JpcHRpb24pKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGJ1aWxkRG9tYWluVmFsdWVMaXN0RnJvbUVudW1DbGFzcyhlbnVtQ2xhc3M6IGFueSwgZGljdGlvbmFyeTogRGljdGlvbmFyeVNlcnZpY2UsIGtleXNBc0Rlc2NyaXB0aW9uOiBib29sZWFuID0gZmFsc2UpOiBDb0RvbWFpblZhbHVlW10ge1xyXG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb246IENvRG9tYWluVmFsdWVbXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAoa2V5c0FzRGVzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgY29uc3QgZW51bUtleXM6IHN0cmluZ1tdID0gRW51bVV0aWxzLmdldFN0cmluZ0VudW1LZXlzQXJyYXkoZW51bUNsYXNzKTtcclxuICAgICAgICAgICAgZW51bUtleXMuZm9yRWFjaCgoa2V5OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRvbWFpbk9iamVjdEZvckxvdjogQ29Eb21haW5WYWx1ZSA9IG5ldyBDb0RvbWFpblZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICBkb21haW5PYmplY3RGb3JMb3YuY29kZSA9IGVudW1DbGFzc1trZXldO1xyXG4gICAgICAgICAgICAgICAgZG9tYWluT2JqZWN0Rm9yTG92LmRlc2NyaXB0aW9uID0gZGljdGlvbmFyeS5nZXQoa2V5KTtcclxuICAgICAgICAgICAgICAgIGRvbWFpbk9iamVjdEZvckxvdi5zZXF1ZW5jZSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbi5wdXNoKGRvbWFpbk9iamVjdEZvckxvdik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIEVudW1VdGlscy5TdHJpbmdFbnVtVG9BcnJheShlbnVtQ2xhc3MpLmZvckVhY2goKHN0ckVudW1WYWw6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZG9tYWluT2JqZWN0Rm9yTG92OiBDb0RvbWFpblZhbHVlID0gbmV3IENvRG9tYWluVmFsdWUoKTtcclxuICAgICAgICAgICAgICAgIGRvbWFpbk9iamVjdEZvckxvdi5jb2RlID0gc3RyRW51bVZhbDtcclxuICAgICAgICAgICAgICAgIGRvbWFpbk9iamVjdEZvckxvdi5kZXNjcmlwdGlvbiA9IGRpY3Rpb25hcnkuZ2V0KHN0ckVudW1WYWwpO1xyXG4gICAgICAgICAgICAgICAgZG9tYWluT2JqZWN0Rm9yTG92LnNlcXVlbmNlID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLnB1c2goZG9tYWluT2JqZWN0Rm9yTG92KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldEtleUJ5VmFsdWUoZW51bVR5cGU6IG9iamVjdCwgZW51bVZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhlbnVtVHlwZSlbT2JqZWN0LnZhbHVlcyhlbnVtVHlwZSkuaW5kZXhPZihlbnVtVmFsdWUpXTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBpc051bWVyYWwoZW51bVR5cGU6IG9iamVjdCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IG1lbWJlcnMgPSBPYmplY3Qua2V5cyhlbnVtVHlwZSk7XHJcbiAgICAgICAgaWYgKCFtZW1iZXJzLnNvbWUoKHgpID0+IHRydWUpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGVudW1lcmF0aW9uIHR5cGUuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgcGFyc2VkQ291bnQgPSAwO1xyXG4gICAgICAgIG1lbWJlcnMuZm9yRWFjaCgoeCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IHBhcnNlSW50KHgsIDEwKTtcclxuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4ocGFyc2VkVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJzZWRDb3VudCsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHBhcnNlZENvdW50ID09PSBtZW1iZXJzLmxlbmd0aCAvIDI7XHJcbiAgICB9XHJcblxyXG59XHJcblxyXG4vLyBPdXRzaWRlIHRoZSBjbGFzcyBiZWNhdXNlIGl0J3MgdXNlZCB0byBnZW5lcmF0ZSBjb21wb25lbnQgc2VsZWN0b3JzLCBhbmQgYW90IGNhbid0IGNhbGwgc3RhdGljcy5cclxuZXhwb3J0IGZ1bmN0aW9uIFN0cmluZ0VudW1Ub1NpbmdsZVN0cmluZyhjbGF6ejogYW55KTogc3RyaW5nIHtcclxuICAgIGxldCBzdHI6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBPYmplY3Qua2V5cyhjbGF6eik7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwLCBsZW46IG51bWJlciA9IGtleXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICBzdHIgKz0gY2xhenpba2V5c1tpXV0gKyBcIiwgXCI7XHJcbiAgICB9XHJcblxyXG4gICAgc3RyID0gU3RyaW5nVXRpbHMuUmVtb3ZlTGFzdENoYXJzKHN0ciwgMik7XHJcbiAgICByZXR1cm4gc3RyO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// @returns true iff given value does not equals null and does not equal undefined
|
|
2
|
-
export function notNill(value) {
|
|
3
|
-
return value !== null && value !== undefined;
|
|
4
|
-
}
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
// @returns true iff given value does not equals null and does not equal undefined
|
|
2
|
+
export function notNill(value) {
|
|
3
|
+
return value !== null && value !== undefined;
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90LW5pbGwuZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvdXRpbHMvZnVuY3Rpb24vbm90LW5pbGwuZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0ZBQWtGO0FBQ2xGLE1BQU0sVUFBVSxPQUFPLENBQUMsS0FBVTtJQUM5QixPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQztBQUNqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHJldHVybnMgdHJ1ZSBpZmYgZ2l2ZW4gdmFsdWUgZG9lcyBub3QgZXF1YWxzIG51bGwgYW5kIGRvZXMgbm90IGVxdWFsIHVuZGVmaW5lZFxyXG5leHBvcnQgZnVuY3Rpb24gbm90TmlsbCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZDtcclxufVxyXG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// @returns true iff given value equals null or equals undefined
|
|
2
|
-
export function isNill(value) {
|
|
3
|
-
return value === null || value === undefined;
|
|
4
|
-
}
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
// @returns true iff given value equals null or equals undefined
|
|
2
|
+
export function isNill(value) {
|
|
3
|
+
return value === null || value === undefined;
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtbmlsbC5mdW5jdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZGNvbXBvbmVudHMvc3JjL2xpYi91dGlscy9pcy1uaWxsLmZ1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdFQUFnRTtBQUNoRSxNQUFNLFVBQVUsTUFBTSxDQUFDLEtBQVU7SUFDN0IsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUM7QUFDakQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEByZXR1cm5zIHRydWUgaWZmIGdpdmVuIHZhbHVlIGVxdWFscyBudWxsIG9yIGVxdWFscyB1bmRlZmluZWRcclxuZXhwb3J0IGZ1bmN0aW9uIGlzTmlsbCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZDtcclxufSJdfQ==
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
// Static utility functions holder related to Maps.
|
|
2
|
-
export class MapUtils {
|
|
3
|
-
/**
|
|
4
|
-
* Returns the first key from given map, for which the value filter holds true. Basically a reverse Map.get(key) function.
|
|
5
|
-
* @param map
|
|
6
|
-
* @param valueFilter For the first value that returns true for this filter functions, its key will be returned.
|
|
7
|
-
*/
|
|
8
|
-
static FindKeyByValue(map, valueFilter) {
|
|
9
|
-
if (!map || !valueFilter) {
|
|
10
|
-
return undefined;
|
|
11
|
-
}
|
|
12
|
-
let foundKey = undefined;
|
|
13
|
-
let keyWasFound = false;
|
|
14
|
-
map.forEach((value, key) => {
|
|
15
|
-
if (!keyWasFound && valueFilter.call(this, value)) {
|
|
16
|
-
foundKey = key;
|
|
17
|
-
keyWasFound = true;
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
return foundKey;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Inserts given arrayEntry into given map, under given mapKey. What's special here, is that a NEW map entry is created with an array
|
|
24
|
-
* containing the single [arrayEntry] item, if no entry yet existed.
|
|
25
|
-
* @param map
|
|
26
|
-
* @param mapKey
|
|
27
|
-
* @param arrayEntry
|
|
28
|
-
*/
|
|
29
|
-
static InsertArrayItemIntoMap(map, mapKey, arrayEntry) {
|
|
30
|
-
if (!map) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
if (!map.has(mapKey)) {
|
|
34
|
-
map.set(mapKey, [arrayEntry]);
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
map.get(mapKey).push(arrayEntry);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
// Static utility functions holder related to Maps.
|
|
2
|
+
export class MapUtils {
|
|
3
|
+
/**
|
|
4
|
+
* Returns the first key from given map, for which the value filter holds true. Basically a reverse Map.get(key) function.
|
|
5
|
+
* @param map
|
|
6
|
+
* @param valueFilter For the first value that returns true for this filter functions, its key will be returned.
|
|
7
|
+
*/
|
|
8
|
+
static FindKeyByValue(map, valueFilter) {
|
|
9
|
+
if (!map || !valueFilter) {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
let foundKey = undefined;
|
|
13
|
+
let keyWasFound = false;
|
|
14
|
+
map.forEach((value, key) => {
|
|
15
|
+
if (!keyWasFound && valueFilter.call(this, value)) {
|
|
16
|
+
foundKey = key;
|
|
17
|
+
keyWasFound = true;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
return foundKey;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Inserts given arrayEntry into given map, under given mapKey. What's special here, is that a NEW map entry is created with an array
|
|
24
|
+
* containing the single [arrayEntry] item, if no entry yet existed.
|
|
25
|
+
* @param map
|
|
26
|
+
* @param mapKey
|
|
27
|
+
* @param arrayEntry
|
|
28
|
+
*/
|
|
29
|
+
static InsertArrayItemIntoMap(map, mapKey, arrayEntry) {
|
|
30
|
+
if (!map) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (!map.has(mapKey)) {
|
|
34
|
+
map.set(mapKey, [arrayEntry]);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
map.get(mapKey).push(arrayEntry);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL3V0aWxzL21hcC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtREFBbUQ7QUFDbkQsTUFBTSxPQUFPLFFBQVE7SUFFakI7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxjQUFjLENBQU8sR0FBYyxFQUFFLFdBQWtDO1FBRWpGLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDdEIsT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFFRCxJQUFJLFFBQVEsR0FBTSxTQUFTLENBQUM7UUFDNUIsSUFBSSxXQUFXLEdBQVksS0FBSyxDQUFDO1FBQ2pDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFRLEVBQUUsR0FBTSxFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDL0MsUUFBUSxHQUFHLEdBQUcsQ0FBQztnQkFDZixXQUFXLEdBQUcsSUFBSSxDQUFDO2FBQ3RCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLHNCQUFzQixDQUFDLEdBQWtCLEVBQUUsTUFBVyxFQUFFLFVBQWU7UUFDakYsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNOLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2xCLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztTQUNqQzthQUFNO1lBQ0gsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDcEM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTdGF0aWMgdXRpbGl0eSBmdW5jdGlvbnMgaG9sZGVyIHJlbGF0ZWQgdG8gTWFwcy5cclxuZXhwb3J0IGNsYXNzIE1hcFV0aWxzIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIGZpcnN0IGtleSBmcm9tIGdpdmVuIG1hcCwgZm9yIHdoaWNoIHRoZSB2YWx1ZSBmaWx0ZXIgaG9sZHMgdHJ1ZS4gQmFzaWNhbGx5IGEgcmV2ZXJzZSBNYXAuZ2V0KGtleSkgZnVuY3Rpb24uXHJcbiAgICAgKiBAcGFyYW0gbWFwXHJcbiAgICAgKiBAcGFyYW0gdmFsdWVGaWx0ZXIgRm9yIHRoZSBmaXJzdCB2YWx1ZSB0aGF0IHJldHVybnMgdHJ1ZSBmb3IgdGhpcyBmaWx0ZXIgZnVuY3Rpb25zLCBpdHMga2V5IHdpbGwgYmUgcmV0dXJuZWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgRmluZEtleUJ5VmFsdWU8SywgVj4obWFwOiBNYXA8SywgVj4sIHZhbHVlRmlsdGVyOiAodmFsdWU6IFYpID0+IGJvb2xlYW4pOiBLIHtcclxuXHJcbiAgICAgICAgaWYgKCFtYXAgfHwgIXZhbHVlRmlsdGVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgZm91bmRLZXk6IEsgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgbGV0IGtleVdhc0ZvdW5kOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgICAgbWFwLmZvckVhY2goKHZhbHVlOiBWLCBrZXk6IEspID0+IHtcclxuICAgICAgICAgICAgaWYgKCFrZXlXYXNGb3VuZCAmJiB2YWx1ZUZpbHRlci5jYWxsKHRoaXMsIHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgZm91bmRLZXkgPSBrZXk7XHJcbiAgICAgICAgICAgICAgICBrZXlXYXNGb3VuZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZm91bmRLZXk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnNlcnRzIGdpdmVuIGFycmF5RW50cnkgaW50byBnaXZlbiBtYXAsIHVuZGVyIGdpdmVuIG1hcEtleS4gV2hhdCdzIHNwZWNpYWwgaGVyZSwgaXMgdGhhdCBhIE5FVyBtYXAgZW50cnkgaXMgY3JlYXRlZCB3aXRoIGFuIGFycmF5XHJcbiAgICAgKiBjb250YWluaW5nIHRoZSBzaW5nbGUgW2FycmF5RW50cnldIGl0ZW0sIGlmIG5vIGVudHJ5IHlldCBleGlzdGVkLlxyXG4gICAgICogQHBhcmFtIG1hcFxyXG4gICAgICogQHBhcmFtIG1hcEtleVxyXG4gICAgICogQHBhcmFtIGFycmF5RW50cnlcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBJbnNlcnRBcnJheUl0ZW1JbnRvTWFwKG1hcDogTWFwPGFueSwgYW55PiwgbWFwS2V5OiBhbnksIGFycmF5RW50cnk6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICghbWFwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghbWFwLmhhcyhtYXBLZXkpKSB7XHJcbiAgICAgICAgICAgIG1hcC5zZXQobWFwS2V5LCBbYXJyYXlFbnRyeV0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1hcC5nZXQobWFwS2V5KS5wdXNoKGFycmF5RW50cnkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|