my-common-zzp 0.0.1
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 -0
- package/esm2022/lib/ag-grid/AgGridSubPageBase.mjs +138 -0
- package/esm2022/lib/ag-grid/AgGridSubPageBaseEx.mjs +274 -0
- package/esm2022/lib/ag-grid/DEFAULT_COL_DEF.mjs +109 -0
- package/esm2022/lib/ag-grid/FIX_COLDEFS.mjs +23 -0
- package/esm2022/lib/ag-grid/ag-gird-toolbar/component.mjs +110 -0
- package/esm2022/lib/ag-grid/index.mjs +49 -0
- package/esm2022/lib/component/_componentBase.mjs +104 -0
- package/esm2022/lib/component/_objectPageBase.mjs +14 -0
- package/esm2022/lib/component/_subPageBase.mjs +49 -0
- package/esm2022/lib/component/_subPageBaseEx.mjs +117 -0
- package/esm2022/lib/component/_viewStateServiceBase.mjs +212 -0
- package/esm2022/lib/component/_viewStateServiceBaseEx.mjs +173 -0
- package/esm2022/lib/component/_workListBase.mjs +68 -0
- package/esm2022/lib/component/fullScreenDot.mjs +134 -0
- package/esm2022/lib/component/index.mjs +11 -0
- package/esm2022/lib/component/object-headerBase.mjs +297 -0
- package/esm2022/lib/component/object-pageBase.mjs +135 -0
- package/esm2022/lib/component/viewStateService/GetDefaultObjectPageActions.mjs +21 -0
- package/esm2022/lib/component/viewStateService/ILayoutSetting.mjs +2 -0
- package/esm2022/lib/component/viewStateService/IObjectHeader.mjs +2 -0
- package/esm2022/lib/component/viewStateService/IObjectPage.mjs +2 -0
- package/esm2022/lib/component/viewStateService/IObjectPageLayoutSetting.mjs +2 -0
- package/esm2022/lib/component/viewStateService/IViewStateService.mjs +2 -0
- package/esm2022/lib/component/viewStateService/IWorkListLayoutSetting.mjs +2 -0
- package/esm2022/lib/component/work-listBase.mjs +220 -0
- package/esm2022/lib/formly-config/formlyModuleConfig.mjs +74 -0
- package/esm2022/lib/formly-config/index.mjs +8 -0
- package/esm2022/lib/formly-config/types/avatar/component.mjs +206 -0
- package/esm2022/lib/formly-config/types/avatar/cropImageModal/component.mjs +294 -0
- package/esm2022/lib/formly-config/types/avatar/cropImageModal/data.mjs +70 -0
- package/esm2022/lib/formly-config/types/avatar/cropImageModal/method.mjs +239 -0
- package/esm2022/lib/formly-config/types/buttonType.mjs +302 -0
- package/esm2022/lib/formly-config/types/checkbox.mjs +83 -0
- package/esm2022/lib/formly-config/types/date/date-range.mjs +152 -0
- package/esm2022/lib/formly-config/types/date/date.mjs +148 -0
- package/esm2022/lib/formly-config/types/date/method.mjs +53 -0
- package/esm2022/lib/formly-config/types/display-text.mjs +120 -0
- package/esm2022/lib/formly-config/types/input/Input-percent-number.mjs +128 -0
- package/esm2022/lib/formly-config/types/input/input-number.mjs +183 -0
- package/esm2022/lib/formly-config/types/input/input-text.mjs +83 -0
- package/esm2022/lib/formly-config/types/input/input-textarea.mjs +128 -0
- package/esm2022/lib/formly-config/types/pickup.mjs +186 -0
- package/esm2022/lib/formly-config/types/select/addNewModal.mjs +170 -0
- package/esm2022/lib/formly-config/types/select/checkbox-group.mjs +242 -0
- package/esm2022/lib/formly-config/types/select/radio-group.mjs +165 -0
- package/esm2022/lib/formly-config/types/select/select/component.mjs +211 -0
- package/esm2022/lib/formly-config/types/select/select-cascader.mjs +138 -0
- package/esm2022/lib/formly-config/types/select/select-multi-ex/component.mjs +321 -0
- package/esm2022/lib/formly-config/types/select/select-multi.mjs +204 -0
- package/esm2022/lib/formly-config/types/select/switch-group.mjs +251 -0
- package/esm2022/lib/formly-config/utils/DISPLAYFIELD.mjs +13 -0
- package/esm2022/lib/formly-config/utils/VALUEFIELD.mjs +9 -0
- package/esm2022/lib/formly-config/utils/createFormlyField.mjs +216 -0
- package/esm2022/lib/formly-config/utils/formlyField.mjs +18 -0
- package/esm2022/lib/formly-config/utils/formlyField.utils.mjs +97 -0
- package/esm2022/lib/formly-config/validators/index.mjs +164 -0
- package/esm2022/lib/formly-config/validators/regular.mjs +10 -0
- package/esm2022/lib/formly-config/wrappers/collapseWrapper.mjs +37 -0
- package/esm2022/lib/formly-config/wrappers/label-horizontal.mjs +52 -0
- package/esm2022/lib/formly-config/wrappers/label-vertical.mjs +234 -0
- package/esm2022/lib/formly-config/wrappers/navRepeatWrapper.mjs +199 -0
- package/esm2022/lib/formly-config/wrappers/repeatWrapper.mjs +71 -0
- package/esm2022/lib/formly-config/wrappers/sectionWrapper.mjs +55 -0
- package/esm2022/lib/formly-config/wrappers/separatorWrapper.mjs +21 -0
- package/esm2022/lib/grid-config/editor/date/date.mjs +159 -0
- package/esm2022/lib/grid-config/editor/input/input-number-type.mjs +67 -0
- package/esm2022/lib/grid-config/editor/input/input-text-type.mjs +67 -0
- package/esm2022/lib/grid-config/editor/pickup/ag-grid-pickup.mjs +170 -0
- package/esm2022/lib/grid-config/editor/select/select-type.mjs +115 -0
- package/esm2022/lib/grid-config/index.mjs +11 -0
- package/esm2022/lib/grid-config/renderer/action/component.mjs +161 -0
- package/esm2022/lib/grid-config/renderer/codeMap.mjs +44 -0
- package/esm2022/lib/grid-config/renderer/date.mjs +33 -0
- package/esm2022/lib/grid-config/renderer/number.mjs +37 -0
- package/esm2022/lib/grid-config/type.mjs +2 -0
- package/esm2022/lib/material.module.mjs +188 -0
- package/esm2022/lib/ngZorroAntd.module.mjs +301 -0
- package/esm2022/lib/service/GeneralServiceBase.mjs +10 -0
- package/esm2022/lib/service/GlobalStateService.mjs +30 -0
- package/esm2022/lib/service/UserSetting.mjs +31 -0
- package/esm2022/lib/service/_appInjector.mjs +22 -0
- package/esm2022/lib/service/_notificationService.mjs +29 -0
- package/esm2022/lib/service/_storeBase.mjs +581 -0
- package/esm2022/lib/service/application.mjs +135 -0
- package/esm2022/lib/service/index.mjs +12 -0
- package/esm2022/lib/service/inject.token.mjs +10 -0
- package/esm2022/lib/service/layoutService.mjs +282 -0
- package/esm2022/lib/service/model/Criteria.mjs +2 -0
- package/esm2022/lib/service/model/FieldFilterInfo.mjs +11 -0
- package/esm2022/lib/service/model/FilterGroup.mjs +117 -0
- package/esm2022/lib/service/model/Msg.mjs +3 -0
- package/esm2022/lib/service/model/PrepareFilter.mjs +61 -0
- package/esm2022/lib/service/model/createFilterGroups.mjs +24 -0
- package/esm2022/lib/service/model/dialogSetting.mjs +24 -0
- package/esm2022/lib/service/model/index.mjs +7 -0
- package/esm2022/lib/service/staticService.mjs +123 -0
- package/esm2022/lib/service/utils/CreateStoreService.mjs +12 -0
- package/esm2022/lib/service/utils/PrepareCriteria.mjs +60 -0
- package/esm2022/lib/service/utils/SyncEntities.mjs +58 -0
- package/esm2022/lib/service/utils/index.mjs +7 -0
- package/esm2022/lib/service/utils/isValidHttpUrl.mjs +10 -0
- package/esm2022/lib/service/utils/obj2Str.mjs +27 -0
- package/esm2022/lib/service/utils/str2Obj.mjs +25 -0
- package/esm2022/lib/uc/common/barItem.const.mjs +73 -0
- package/esm2022/lib/uc/common/barItem.mjs +3 -0
- package/esm2022/lib/uc/common/index.mjs +8 -0
- package/esm2022/lib/uc/common/node.mjs +2 -0
- package/esm2022/lib/uc/common/state-action.mjs +61 -0
- package/esm2022/lib/uc/common/tableColumn.utils.mjs +108 -0
- package/esm2022/lib/uc/common/tableColumnSetting.const.mjs +155 -0
- package/esm2022/lib/uc/common/tableColumnSetting.mjs +22 -0
- package/esm2022/lib/uc/index.mjs +22 -0
- package/esm2022/lib/uc/uc-date-range/component.mjs +256 -0
- package/esm2022/lib/uc/uc-dialog/ucNzModalContent.Component.mjs +110 -0
- package/esm2022/lib/uc/uc-fields/component.mjs +432 -0
- package/esm2022/lib/uc/uc-fields/data-model.mjs +11 -0
- package/esm2022/lib/uc/uc-fields/fieldsEdit.component.mjs +241 -0
- package/esm2022/lib/uc/uc-fields/fieldsReadonly.component.mjs +85 -0
- package/esm2022/lib/uc/uc-fields/uc-form.component.mjs +157 -0
- package/esm2022/lib/uc/uc-list-filter/uc-list-filterOption.mjs +37 -0
- package/esm2022/lib/uc/uc-list-nav/component.mjs +106 -0
- package/esm2022/lib/uc/uc-list-table/component.mjs +102 -0
- package/esm2022/lib/uc/uc-list-table/readExcel.mjs +99 -0
- package/esm2022/lib/uc/uc-list-table/table.component.mjs +473 -0
- package/esm2022/lib/uc/uc-list-tree/component.mjs +130 -0
- package/esm2022/lib/uc/uc-list-tree/readExcel.mjs +99 -0
- package/esm2022/lib/uc/uc-list-tree/table.component.mjs +650 -0
- package/esm2022/lib/uc/uc-list-tree/tableColumnSetting.mjs +145 -0
- package/esm2022/lib/uc/uc-nav-list/component.mjs +67 -0
- package/esm2022/lib/uc/uc-nav1/uc-nav1.component.mjs +196 -0
- package/esm2022/lib/uc/uc-perfect-scrollbar/component.mjs +112 -0
- package/esm2022/lib/uc/uc-pickup-window/colDefs.mjs +515 -0
- package/esm2022/lib/uc/uc-pickup-window/component.mjs +359 -0
- package/esm2022/lib/uc/uc-pickup-window/header.component.mjs +158 -0
- package/esm2022/lib/uc/uc-subheader/component.mjs +35 -0
- package/esm2022/lib/uc/uc-title-nav/animations.mjs +121 -0
- package/esm2022/lib/uc/uc-title-nav/component.mjs +289 -0
- package/esm2022/lib/uc/uc-toolbar/component.mjs +76 -0
- package/esm2022/lib/ucModel.mjs +469 -0
- package/esm2022/lib/utils/I18nService.mjs +37 -0
- package/esm2022/lib/utils/allowEdit.directive.mjs +20 -0
- package/esm2022/lib/utils/applyFilter.mjs +153 -0
- package/esm2022/lib/utils/canDeactivate.mjs +16 -0
- package/esm2022/lib/utils/confirmClick.directive.mjs +49 -0
- package/esm2022/lib/utils/datetimeUtils.mjs +31 -0
- package/esm2022/lib/utils/formatNumberT.mjs +36 -0
- package/esm2022/lib/utils/getColumnByLabel.mjs +15 -0
- package/esm2022/lib/utils/getDateAbbr.mjs +69 -0
- package/esm2022/lib/utils/getObjectPropertyValue.mjs +16 -0
- package/esm2022/lib/utils/getUniqueIdWithPrefix.mjs +17 -0
- package/esm2022/lib/utils/getValueChanges.mjs +85 -0
- package/esm2022/lib/utils/getViewPort.mjs +16 -0
- package/esm2022/lib/utils/index.mjs +58 -0
- package/esm2022/lib/utils/message-utils.mjs +108 -0
- package/esm2022/lib/utils/modal-utils.mjs +144 -0
- package/esm2022/lib/utils/ro.directive.mjs +44 -0
- package/esm2022/lib/utils/saveAsExcel.mjs +17 -0
- package/esm2022/lib/utils/time-elapsed.pipe.mjs +94 -0
- package/esm2022/my-common-zzp.mjs +5 -0
- package/esm2022/my-common.mjs +5 -0
- package/esm2022/public-api.mjs +11 -0
- package/fesm2022/my-common-zzp.mjs +16169 -0
- package/fesm2022/my-common-zzp.mjs.map +1 -0
- package/fesm2022/my-common.mjs +16169 -0
- package/fesm2022/my-common.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/ag-grid/AgGridSubPageBase.d.ts +53 -0
- package/lib/ag-grid/AgGridSubPageBaseEx.d.ts +69 -0
- package/lib/ag-grid/DEFAULT_COL_DEF.d.ts +2 -0
- package/lib/ag-grid/FIX_COLDEFS.d.ts +2 -0
- package/lib/ag-grid/ag-gird-toolbar/component.d.ts +33 -0
- package/lib/ag-grid/index.d.ts +9 -0
- package/lib/component/_componentBase.d.ts +73 -0
- package/lib/component/_objectPageBase.d.ts +16 -0
- package/lib/component/_subPageBase.d.ts +27 -0
- package/lib/component/_subPageBaseEx.d.ts +54 -0
- package/lib/component/_viewStateServiceBase.d.ts +128 -0
- package/lib/component/_viewStateServiceBaseEx.d.ts +123 -0
- package/lib/component/_workListBase.d.ts +24 -0
- package/lib/component/fullScreenDot.d.ts +26 -0
- package/lib/component/index.d.ts +10 -0
- package/lib/component/object-headerBase.d.ts +26 -0
- package/lib/component/object-pageBase.d.ts +30 -0
- package/lib/component/viewStateService/GetDefaultObjectPageActions.d.ts +4 -0
- package/lib/component/viewStateService/ILayoutSetting.d.ts +15 -0
- package/lib/component/viewStateService/IObjectHeader.d.ts +18 -0
- package/lib/component/viewStateService/IObjectPage.d.ts +15 -0
- package/lib/component/viewStateService/IObjectPageLayoutSetting.d.ts +39 -0
- package/lib/component/viewStateService/IViewStateService.d.ts +24 -0
- package/lib/component/viewStateService/IWorkListLayoutSetting.d.ts +20 -0
- package/lib/component/work-listBase.d.ts +38 -0
- package/lib/formly-config/formlyModuleConfig.d.ts +102 -0
- package/lib/formly-config/index.d.ts +6 -0
- package/lib/formly-config/types/avatar/component.d.ts +30 -0
- package/lib/formly-config/types/avatar/cropImageModal/component.d.ts +53 -0
- package/lib/formly-config/types/avatar/cropImageModal/data.d.ts +21 -0
- package/lib/formly-config/types/avatar/cropImageModal/method.d.ts +28 -0
- package/lib/formly-config/types/buttonType.d.ts +18 -0
- package/lib/formly-config/types/checkbox.d.ts +14 -0
- package/lib/formly-config/types/date/date-range.d.ts +18 -0
- package/lib/formly-config/types/date/date.d.ts +19 -0
- package/lib/formly-config/types/date/method.d.ts +3 -0
- package/lib/formly-config/types/display-text.d.ts +17 -0
- package/lib/formly-config/types/input/Input-percent-number.d.ts +19 -0
- package/lib/formly-config/types/input/input-number.d.ts +22 -0
- package/lib/formly-config/types/input/input-text.d.ts +13 -0
- package/lib/formly-config/types/input/input-textarea.d.ts +25 -0
- package/lib/formly-config/types/pickup.d.ts +46 -0
- package/lib/formly-config/types/select/addNewModal.d.ts +29 -0
- package/lib/formly-config/types/select/checkbox-group.d.ts +25 -0
- package/lib/formly-config/types/select/radio-group.d.ts +19 -0
- package/lib/formly-config/types/select/select/component.d.ts +40 -0
- package/lib/formly-config/types/select/select-cascader.d.ts +43 -0
- package/lib/formly-config/types/select/select-multi-ex/component.d.ts +44 -0
- package/lib/formly-config/types/select/select-multi.d.ts +25 -0
- package/lib/formly-config/types/select/switch-group.d.ts +31 -0
- package/lib/formly-config/utils/DISPLAYFIELD.d.ts +11 -0
- package/lib/formly-config/utils/VALUEFIELD.d.ts +7 -0
- package/lib/formly-config/utils/createFormlyField.d.ts +8 -0
- package/lib/formly-config/utils/formlyField.d.ts +53 -0
- package/lib/formly-config/utils/formlyField.utils.d.ts +43 -0
- package/lib/formly-config/validators/index.d.ts +72 -0
- package/lib/formly-config/validators/regular.d.ts +9 -0
- package/lib/formly-config/wrappers/collapseWrapper.d.ts +6 -0
- package/lib/formly-config/wrappers/label-horizontal.d.ts +7 -0
- package/lib/formly-config/wrappers/label-vertical.d.ts +25 -0
- package/lib/formly-config/wrappers/navRepeatWrapper.d.ts +18 -0
- package/lib/formly-config/wrappers/repeatWrapper.d.ts +7 -0
- package/lib/formly-config/wrappers/sectionWrapper.d.ts +6 -0
- package/lib/formly-config/wrappers/separatorWrapper.d.ts +6 -0
- package/lib/grid-config/editor/date/date.d.ts +37 -0
- package/lib/grid-config/editor/input/input-number-type.d.ts +18 -0
- package/lib/grid-config/editor/input/input-text-type.d.ts +15 -0
- package/lib/grid-config/editor/pickup/ag-grid-pickup.d.ts +47 -0
- package/lib/grid-config/editor/select/select-type.d.ts +25 -0
- package/lib/grid-config/index.d.ts +9 -0
- package/lib/grid-config/renderer/action/component.d.ts +28 -0
- package/lib/grid-config/renderer/codeMap.d.ts +15 -0
- package/lib/grid-config/renderer/date.d.ts +12 -0
- package/lib/grid-config/renderer/number.d.ts +12 -0
- package/lib/grid-config/type.d.ts +7 -0
- package/lib/material.module.d.ts +49 -0
- package/lib/ngZorroAntd.module.d.ts +78 -0
- package/lib/service/GeneralServiceBase.d.ts +14 -0
- package/lib/service/GlobalStateService.d.ts +16 -0
- package/lib/service/UserSetting.d.ts +16 -0
- package/lib/service/_appInjector.d.ts +14 -0
- package/lib/service/_notificationService.d.ts +13 -0
- package/lib/service/_storeBase.d.ts +232 -0
- package/lib/service/application.d.ts +61 -0
- package/lib/service/index.d.ts +11 -0
- package/lib/service/inject.token.d.ts +3 -0
- package/lib/service/layoutService.d.ts +61 -0
- package/lib/service/model/Criteria.d.ts +20 -0
- package/lib/service/model/FieldFilterInfo.d.ts +9 -0
- package/lib/service/model/FilterGroup.d.ts +43 -0
- package/lib/service/model/Msg.d.ts +5 -0
- package/lib/service/model/PrepareFilter.d.ts +11 -0
- package/lib/service/model/createFilterGroups.d.ts +17 -0
- package/lib/service/model/dialogSetting.d.ts +29 -0
- package/lib/service/model/index.d.ts +7 -0
- package/lib/service/staticService.d.ts +23 -0
- package/lib/service/utils/CreateStoreService.d.ts +7 -0
- package/lib/service/utils/PrepareCriteria.d.ts +22 -0
- package/lib/service/utils/SyncEntities.d.ts +1 -0
- package/lib/service/utils/index.d.ts +6 -0
- package/lib/service/utils/isValidHttpUrl.d.ts +1 -0
- package/lib/service/utils/obj2Str.d.ts +8 -0
- package/lib/service/utils/str2Obj.d.ts +7 -0
- package/lib/uc/common/barItem.const.d.ts +27 -0
- package/lib/uc/common/barItem.d.ts +14 -0
- package/lib/uc/common/index.d.ts +7 -0
- package/lib/uc/common/node.d.ts +6 -0
- package/lib/uc/common/state-action.d.ts +42 -0
- package/lib/uc/common/tableColumn.utils.d.ts +3 -0
- package/lib/uc/common/tableColumnSetting.const.d.ts +55 -0
- package/lib/uc/common/tableColumnSetting.d.ts +127 -0
- package/lib/uc/index.d.ts +21 -0
- package/lib/uc/uc-date-range/component.d.ts +34 -0
- package/lib/uc/uc-dialog/ucNzModalContent.Component.d.ts +19 -0
- package/lib/uc/uc-fields/component.d.ts +74 -0
- package/lib/uc/uc-fields/data-model.d.ts +61 -0
- package/lib/uc/uc-fields/fieldsEdit.component.d.ts +44 -0
- package/lib/uc/uc-fields/fieldsReadonly.component.d.ts +14 -0
- package/lib/uc/uc-fields/uc-form.component.d.ts +27 -0
- package/lib/uc/uc-list-filter/uc-list-filterOption.d.ts +11 -0
- package/lib/uc/uc-list-nav/component.d.ts +32 -0
- package/lib/uc/uc-list-table/component.d.ts +34 -0
- package/lib/uc/uc-list-table/readExcel.d.ts +21 -0
- package/lib/uc/uc-list-table/table.component.d.ts +95 -0
- package/lib/uc/uc-list-tree/component.d.ts +44 -0
- package/lib/uc/uc-list-tree/readExcel.d.ts +21 -0
- package/lib/uc/uc-list-tree/table.component.d.ts +124 -0
- package/lib/uc/uc-list-tree/tableColumnSetting.d.ts +113 -0
- package/lib/uc/uc-nav-list/component.d.ts +24 -0
- package/lib/uc/uc-nav1/uc-nav1.component.d.ts +28 -0
- package/lib/uc/uc-perfect-scrollbar/component.d.ts +26 -0
- package/lib/uc/uc-pickup-window/colDefs.d.ts +561 -0
- package/lib/uc/uc-pickup-window/component.d.ts +68 -0
- package/lib/uc/uc-pickup-window/header.component.d.ts +27 -0
- package/lib/uc/uc-subheader/component.d.ts +15 -0
- package/lib/uc/uc-title-nav/animations.d.ts +22 -0
- package/lib/uc/uc-title-nav/component.d.ts +32 -0
- package/lib/uc/uc-toolbar/component.d.ts +19 -0
- package/lib/ucModel.d.ts +84 -0
- package/lib/utils/I18nService.d.ts +14 -0
- package/lib/utils/allowEdit.directive.d.ts +10 -0
- package/lib/utils/applyFilter.d.ts +8 -0
- package/lib/utils/canDeactivate.d.ts +11 -0
- package/lib/utils/confirmClick.directive.d.ts +14 -0
- package/lib/utils/datetimeUtils.d.ts +10 -0
- package/lib/utils/formatNumberT.d.ts +8 -0
- package/lib/utils/getColumnByLabel.d.ts +8 -0
- package/lib/utils/getDateAbbr.d.ts +6 -0
- package/lib/utils/getObjectPropertyValue.d.ts +7 -0
- package/lib/utils/getUniqueIdWithPrefix.d.ts +7 -0
- package/lib/utils/getValueChanges.d.ts +15 -0
- package/lib/utils/getViewPort.d.ts +4 -0
- package/lib/utils/index.d.ts +22 -0
- package/lib/utils/message-utils.d.ts +33 -0
- package/lib/utils/modal-utils.d.ts +19 -0
- package/lib/utils/ro.directive.d.ts +12 -0
- package/lib/utils/saveAsExcel.d.ts +1 -0
- package/lib/utils/time-elapsed.pipe.d.ts +42 -0
- package/package.json +26 -0
- package/public-api.d.ts +10 -0
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# MyCommon
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 18.1.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project my-common` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-common`.
|
|
8
|
+
> Note: Don't forget to add `--project my-common` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build my-common` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build my-common`, go to the dist folder `cd dist/my-common` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test my-common` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
//#region
|
|
2
|
+
import { Directive, signal, ViewChild } from '@angular/core';
|
|
3
|
+
import _ from 'lodash';
|
|
4
|
+
import { ComponentBase, } from '../component';
|
|
5
|
+
import { DEFAULT_COL_DEF } from './DEFAULT_COL_DEF';
|
|
6
|
+
import { AgGridToolbarComponent } from './ag-gird-toolbar/component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../component";
|
|
9
|
+
//#endregion
|
|
10
|
+
/**
|
|
11
|
+
* 只读的 AG-GRID
|
|
12
|
+
*/
|
|
13
|
+
export class AgGridSubPageBase extends ComponentBase {
|
|
14
|
+
constructor(vss = null) {
|
|
15
|
+
super();
|
|
16
|
+
this.vss = vss;
|
|
17
|
+
// 列表所有数据
|
|
18
|
+
this.dataRows = [];
|
|
19
|
+
//页面ID
|
|
20
|
+
this.pageId = '';
|
|
21
|
+
// toolbar 变量
|
|
22
|
+
this.allowShowCheckbox = true;
|
|
23
|
+
this.columnDefs = [];
|
|
24
|
+
this.gridOptions = {
|
|
25
|
+
//columnDefs: colDefs,
|
|
26
|
+
defaultColDef: DEFAULT_COL_DEF,
|
|
27
|
+
rowSelection: 'multiple',
|
|
28
|
+
onRowClicked: this.onRowClicked.bind(this),
|
|
29
|
+
onSelectionChanged: this.onSelectionChanged.bind(this),
|
|
30
|
+
};
|
|
31
|
+
// 加总列数据计算
|
|
32
|
+
this.pinnedBottomRowData = [];
|
|
33
|
+
//#region 行选择、取消选择 相关功能
|
|
34
|
+
this.selectedRowsCount = signal(0); // 微变量
|
|
35
|
+
this._previousMasterId = 0;
|
|
36
|
+
this._previousRowData = [];
|
|
37
|
+
}
|
|
38
|
+
onGridReady(params) {
|
|
39
|
+
this.gridApi = params.api;
|
|
40
|
+
this.gridApi.addEventListener('cellKeyDown', this.onCellKeyDown.bind(this));
|
|
41
|
+
}
|
|
42
|
+
// 用于即时验证、保存单元格数据以及更新依赖单元格的其他组件。
|
|
43
|
+
onCellEditingStopped(event) { }
|
|
44
|
+
// 行修改事件,用于批量处理数据、同步整个数据集、刷新统计数据等,粗粒度,处理整行或整个数据集的变化
|
|
45
|
+
onRowDataUpdated(event) {
|
|
46
|
+
// 获取所有的数据
|
|
47
|
+
const rowData = this.getAllGridData();
|
|
48
|
+
//console.log('onRowDataUpdated');
|
|
49
|
+
// 计算总计行
|
|
50
|
+
const totalRow = rowData.reduce((acc, row) => {
|
|
51
|
+
return {
|
|
52
|
+
name: 'Total',
|
|
53
|
+
description: acc.description + 1,
|
|
54
|
+
};
|
|
55
|
+
}, { name: 'Total', description: 0 });
|
|
56
|
+
this.pinnedBottomRowData = [totalRow];
|
|
57
|
+
// 更新旧数据状态
|
|
58
|
+
this._previousRowData = _.cloneDeep(rowData);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 通过 UI HOT-KEY 处理新增删除拖拽编辑数据
|
|
62
|
+
* 注册各种热键操作
|
|
63
|
+
* @param event
|
|
64
|
+
*/
|
|
65
|
+
onCellKeyDown(event) { }
|
|
66
|
+
onRowClicked(event) {
|
|
67
|
+
// 单选情况下,点击选择,并取消之前的选择
|
|
68
|
+
if (!this.allowShowCheckbox) {
|
|
69
|
+
//console.log(event.node);
|
|
70
|
+
event.node.setSelected(true, true);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
cancelSelected() {
|
|
74
|
+
// 取消选择所有行
|
|
75
|
+
this.gridApi.deselectAll();
|
|
76
|
+
//this.gridApi.getSelectedNodes().map((node) => node.setSelected(false));
|
|
77
|
+
}
|
|
78
|
+
onSelectionChanged(event) {
|
|
79
|
+
this.selectedRowsCount.update(() => this.gridApi.getSelectedNodes().length);
|
|
80
|
+
}
|
|
81
|
+
//#endregion
|
|
82
|
+
//sortByConfigs = [];
|
|
83
|
+
menuItemClick(params = undefined) {
|
|
84
|
+
// 排序相关操作
|
|
85
|
+
if ('sort' in params) {
|
|
86
|
+
// todo: 'code,name:desc' 字符串转成数组的模式
|
|
87
|
+
const sortCols = [].concat(params['sort']);
|
|
88
|
+
this.gridApi.applyColumnState({
|
|
89
|
+
state: sortCols,
|
|
90
|
+
applyOrder: false,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* 读取所有数据
|
|
96
|
+
* @returns
|
|
97
|
+
*/
|
|
98
|
+
getAllGridData() {
|
|
99
|
+
const rowData = [];
|
|
100
|
+
this.gridApi?.forEachNode((node) => rowData.push(node.data));
|
|
101
|
+
return rowData;
|
|
102
|
+
}
|
|
103
|
+
//#region 数据更新
|
|
104
|
+
agGridSetData(list) {
|
|
105
|
+
// id 不相同,则更新,
|
|
106
|
+
if (this._previousMasterId !== this.vss.masterModel.id) {
|
|
107
|
+
this.dataRows = list;
|
|
108
|
+
//this.gridApi.refreshCells(); //.setRowData(this.rowData); // 更新表格数据
|
|
109
|
+
this._previousMasterId = this.vss.masterModel.id;
|
|
110
|
+
this._previousRowData = _.cloneDeep(list);
|
|
111
|
+
}
|
|
112
|
+
// 如果相同,且已提交,则刷新
|
|
113
|
+
else if (this.dataStore.isDirty === false) {
|
|
114
|
+
this.dataRows = list;
|
|
115
|
+
//this.gridApi.redrawRows();
|
|
116
|
+
this._previousRowData = _.cloneDeep(list);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//#endregion
|
|
120
|
+
onAgGridToolbarClick(event) {
|
|
121
|
+
if (event.actionCode === 'CANCEL_SELECT') {
|
|
122
|
+
this.cancelSelected();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// 在组件销毁时移除全局点击事件监听器
|
|
126
|
+
ngOnDestroy() {
|
|
127
|
+
console.log('SubPageBaseExt Destroy...');
|
|
128
|
+
}
|
|
129
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AgGridSubPageBase, deps: [{ token: i1.ViewStateServiceBaseEx }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
130
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0", type: AgGridSubPageBase, viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["agGridToolbar"], descendants: true, read: AgGridToolbarComponent }], usesInheritance: true, ngImport: i0 }); }
|
|
131
|
+
}
|
|
132
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AgGridSubPageBase, decorators: [{
|
|
133
|
+
type: Directive
|
|
134
|
+
}], ctorParameters: () => [{ type: i1.ViewStateServiceBaseEx }], propDecorators: { toolbar: [{
|
|
135
|
+
type: ViewChild,
|
|
136
|
+
args: ['agGridToolbar', { read: AgGridToolbarComponent }]
|
|
137
|
+
}] } });
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWdHcmlkU3ViUGFnZUJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teS1jb21tb24vc3JjL2xpYi9hZy1ncmlkL0FnR3JpZFN1YlBhZ2VCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVM7QUFDVCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFRN0QsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRXZCLE9BQU8sRUFDSCxhQUFhLEdBRWhCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBR3JFLFlBQVk7QUFFWjs7R0FFRztBQUVILE1BQU0sT0FBZ0IsaUJBQWtCLFNBQVEsYUFBYTtJQTZCekQsWUFBbUIsTUFBOEIsSUFBSTtRQUNqRCxLQUFLLEVBQUUsQ0FBQztRQURPLFFBQUcsR0FBSCxHQUFHLENBQStCO1FBeEJyRCxTQUFTO1FBQ1QsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVkLE1BQU07UUFDTixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBRVosYUFBYTtRQUNiLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQVFmLGVBQVUsR0FBYSxFQUFFLENBQUM7UUFDMUIsZ0JBQVcsR0FBRztZQUNwQixzQkFBc0I7WUFDdEIsYUFBYSxFQUFFLGVBQWU7WUFDOUIsWUFBWSxFQUFFLFVBQVU7WUFDeEIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUMxQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUN6RCxDQUFDO1FBaUJGLFVBQVU7UUFDVix3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUE4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QUNkLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLHFFQUFxRTtZQUNyRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxnQkFBZ0I7YUFDWCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLDRCQUE0QjtZQUM1QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0wsQ0FBQztJQUdELFlBQVk7SUFFRixvQkFBb0IsQ0FBQyxLQUFLO1FBQ2hDLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxlQUFlLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNMLENBQUM7SUFFRCxvQkFBb0I7SUFDcEIsV0FBVztRQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUM3QyxDQUFDOzhHQXhKaUIsaUJBQWlCO2tHQUFqQixpQkFBaUIsK0dBZ0JDLHNCQUFzQjs7MkZBaEJ4QyxpQkFBaUI7a0JBRHRDLFNBQVM7MkZBa0JJLE9BQU87c0JBRGhCLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uXHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgc2lnbmFsLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIENvbERlZixcclxuICAgIEdyaWRBcGksXHJcbiAgICBHcmlkUmVhZHlFdmVudCxcclxuICAgIFJvd0RhdGFVcGRhdGVkRXZlbnQsXHJcbiAgICBTZWxlY3Rpb25DaGFuZ2VkRXZlbnQsXHJcbn0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIENvbXBvbmVudEJhc2UsXHJcbiAgICBWaWV3U3RhdGVTZXJ2aWNlQmFzZUV4LFxyXG59IGZyb20gJy4uL2NvbXBvbmVudCc7XHJcbmltcG9ydCB7IERFRkFVTFRfQ09MX0RFRiB9IGZyb20gJy4vREVGQVVMVF9DT0xfREVGJztcclxuaW1wb3J0IHsgQWdHcmlkVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vYWctZ2lyZC10b29sYmFyL2NvbXBvbmVudCc7XHJcbmltcG9ydCB7IElTdG9yZUJhc2UgfSBmcm9tICcuLi9zZXJ2aWNlJztcclxuXHJcbi8vI2VuZHJlZ2lvblxyXG5cclxuLyoqXHJcbiAqIOWPquivu+eahCBBRy1HUklEXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFnR3JpZFN1YlBhZ2VCYXNlIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7XHJcbiAgICAvLyDlvZPliY3ooYzmlbDmja5cclxuICAgIGN1cnJNb2RlbDtcclxuICAgIC8vIOWinuWIoOaUueacjeWKoVxyXG4gICAgZGF0YVN0b3JlOiBJU3RvcmVCYXNlO1xyXG4gICAgLy8g5YiX6KGo5omA5pyJ5pWw5o2uXHJcbiAgICBkYXRhUm93cyA9IFtdO1xyXG5cclxuICAgIC8v6aG16Z2iSURcclxuICAgIHBhZ2VJZCA9ICcnO1xyXG5cclxuICAgIC8vIHRvb2xiYXIg5Y+Y6YePXHJcbiAgICBhbGxvd1Nob3dDaGVja2JveCA9IHRydWU7XHJcbiAgICAvL2FsbG93U29ydGFibGUgPSBmYWxzZTtcclxuICAgIC8vYWxsb3dGaWx0ZXIgPSBmYWxzZTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdhZ0dyaWRUb29sYmFyJywgeyByZWFkOiBBZ0dyaWRUb29sYmFyQ29tcG9uZW50IH0pXHJcbiAgICBwcm90ZWN0ZWQgdG9vbGJhciE6IEFnR3JpZFRvb2xiYXJDb21wb25lbnQ7XHJcblxyXG4gICAgcHJvdGVjdGVkIGdyaWRBcGkhOiBHcmlkQXBpPGFueT47XHJcbiAgICBwcm90ZWN0ZWQgY29sdW1uRGVmczogQ29sRGVmW10gPSBbXTtcclxuICAgIHByb3RlY3RlZCBncmlkT3B0aW9ucyA9IHtcclxuICAgICAgICAvL2NvbHVtbkRlZnM6IGNvbERlZnMsXHJcbiAgICAgICAgZGVmYXVsdENvbERlZjogREVGQVVMVF9DT0xfREVGLFxyXG4gICAgICAgIHJvd1NlbGVjdGlvbjogJ211bHRpcGxlJyxcclxuICAgICAgICBvblJvd0NsaWNrZWQ6IHRoaXMub25Sb3dDbGlja2VkLmJpbmQodGhpcyksXHJcbiAgICAgICAgb25TZWxlY3Rpb25DaGFuZ2VkOiB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlZC5iaW5kKHRoaXMpLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdnNzOiBWaWV3U3RhdGVTZXJ2aWNlQmFzZUV4ID0gbnVsbCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG9uR3JpZFJlYWR5KHBhcmFtczogR3JpZFJlYWR5RXZlbnQpIHtcclxuICAgICAgICB0aGlzLmdyaWRBcGkgPSBwYXJhbXMuYXBpO1xyXG4gICAgICAgIHRoaXMuZ3JpZEFwaS5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICAgICAgICAnY2VsbEtleURvd24nLFxyXG4gICAgICAgICAgICB0aGlzLm9uQ2VsbEtleURvd24uYmluZCh0aGlzKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g55So5LqO5Y2z5pe26aqM6K+B44CB5L+d5a2Y5Y2V5YWD5qC85pWw5o2u5Lul5Y+K5pu05paw5L6d6LWW5Y2V5YWD5qC855qE5YW25LuW57uE5Lu244CCXHJcbiAgICBwcm90ZWN0ZWQgb25DZWxsRWRpdGluZ1N0b3BwZWQoZXZlbnQpIHt9XHJcblxyXG4gICAgLy8g5Yqg5oC75YiX5pWw5o2u6K6h566XXHJcbiAgICBwaW5uZWRCb3R0b21Sb3dEYXRhID0gW107XHJcbiAgICAvLyDooYzkv67mlLnkuovku7bvvIznlKjkuo7mibnph4/lpITnkIbmlbDmja7jgIHlkIzmraXmlbTkuKrmlbDmja7pm4bjgIHliLfmlrDnu5/orqHmlbDmja7nrYks57KX57KS5bqm77yM5aSE55CG5pW06KGM5oiW5pW05Liq5pWw5o2u6ZuG55qE5Y+Y5YyWXHJcbiAgICBwcm90ZWN0ZWQgb25Sb3dEYXRhVXBkYXRlZChldmVudDogUm93RGF0YVVwZGF0ZWRFdmVudCkge1xyXG4gICAgICAgIC8vIOiOt+WPluaJgOacieeahOaVsOaNrlxyXG4gICAgICAgIGNvbnN0IHJvd0RhdGEgPSB0aGlzLmdldEFsbEdyaWREYXRhKCk7XHJcblxyXG4gICAgICAgIC8vY29uc29sZS5sb2coJ29uUm93RGF0YVVwZGF0ZWQnKTtcclxuXHJcbiAgICAgICAgLy8g6K6h566X5oC76K6h6KGMXHJcbiAgICAgICAgY29uc3QgdG90YWxSb3cgPSByb3dEYXRhLnJlZHVjZShcclxuICAgICAgICAgICAgKGFjYywgcm93KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdUb3RhbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGFjYy5kZXNjcmlwdGlvbiArIDEsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IG5hbWU6ICdUb3RhbCcsIGRlc2NyaXB0aW9uOiAwIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucGlubmVkQm90dG9tUm93RGF0YSA9IFt0b3RhbFJvd107XHJcblxyXG4gICAgICAgIC8vIOabtOaWsOaXp+aVsOaNrueKtuaAgVxyXG4gICAgICAgIHRoaXMuX3ByZXZpb3VzUm93RGF0YSA9IF8uY2xvbmVEZWVwKHJvd0RhdGEpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiDpgJrov4cgVUkgSE9ULUtFWSDlpITnkIbmlrDlop7liKDpmaTmi5bmi73nvJbovpHmlbDmja5cclxuICAgICAqIOazqOWGjOWQhOenjeeDremUruaTjeS9nFxyXG4gICAgICogQHBhcmFtIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBvbkNlbGxLZXlEb3duKGV2ZW50OiBhbnkpIHt9XHJcblxyXG4gICAgLy8jcmVnaW9uIOihjOmAieaLqeOAgeWPlua2iOmAieaLqSDnm7jlhbPlip/og71cclxuXHJcbiAgICBzZWxlY3RlZFJvd3NDb3VudCA9IHNpZ25hbCgwKTsgLy8g5b6u5Y+Y6YePXHJcbiAgICBwcm90ZWN0ZWQgb25Sb3dDbGlja2VkKGV2ZW50KSB7XHJcbiAgICAgICAgLy8g5Y2V6YCJ5oOF5Ya15LiL77yM54K55Ye76YCJ5oupLOW5tuWPlua2iOS5i+WJjeeahOmAieaLqVxyXG4gICAgICAgIGlmICghdGhpcy5hbGxvd1Nob3dDaGVja2JveCkge1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKGV2ZW50Lm5vZGUpO1xyXG4gICAgICAgICAgICBldmVudC5ub2RlLnNldFNlbGVjdGVkKHRydWUsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBjYW5jZWxTZWxlY3RlZCgpIHtcclxuICAgICAgICAvLyDlj5bmtojpgInmi6nmiYDmnInooYxcclxuICAgICAgICB0aGlzLmdyaWRBcGkuZGVzZWxlY3RBbGwoKTtcclxuICAgICAgICAvL3RoaXMuZ3JpZEFwaS5nZXRTZWxlY3RlZE5vZGVzKCkubWFwKChub2RlKSA9PiBub2RlLnNldFNlbGVjdGVkKGZhbHNlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG9uU2VsZWN0aW9uQ2hhbmdlZChldmVudDogU2VsZWN0aW9uQ2hhbmdlZEV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3NDb3VudC51cGRhdGUoXHJcbiAgICAgICAgICAgICgpID0+IHRoaXMuZ3JpZEFwaS5nZXRTZWxlY3RlZE5vZGVzKCkubGVuZ3RoXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICAvL3NvcnRCeUNvbmZpZ3MgPSBbXTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgbWVudUl0ZW1DbGljayhwYXJhbXM6IGFueSA9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIC8vIOaOkuW6j+ebuOWFs+aTjeS9nFxyXG4gICAgICAgIGlmICgnc29ydCcgaW4gcGFyYW1zKSB7XHJcbiAgICAgICAgICAgIC8vIHRvZG86ICdjb2RlLG5hbWU6ZGVzYycg5a2X56ym5Liy6L2s5oiQ5pWw57uE55qE5qih5byPXHJcbiAgICAgICAgICAgIGNvbnN0IHNvcnRDb2xzID0gW10uY29uY2F0KHBhcmFtc1snc29ydCddKTtcclxuICAgICAgICAgICAgdGhpcy5ncmlkQXBpLmFwcGx5Q29sdW1uU3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgc3RhdGU6IHNvcnRDb2xzLFxyXG4gICAgICAgICAgICAgICAgYXBwbHlPcmRlcjogZmFsc2UsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOivu+WPluaJgOacieaVsOaNrlxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldEFsbEdyaWREYXRhKCk6IGFueVtdIHtcclxuICAgICAgICBjb25zdCByb3dEYXRhOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgIHRoaXMuZ3JpZEFwaT8uZm9yRWFjaE5vZGUoKG5vZGUpID0+IHJvd0RhdGEucHVzaChub2RlLmRhdGEpKTtcclxuICAgICAgICByZXR1cm4gcm93RGF0YTtcclxuICAgIH1cclxuXHJcbiAgICAvLyNyZWdpb24g5pWw5o2u5pu05pawXHJcbiAgICBwcm90ZWN0ZWQgYWdHcmlkU2V0RGF0YShsaXN0KSB7XHJcbiAgICAgICAgLy8gaWQg5LiN55u45ZCM77yM5YiZ5pu05paw77yMXHJcbiAgICAgICAgaWYgKHRoaXMuX3ByZXZpb3VzTWFzdGVySWQgIT09IHRoaXMudnNzLm1hc3Rlck1vZGVsLmlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVJvd3MgPSBsaXN0O1xyXG4gICAgICAgICAgICAvL3RoaXMuZ3JpZEFwaS5yZWZyZXNoQ2VsbHMoKTsgLy8uc2V0Um93RGF0YSh0aGlzLnJvd0RhdGEpOyAvLyDmm7TmlrDooajmoLzmlbDmja5cclxuICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNNYXN0ZXJJZCA9IHRoaXMudnNzLm1hc3Rlck1vZGVsLmlkO1xyXG4gICAgICAgICAgICB0aGlzLl9wcmV2aW91c1Jvd0RhdGEgPSBfLmNsb25lRGVlcChsaXN0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8g5aaC5p6c55u45ZCM77yM5LiU5bey5o+Q5Lqk77yM5YiZ5Yi35pawXHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5kYXRhU3RvcmUuaXNEaXJ0eSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhUm93cyA9IGxpc3Q7XHJcbiAgICAgICAgICAgIC8vdGhpcy5ncmlkQXBpLnJlZHJhd1Jvd3MoKTtcclxuICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNSb3dEYXRhID0gXy5jbG9uZURlZXAobGlzdCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvdGVjdGVkIF9wcmV2aW91c01hc3RlcklkID0gMDtcclxuICAgIHByb3RlY3RlZCBfcHJldmlvdXNSb3dEYXRhID0gW107XHJcbiAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25BZ0dyaWRUb29sYmFyQ2xpY2soZXZlbnQpIHtcclxuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uQ29kZSA9PT0gJ0NBTkNFTF9TRUxFQ1QnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsU2VsZWN0ZWQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5Zyo57uE5Lu26ZSA5q+B5pe256e76Zmk5YWo5bGA54K55Ye75LqL5Lu255uR5ZCs5ZmoXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnU3ViUGFnZUJhc2VFeHQgRGVzdHJveS4uLicpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
/***
|
|
2
|
+
* ag-grid 缺省功能: 增删改、拖拽
|
|
3
|
+
* 1、每个栏位都可以编辑,存档
|
|
4
|
+
* 2、tab 键到最后一行最后一列,自动新增一行
|
|
5
|
+
* 3、新增 + 按钮、在当前位置新增一行
|
|
6
|
+
* 4、快捷键 shift+insert, 当前行上方插入新行
|
|
7
|
+
* 5、快捷键 ctrl+d, 删除当前行
|
|
8
|
+
* 6、删除选择行
|
|
9
|
+
* 7、拖拽排序并存档(需要设定 lineCodeField) *
|
|
10
|
+
* 8、自定义编辑控件
|
|
11
|
+
* 9、自定义渲染控件
|
|
12
|
+
* 10、分组栏位第二行不显示
|
|
13
|
+
* 11、赠品、配件、主要标记
|
|
14
|
+
* 12、加总区域
|
|
15
|
+
*
|
|
16
|
+
* ag-grid toolbar
|
|
17
|
+
* 1、已选择行数、取消选择功能
|
|
18
|
+
* 2、取消编辑
|
|
19
|
+
* 3、多选开启或关闭
|
|
20
|
+
* 4、拖拽开启或关闭
|
|
21
|
+
* 5、新增
|
|
22
|
+
* 6、存档
|
|
23
|
+
*/
|
|
24
|
+
//#region
|
|
25
|
+
import { Directive } from '@angular/core';
|
|
26
|
+
import { AgGridSubPageBase } from './AgGridSubPageBase';
|
|
27
|
+
import { calcFloatStepValue } from './index';
|
|
28
|
+
import { AppInjector, Application } from '../service';
|
|
29
|
+
import * as i0 from "@angular/core";
|
|
30
|
+
import * as i1 from "../component";
|
|
31
|
+
//#endregion
|
|
32
|
+
export class AgGridSubPageBaseEx extends AgGridSubPageBase {
|
|
33
|
+
constructor(vss) {
|
|
34
|
+
super(vss);
|
|
35
|
+
this.vss = vss;
|
|
36
|
+
this.App = AppInjector.get(Application);
|
|
37
|
+
//lineCode
|
|
38
|
+
this.lineCodeField = '';
|
|
39
|
+
}
|
|
40
|
+
onGridReady(params) {
|
|
41
|
+
this.gridApi = params.api;
|
|
42
|
+
this.gridApi.addEventListener('cellKeyDown', this.onCellKeyDown.bind(this));
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 通过 UI HOT-KEY 处理新增删除拖拽编辑数据
|
|
46
|
+
* 注册各种热键操作
|
|
47
|
+
* @param event
|
|
48
|
+
*/
|
|
49
|
+
onCellKeyDown(event) {
|
|
50
|
+
if (event.event.code === 'Tab' && this.isLastCell(event)) {
|
|
51
|
+
// 新增至末尾
|
|
52
|
+
event.event.preventDefault();
|
|
53
|
+
this.addNewRow();
|
|
54
|
+
}
|
|
55
|
+
else if (event.event.ctrlKey && event.event.key === 'Insert') {
|
|
56
|
+
// 当前位置新增
|
|
57
|
+
event.event.preventDefault();
|
|
58
|
+
this.addNewRow(event.node.rowIndex);
|
|
59
|
+
}
|
|
60
|
+
else if (event.event.ctrlKey && event.event.key === 'd') {
|
|
61
|
+
// 删除当前笔
|
|
62
|
+
event.event.preventDefault();
|
|
63
|
+
this.deleteSelectedRow(event.node);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
cellClicked(e) {
|
|
67
|
+
this.currRowIndex = e.rowIndex;
|
|
68
|
+
this.currModel = e.data;
|
|
69
|
+
}
|
|
70
|
+
onCellValueChanged(event) { }
|
|
71
|
+
// 用于即时验证、保存单元格数据以及更新依赖单元格的其他组件。
|
|
72
|
+
onCellEditingStopped(event) {
|
|
73
|
+
//console.log(event);
|
|
74
|
+
if (event.valueChanged) {
|
|
75
|
+
//console.log(event);
|
|
76
|
+
if (!this.validateField()) {
|
|
77
|
+
this.App.notify('提示', '请在提交或取消编辑后执行此操作');
|
|
78
|
+
this.gridApi.startEditingCell({
|
|
79
|
+
rowIndex: event.rowIndex,
|
|
80
|
+
colKey: event.column.colId,
|
|
81
|
+
});
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const field = event.colDef.field;
|
|
85
|
+
// 需要更新,否则订阅流的相关方法不会执行
|
|
86
|
+
this.dataStore.update(event.data.id, {
|
|
87
|
+
[field]: event.value,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* 指定位置新增,并设定焦点
|
|
93
|
+
* @param indexToAdd
|
|
94
|
+
*/
|
|
95
|
+
addNewRow(indexToAdd = -1) {
|
|
96
|
+
this.currModel = this.addNew();
|
|
97
|
+
const params = {
|
|
98
|
+
add: [this.currModel],
|
|
99
|
+
};
|
|
100
|
+
// 在特定位置新增
|
|
101
|
+
indexToAdd > -1 && (params.addIndex = indexToAdd);
|
|
102
|
+
const transactionResult = this.gridApi.applyTransaction(params);
|
|
103
|
+
if (transactionResult.add) {
|
|
104
|
+
// 根据插入位置,设定row 对象序号
|
|
105
|
+
this.calcNewSeqValue(transactionResult.add[0], this.getAllGridData());
|
|
106
|
+
console.log(transactionResult.add[0]);
|
|
107
|
+
// 获取新添加行的最大索引
|
|
108
|
+
const maxIndex = Math.max(...transactionResult.add.map((rowNode) => rowNode.rowIndex));
|
|
109
|
+
// 设定焦点
|
|
110
|
+
this.gridApi.ensureIndexVisible(maxIndex);
|
|
111
|
+
this.gridApi.setFocusedCell(maxIndex, 'code');
|
|
112
|
+
}
|
|
113
|
+
this.dataStore.add(this.currModel);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* 删除当前行 或者 选择行,并重新设置焦点
|
|
117
|
+
* @param node
|
|
118
|
+
*/
|
|
119
|
+
deleteSelectedRow(node) {
|
|
120
|
+
const selectedNodes = node ? [node] : this.gridApi.getSelectedNodes();
|
|
121
|
+
const selectedData = selectedNodes.map((node) => node.data);
|
|
122
|
+
const lastRemovedRowIndex = selectedNodes[selectedNodes.length - 1].rowIndex;
|
|
123
|
+
const transactionResult = this.gridApi.applyTransaction({
|
|
124
|
+
remove: selectedData,
|
|
125
|
+
});
|
|
126
|
+
selectedData.forEach((row) => this.dataStore.remove(row));
|
|
127
|
+
// this.gridApi.refreshCells({ force: true });
|
|
128
|
+
// 设置焦点
|
|
129
|
+
if (transactionResult.remove.length > 0) {
|
|
130
|
+
let focusIndex;
|
|
131
|
+
if (lastRemovedRowIndex < this.gridApi.getDisplayedRowCount() - 1) {
|
|
132
|
+
focusIndex = lastRemovedRowIndex; // Focus on the next row
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
focusIndex = lastRemovedRowIndex - 1; // Focus on the previous row
|
|
136
|
+
}
|
|
137
|
+
if (focusIndex >= 0) {
|
|
138
|
+
this.gridApi.ensureIndexVisible(focusIndex);
|
|
139
|
+
this.gridApi.setFocusedCell(focusIndex, 'code');
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* 拖拽后 设定行序号
|
|
145
|
+
* @param event
|
|
146
|
+
*/
|
|
147
|
+
onRowDragEnd(event) {
|
|
148
|
+
if (!this.lineCodeField)
|
|
149
|
+
return;
|
|
150
|
+
const rowData = [];
|
|
151
|
+
event.api.forEachNode((node) => rowData.push(node.data));
|
|
152
|
+
// 计算拖拽后行的 seq 值
|
|
153
|
+
this.calcNewSeqValue(event.node, rowData);
|
|
154
|
+
//console.log(rowData);
|
|
155
|
+
// 更新到后台
|
|
156
|
+
this.dataStore.update(event.node.data.id, {
|
|
157
|
+
[this.lineCodeField]: event.node.data[this.lineCodeField],
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
onAgGridToolbarClick(event) {
|
|
161
|
+
super.onAgGridToolbarClick(event);
|
|
162
|
+
// 一般增、删改、操作
|
|
163
|
+
if (event.actionCode === 'ADD_NEWROW') {
|
|
164
|
+
this.addNewRow();
|
|
165
|
+
}
|
|
166
|
+
else if (event.actionCode === 'DELETE_SELECT') {
|
|
167
|
+
this.deleteSelectedRow();
|
|
168
|
+
}
|
|
169
|
+
else if (event.actionCode === 'CANCEL_EDIT') {
|
|
170
|
+
this.dataStore.cancel();
|
|
171
|
+
}
|
|
172
|
+
else if (event.actionCode === 'MENUITEM_CLICK') {
|
|
173
|
+
this.menuItemClick(event.params);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
//sortByConfigs = [];
|
|
177
|
+
menuItemClick(params = undefined) {
|
|
178
|
+
// 排序相关操作
|
|
179
|
+
if ('sort' in params) {
|
|
180
|
+
// todo: 'code,name:desc' 字符串转成数组的模式
|
|
181
|
+
const sortCols = [].concat(params['sort']);
|
|
182
|
+
this.gridApi.applyColumnState({
|
|
183
|
+
state: sortCols,
|
|
184
|
+
applyOrder: false,
|
|
185
|
+
});
|
|
186
|
+
//此处的排序,是需要存档的,下次载入就是按照这个顺序。
|
|
187
|
+
const rowNodes = this.gridApi.getRenderedNodes();
|
|
188
|
+
const sortedData = rowNodes.map((rowNode) => rowNode.data);
|
|
189
|
+
this.calcNewSeqValue2(sortedData);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// 校验所有
|
|
193
|
+
validate() {
|
|
194
|
+
return true;
|
|
195
|
+
}
|
|
196
|
+
validateField() {
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
validateObject() {
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
validateList() {
|
|
203
|
+
return true;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* 判断 cell 是否为 最右下
|
|
207
|
+
* @param event
|
|
208
|
+
* @returns
|
|
209
|
+
*/
|
|
210
|
+
isLastCell(event) {
|
|
211
|
+
const displayedRowCount = this.gridApi.getDisplayedRowCount();
|
|
212
|
+
const lastRowIndex = displayedRowCount - 1;
|
|
213
|
+
// Get all visible columns
|
|
214
|
+
const allColumns = this.gridApi.getAllDisplayedColumns();
|
|
215
|
+
const lastColumnIndex = allColumns.length - 1;
|
|
216
|
+
const columnIndex = allColumns.indexOf(event.column);
|
|
217
|
+
return (event.rowIndex === lastRowIndex && columnIndex === lastColumnIndex);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* node.seq = 前后笔之差,取最大步进,100,10,1,0.1
|
|
221
|
+
* @param node
|
|
222
|
+
* @param rows
|
|
223
|
+
* @returns
|
|
224
|
+
*/
|
|
225
|
+
calcNewSeqValue(draggedNode, rows) {
|
|
226
|
+
if (!this.lineCodeField)
|
|
227
|
+
return;
|
|
228
|
+
const draggedIndex = draggedNode.rowIndex;
|
|
229
|
+
// 仅一笔
|
|
230
|
+
let newSeq = 1;
|
|
231
|
+
// 多笔的情况下,重新赋值
|
|
232
|
+
if (rows.length >= 2) {
|
|
233
|
+
// 如果拖拽到第一行
|
|
234
|
+
if (draggedIndex === 0) {
|
|
235
|
+
newSeq = parseFloat(rows[1][this.lineCodeField]);
|
|
236
|
+
newSeq = calcFloatStepValue(newSeq);
|
|
237
|
+
}
|
|
238
|
+
// 如果拖拽到最后一行
|
|
239
|
+
else if (draggedIndex === rows.length - 1) {
|
|
240
|
+
newSeq =
|
|
241
|
+
parseFloat(rows[rows.length - 2][this.lineCodeField]) + 1;
|
|
242
|
+
}
|
|
243
|
+
// 多行的中间
|
|
244
|
+
else if (rows.length >= 3) {
|
|
245
|
+
const prevSeq = parseFloat(rows[draggedIndex - 1][this.lineCodeField]);
|
|
246
|
+
const nextSeq = parseFloat(rows[draggedIndex + 1][this.lineCodeField]);
|
|
247
|
+
newSeq = prevSeq + calcFloatStepValue(nextSeq - prevSeq);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
// 更新拖拽后行的 seq 值
|
|
251
|
+
draggedNode.data[this.lineCodeField] = newSeq;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* node.seq = 重新排序,1,2,3...
|
|
255
|
+
* @param node
|
|
256
|
+
* @param rows
|
|
257
|
+
* @returns
|
|
258
|
+
*/
|
|
259
|
+
calcNewSeqValue2(rows) {
|
|
260
|
+
if (this.lineCodeField)
|
|
261
|
+
rows.forEach((row, index) => {
|
|
262
|
+
row[this.lineCodeField] = index + 1; // 或者根据你的需求重新排序
|
|
263
|
+
this.dataStore.update(row.id, {
|
|
264
|
+
[this.lineCodeField]: row[this.lineCodeField],
|
|
265
|
+
});
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AgGridSubPageBaseEx, deps: [{ token: i1.ViewStateServiceBaseEx }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
269
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0", type: AgGridSubPageBaseEx, usesInheritance: true, ngImport: i0 }); }
|
|
270
|
+
}
|
|
271
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AgGridSubPageBaseEx, decorators: [{
|
|
272
|
+
type: Directive
|
|
273
|
+
}], ctorParameters: () => [{ type: i1.ViewStateServiceBaseEx }] });
|
|
274
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWdHcmlkU3ViUGFnZUJhc2VFeC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215LWNvbW1vbi9zcmMvbGliL2FnLWdyaWQvQWdHcmlkU3ViUGFnZUJhc2VFeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILFNBQVM7QUFDVCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQzs7O0FBR3RELFlBQVk7QUFHWixNQUFNLE9BQWdCLG1CQUFvQixTQUFRLGlCQUFpQjtJQUsvRCxZQUFtQixHQUEyQjtRQUMxQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFESSxRQUFHLEdBQUgsR0FBRyxDQUF3QjtRQUp2QyxRQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxQyxVQUFVO1FBQ1Ysa0JBQWEsR0FBRyxFQUFFLENBQUM7SUFJbkIsQ0FBQztJQUVTLFdBQVcsQ0FBQyxNQUFzQjtRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDekIsYUFBYSxFQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUNoQyxDQUFDO0lBQ04sQ0FBQztJQUNEOzs7O09BSUc7SUFDTyxhQUFhLENBQUMsS0FBVTtRQUM5QixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUss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LENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlO2dCQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFO29CQUMxQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztpQkFDaEQsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDOzhHQW5SaUIsbUJBQW1CO2tHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRHhDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqXHJcbiAqIGFnLWdyaWQg57y655yB5Yqf6IO9OiDlop7liKDmlLnjgIHmi5bmi71cclxuICogMeOAgeavj+S4quagj+S9jemDveWPr+S7pee8lui+ke+8jOWtmOaho1xyXG4gKiAy44CBdGFiIOmUruWIsOacgOWQjuS4gOihjOacgOWQjuS4gOWIl++8jOiHquWKqOaWsOWinuS4gOihjFxyXG4gKiAz44CB5paw5aKeICsg5oyJ6ZKu44CB5Zyo5b2T5YmN5L2N572u5paw5aKe5LiA6KGMXHJcbiAqIDTjgIHlv6vmjbfplK4gc2hpZnQraW5zZXJ0LCDlvZPliY3ooYzkuIrmlrnmj5LlhaXmlrDooYxcclxuICogNeOAgeW/q+aNt+mUriBjdHJsK2QsIOWIoOmZpOW9k+WJjeihjFxyXG4gKiA244CB5Yig6Zmk6YCJ5oup6KGMXHJcbiAqIDfjgIHmi5bmi73mjpLluo/lubblrZjmoaMo6ZyA6KaB6K6+5a6aIGxpbmVDb2RlRmllbGQpICpcclxuICogOOOAgeiHquWumuS5iee8lui+keaOp+S7tlxyXG4gKiA544CB6Ieq5a6a5LmJ5riy5p+T5o6n5Lu2XHJcbiAqIDEw44CB5YiG57uE5qCP5L2N56ys5LqM6KGM5LiN5pi+56S6XHJcbiAqIDEx44CB6LWg5ZOB44CB6YWN5Lu244CB5Li76KaB5qCH6K6wXHJcbiAqIDEy44CB5Yqg5oC75Yy65Z+fXHJcbiAqXHJcbiAqIGFnLWdyaWQgdG9vbGJhclxyXG4gKiAx44CB5bey6YCJ5oup6KGM5pWw44CB5Y+W5raI6YCJ5oup5Yqf6IO9XHJcbiAqIDLjgIHlj5bmtojnvJbovpFcclxuICogM+OAgeWkmumAieW8gOWQr+aIluWFs+mXrVxyXG4gKiA044CB5ouW5ou95byA5ZCv5oiW5YWz6ZetXHJcbiAqIDXjgIHmlrDlop5cclxuICogNuOAgeWtmOaho1xyXG4gKi9cclxuLy8jcmVnaW9uXHJcbmltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBHcmlkUmVhZHlFdmVudCB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcclxuaW1wb3J0IHsgQWdHcmlkU3ViUGFnZUJhc2UgfSBmcm9tICcuL0FnR3JpZFN1YlBhZ2VCYXNlJztcclxuaW1wb3J0IHsgY2FsY0Zsb2F0U3RlcFZhbHVlIH0gZnJvbSAnLi9pbmRleCc7XHJcbmltcG9ydCB7IEFwcEluamVjdG9yLCBBcHBsaWNhdGlvbiB9IGZyb20gJy4uL3NlcnZpY2UnO1xyXG5pbXBvcnQgeyBWaWV3U3RhdGVTZXJ2aWNlQmFzZUV4IH0gZnJvbSAnLi4vY29tcG9uZW50JztcclxuXHJcbi8vI2VuZHJlZ2lvblxyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBZ0dyaWRTdWJQYWdlQmFzZUV4IGV4dGVuZHMgQWdHcmlkU3ViUGFnZUJhc2Uge1xyXG4gICAgcHVibGljIEFwcCA9IEFwcEluamVjdG9yLmdldChBcHBsaWNhdGlvbik7XHJcbiAgICAvL2xpbmVDb2RlXHJcbiAgICBsaW5lQ29kZUZpZWxkID0gJyc7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIHZzczogVmlld1N0YXRlU2VydmljZUJhc2VFeCkge1xyXG4gICAgICAgIHN1cGVyKHZzcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG9uR3JpZFJlYWR5KHBhcmFtczogR3JpZFJlYWR5RXZlbnQpIHtcclxuICAgICAgICB0aGlzLmdyaWRBcGkgPSBwYXJhbXMuYXBpO1xyXG4gICAgICAgIHRoaXMuZ3JpZEFwaS5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICAgICAgICAnY2VsbEtleURvd24nLFxyXG4gICAgICAgICAgICB0aGlzLm9uQ2VsbEtleURvd24uYmluZCh0aGlzKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIOmAmui/hyBVSSBIT1QtS0VZIOWkhOeQhuaWsOWinuWIoOmZpOaLluaLvee8lui+keaVsOaNrlxyXG4gICAgICog5rOo5YaM5ZCE56eN54Ot6ZSu5pON5L2cXHJcbiAgICAgKiBAcGFyYW0gZXZlbnRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIG9uQ2VsbEtleURvd24oZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGlmIChldmVudC5ldmVudC5jb2RlID09PSAnVGFiJyAmJiB0aGlzLmlzTGFzdENlbGwoZXZlbnQpKSB7XHJcbiAgICAgICAgICAgIC8vIOaWsOWinuiHs+acq+WwvlxyXG4gICAgICAgICAgICBldmVudC5ldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB0aGlzLmFkZE5ld1JvdygpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZXZlbnQuY3RybEtleSAmJiBldmVudC5ldmVudC5rZXkgPT09ICdJbnNlcnQnKSB7XHJcbiAgICAgICAgICAgIC8vIOW9k+WJjeS9jee9ruaWsOWinlxyXG4gICAgICAgICAgICBldmVudC5ldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB0aGlzLmFkZE5ld1JvdyhldmVudC5ub2RlLnJvd0luZGV4KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuZXZlbnQua2V5ID09PSAnZCcpIHtcclxuICAgICAgICAgICAgLy8g5Yig6Zmk5b2T5YmN56yUXHJcbiAgICAgICAgICAgIGV2ZW50LmV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlU2VsZWN0ZWRSb3coZXZlbnQubm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gKGNlbGxDbGlja2VkKT1cImNlbGxDbGlja2VkKCRldmVudClcIlxyXG4gICAgLy8gKGNlbGxWYWx1ZUNoYW5nZWQpPVwib25DZWxsVmFsdWVDaGFuZ2VkKCRldmVudClcIlxyXG5cclxuICAgIGN1cnJSb3dJbmRleDtcclxuXHJcbiAgICBwcm90ZWN0ZWQgY2VsbENsaWNrZWQoZSkge1xyXG4gICAgICAgIHRoaXMuY3VyclJvd0luZGV4ID0gZS5yb3dJbmRleDtcclxuICAgICAgICB0aGlzLmN1cnJNb2RlbCA9IGUuZGF0YTtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBvbkNlbGxWYWx1ZUNoYW5nZWQoZXZlbnQpIHt9XHJcbiAgICAvLyDnlKjkuo7ljbPml7bpqozor4HjgIHkv53lrZjljZXlhYPmoLzmlbDmja7ku6Xlj4rmm7TmlrDkvp3otZbljZXlhYPmoLznmoTlhbbku5bnu4Tku7bjgIJcclxuICAgIHByb3RlY3RlZCBvbkNlbGxFZGl0aW5nU3RvcHBlZChldmVudCkge1xyXG4gICAgICAgIC8vY29uc29sZS5sb2coZXZlbnQpO1xyXG4gICAgICAgIGlmIChldmVudC52YWx1ZUNoYW5nZWQpIHtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhldmVudCk7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy52YWxpZGF0ZUZpZWxkKCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuQXBwLm5vdGlmeSgn5o+Q56S6JywgJ+ivt+WcqOaPkOS6pOaIluWPlua2iOe8lui+keWQjuaJp+ihjOatpOaTjeS9nCcpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkQXBpLnN0YXJ0RWRpdGluZ0NlbGwoe1xyXG4gICAgICAgICAgICAgICAgICAgIHJvd0luZGV4OiBldmVudC5yb3dJbmRleCxcclxuICAgICAgICAgICAgICAgICAgICBjb2xLZXk6IGV2ZW50LmNvbHVtbi5jb2xJZCxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZXZlbnQuY29sRGVmLmZpZWxkO1xyXG4gICAgICAgICAgICAvLyDpnIDopoHmm7TmlrDvvIzlkKbliJnorqLpmIXmtYHnmoTnm7jlhbPmlrnms5XkuI3kvJrmiafooYxcclxuICAgICAgICAgICAgdGhpcy5kYXRhU3RvcmUudXBkYXRlKGV2ZW50LmRhdGEuaWQsIHtcclxuICAgICAgICAgICAgICAgIFtmaWVsZF06IGV2ZW50LnZhbHVlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIOe7p+aJv+exu+W/hemhu+iHquWumuS5ieaWsOWinmRlZmF1bHTlrZfmrrVcclxuICAgICAqL1xyXG4gICAgYWJzdHJhY3QgYWRkTmV3KCk6IG9iamVjdDtcclxuICAgIC8qKlxyXG4gICAgICog5oyH5a6a5L2N572u5paw5aKe77yM5bm26K6+5a6a54Sm54K5XHJcbiAgICAgKiBAcGFyYW0gaW5kZXhUb0FkZFxyXG4gICAgICovXHJcbiAgICBhZGROZXdSb3coaW5kZXhUb0FkZCA9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyTW9kZWwgPSB0aGlzLmFkZE5ldygpO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbXM6IGFueSA9IHtcclxuICAgICAgICAgICAgYWRkOiBbdGhpcy5jdXJyTW9kZWxdLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8g5Zyo54m55a6a5L2N572u5paw5aKeXHJcbiAgICAgICAgaW5kZXhUb0FkZCA+IC0xICYmIChwYXJhbXMuYWRkSW5kZXggPSBpbmRleFRvQWRkKTtcclxuICAgICAgICBjb25zdCB0cmFuc2FjdGlvblJlc3VsdCA9IHRoaXMuZ3JpZEFwaS5hcHBseVRyYW5zYWN0aW9uKHBhcmFtcyk7XHJcblxyXG4gICAgICAgIGlmICh0cmFuc2FjdGlvblJlc3VsdC5hZGQpIHtcclxuICAgICAgICAgICAgLy8g5qC55o2u5o+S5YWl5L2N572u77yM6K6+5a6acm93IOWvueixoeW6j+WPt1xyXG4gICAgICAgICAgICB0aGlzLmNhbGNOZXdTZXFWYWx1ZShcclxuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUmVzdWx0LmFkZFswXSxcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWxsR3JpZERhdGEoKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0cmFuc2FjdGlvblJlc3VsdC5hZGRbMF0pO1xyXG4gICAgICAgICAgICAvLyDojrflj5bmlrDmt7vliqDooYznmoTmnIDlpKfntKLlvJVcclxuICAgICAgICAgICAgY29uc3QgbWF4SW5kZXggPSBNYXRoLm1heChcclxuICAgICAgICAgICAgICAgIC4uLnRyYW5zYWN0aW9uUmVzdWx0LmFkZC5tYXAoKHJvd05vZGUpID0+IHJvd05vZGUucm93SW5kZXgpXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAvLyDorr7lrprnhKbngrlcclxuICAgICAgICAgICAgdGhpcy5ncmlkQXBpLmVuc3VyZUluZGV4VmlzaWJsZShtYXhJbmRleCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JpZEFwaS5zZXRGb2N1c2VkQ2VsbChtYXhJbmRleCwgJ2NvZGUnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YVN0b3JlLmFkZCh0aGlzLmN1cnJNb2RlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDliKDpmaTlvZPliY3ooYwg5oiW6ICFIOmAieaLqeihjO+8jOW5tumHjeaWsOiuvue9rueEpueCuVxyXG4gICAgICogQHBhcmFtIG5vZGVcclxuICAgICAqL1xyXG4gICAgZGVsZXRlU2VsZWN0ZWRSb3cobm9kZT86IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkTm9kZXMgPSBub2RlID8gW25vZGVdIDogdGhpcy5ncmlkQXBpLmdldFNlbGVjdGVkTm9kZXMoKTtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZERhdGEgPSBzZWxlY3RlZE5vZGVzLm1hcCgobm9kZSkgPT4gbm9kZS5kYXRhKTtcclxuICAgICAgICBjb25zdCBsYXN0UmVtb3ZlZFJvd0luZGV4ID1cclxuICAgICAgICAgICAgc2VsZWN0ZWROb2Rlc1tzZWxlY3RlZE5vZGVzLmxlbmd0aCAtIDFdLnJvd0luZGV4O1xyXG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uUmVzdWx0ID0gdGhpcy5ncmlkQXBpLmFwcGx5VHJhbnNhY3Rpb24oe1xyXG4gICAgICAgICAgICByZW1vdmU6IHNlbGVjdGVkRGF0YSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBzZWxlY3RlZERhdGEuZm9yRWFjaCgocm93KSA9PiB0aGlzLmRhdGFTdG9yZS5yZW1vdmUocm93KSk7XHJcbiAgICAgICAgLy8gdGhpcy5ncmlkQXBpLnJlZnJlc2hDZWxscyh7IGZvcmNlOiB0cnVlIH0pO1xyXG5cclxuICAgICAgICAvLyDorr7nva7nhKbngrlcclxuICAgICAgICBpZiAodHJhbnNhY3Rpb25SZXN1bHQucmVtb3ZlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgbGV0IGZvY3VzSW5kZXg7XHJcbiAgICAgICAgICAgIGlmIChsYXN0UmVtb3ZlZFJvd0luZGV4IDwgdGhpcy5ncmlkQXBpLmdldERpc3BsYXllZFJvd0NvdW50KCkgLSAxKSB7XHJcbiAgICAgICAgICAgICAgICBmb2N1c0luZGV4ID0gbGFzdFJlbW92ZWRSb3dJbmRleDsgLy8gRm9jdXMgb24gdGhlIG5leHQgcm93XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBmb2N1c0luZGV4ID0gbGFzdFJlbW92ZWRSb3dJbmRleCAtIDE7IC8vIEZvY3VzIG9uIHRoZSBwcmV2aW91cyByb3dcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGZvY3VzSW5kZXggPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkQXBpLmVuc3VyZUluZGV4VmlzaWJsZShmb2N1c0luZGV4KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZEFwaS5zZXRGb2N1c2VkQ2VsbChmb2N1c0luZGV4LCAnY29kZScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5ouW5ou95ZCOIOiuvuWumuihjOW6j+WPt1xyXG4gICAgICogQHBhcmFtIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBvblJvd0RyYWdFbmQoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGlmICghdGhpcy5saW5lQ29kZUZpZWxkKSByZXR1cm47XHJcbiAgICAgICAgY29uc3Qgcm93RGF0YSA9IFtdO1xyXG4gICAgICAgIGV2ZW50LmFwaS5mb3JFYWNoTm9kZSgobm9kZTogYW55KSA9PiByb3dEYXRhLnB1c2gobm9kZS5kYXRhKSk7XHJcblxyXG4gICAgICAgIC8vIOiuoeeul+aLluaLveWQjuihjOeahCBzZXEg5YC8XHJcbiAgICAgICAgdGhpcy5jYWxjTmV3U2VxVmFsdWUoZXZlbnQubm9kZSwgcm93RGF0YSk7XHJcbiAgICAgICAgLy9jb25zb2xlLmxvZyhyb3dEYXRhKTtcclxuXHJcbiAgICAgICAgLy8g5pu05paw5Yiw5ZCO5Y+wXHJcbiAgICAgICAgdGhpcy5kYXRhU3RvcmUudXBkYXRlKGV2ZW50Lm5vZGUuZGF0YS5pZCwge1xyXG4gICAgICAgICAgICBbdGhpcy5saW5lQ29kZUZpZWxkXTogZXZlbnQubm9kZS5kYXRhW3RoaXMubGluZUNvZGVGaWVsZF0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG9uQWdHcmlkVG9vbGJhckNsaWNrKGV2ZW50KSB7XHJcbiAgICAgICAgc3VwZXIub25BZ0dyaWRUb29sYmFyQ2xpY2soZXZlbnQpO1xyXG4gICAgICAgIC8vIOS4gOiIrOWinuOAgeWIoOaUueOAgeaTjeS9nFxyXG4gICAgICAgIGlmIChldmVudC5hY3Rpb25Db2RlID09PSAnQUREX05FV1JPVycpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGROZXdSb3coKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmFjdGlvbkNvZGUgPT09ICdERUxFVEVfU0VMRUNUJykge1xyXG4gICAgICAgICAgICB0aGlzLmRlbGV0ZVNlbGVjdGVkUm93KCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5hY3Rpb25Db2RlID09PSAnQ0FOQ0VMX0VESVQnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVN0b3JlLmNhbmNlbCgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuYWN0aW9uQ29kZSA9PT0gJ01FTlVJVEVNX0NMSUNLJykge1xyXG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtQ2xpY2soZXZlbnQucGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL3NvcnRCeUNvbmZpZ3MgPSBbXTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgbWVudUl0ZW1DbGljayhwYXJhbXM6IGFueSA9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIC8vIOaOkuW6j+ebuOWFs+aTjeS9nFxyXG4gICAgICAgIGlmICgnc29ydCcgaW4gcGFyYW1zKSB7XHJcbiAgICAgICAgICAgIC8vIHRvZG86ICdjb2RlLG5hbWU6ZGVzYycg5a2X56ym5Liy6L2s5oiQ5pWw57uE55qE5qih5byPXHJcbiAgICAgICAgICAgIGNvbnN0IHNvcnRDb2xzID0gW10uY29uY2F0KHBhcmFtc1snc29ydCddKTtcclxuICAgICAgICAgICAgdGhpcy5ncmlkQXBpLmFwcGx5Q29sdW1uU3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgc3RhdGU6IHNvcnRDb2xzLFxyXG4gICAgICAgICAgICAgICAgYXBwbHlPcmRlcjogZmFsc2UsXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgLy/mraTlpITnmoTmjpLluo/vvIzmmK/pnIDopoHlrZjmoaPnmoTvvIzkuIvmrKHovb3lhaXlsLHmmK/mjInnhafov5nkuKrpobrluo/jgIJcclxuICAgICAgICAgICAgY29uc3Qgcm93Tm9kZXMgPSB0aGlzLmdyaWRBcGkuZ2V0UmVuZGVyZWROb2RlcygpO1xyXG4gICAgICAgICAgICBjb25zdCBzb3J0ZWREYXRhID0gcm93Tm9kZXMubWFwKChyb3dOb2RlKSA9PiByb3dOb2RlLmRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmNhbGNOZXdTZXFWYWx1ZTIoc29ydGVkRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIOagoemqjOaJgOaciVxyXG4gICAgdmFsaWRhdGUoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICB2YWxpZGF0ZUZpZWxkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgdmFsaWRhdGVPYmplY3QoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICB2YWxpZGF0ZUxpc3QoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDliKTmlq0gY2VsbCDmmK/lkKbkuLog5pyA5Y+z5LiLXHJcbiAgICAgKiBAcGFyYW0gZXZlbnRcclxuICAgICAqIEByZXR1cm5zXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBpc0xhc3RDZWxsKGV2ZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBkaXNwbGF5ZWRSb3dDb3VudCA9IHRoaXMuZ3JpZEFwaS5nZXREaXNwbGF5ZWRSb3dDb3VudCgpO1xyXG4gICAgICAgIGNvbnN0IGxhc3RSb3dJbmRleCA9IGRpc3BsYXllZFJvd0NvdW50IC0gMTtcclxuXHJcbiAgICAgICAgLy8gR2V0IGFsbCB2aXNpYmxlIGNvbHVtbnNcclxuICAgICAgICBjb25zdCBhbGxDb2x1bW5zID0gdGhpcy5ncmlkQXBpLmdldEFsbERpc3BsYXllZENvbHVtbnMoKTtcclxuICAgICAgICBjb25zdCBsYXN0Q29sdW1uSW5kZXggPSBhbGxDb2x1bW5zLmxlbmd0aCAtIDE7XHJcblxyXG4gICAgICAgIGNvbnN0IGNvbHVtbkluZGV4ID0gYWxsQ29sdW1ucy5pbmRleE9mKGV2ZW50LmNvbHVtbik7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgZXZlbnQucm93SW5kZXggPT09IGxhc3RSb3dJbmRleCAmJiBjb2x1bW5JbmRleCA9PT0gbGFzdENvbHVtbkluZGV4XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIG5vZGUuc2VxID0g5YmN5ZCO56yU5LmL5beu77yM5Y+W5pyA5aSn5q2l6L+b77yMMTAw77yMMTDvvIwx77yMMC4xXHJcbiAgICAgKiBAcGFyYW0gbm9kZVxyXG4gICAgICogQHBhcmFtIHJvd3NcclxuICAgICAqIEByZXR1cm5zXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjYWxjTmV3U2VxVmFsdWUoZHJhZ2dlZE5vZGUsIHJvd3MpIHtcclxuICAgICAgICBpZiAoIXRoaXMubGluZUNvZGVGaWVsZCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBkcmFnZ2VkSW5kZXggPSBkcmFnZ2VkTm9kZS5yb3dJbmRleDtcclxuXHJcbiAgICAgICAgLy8g5LuF5LiA56yUXHJcbiAgICAgICAgbGV0IG5ld1NlcSA9IDE7XHJcblxyXG4gICAgICAgIC8vIOWkmueslOeahOaDheWGteS4i++8jOmHjeaWsOi1i+WAvFxyXG4gICAgICAgIGlmIChyb3dzLmxlbmd0aCA+PSAyKSB7XHJcbiAgICAgICAgICAgIC8vIOWmguaenOaLluaLveWIsOesrOS4gOihjFxyXG4gICAgICAgICAgICBpZiAoZHJhZ2dlZEluZGV4ID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdTZXEgPSBwYXJzZUZsb2F0KHJvd3NbMV1bdGhpcy5saW5lQ29kZUZpZWxkXSk7XHJcbiAgICAgICAgICAgICAgICBuZXdTZXEgPSBjYWxjRmxvYXRTdGVwVmFsdWUobmV3U2VxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyDlpoLmnpzmi5bmi73liLDmnIDlkI7kuIDooYxcclxuICAgICAgICAgICAgZWxzZSBpZiAoZHJhZ2dlZEluZGV4ID09PSByb3dzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgIG5ld1NlcSA9XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChyb3dzW3Jvd3MubGVuZ3RoIC0gMl1bdGhpcy5saW5lQ29kZUZpZWxkXSkgKyAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOWkmuihjOeahOS4remXtFxyXG4gICAgICAgICAgICBlbHNlIGlmIChyb3dzLmxlbmd0aCA+PSAzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2U2VxID0gcGFyc2VGbG9hdChcclxuICAgICAgICAgICAgICAgICAgICByb3dzW2RyYWdnZWRJbmRleCAtIDFdW3RoaXMubGluZUNvZGVGaWVsZF1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0U2VxID0gcGFyc2VGbG9hdChcclxuICAgICAgICAgICAgICAgICAgICByb3dzW2RyYWdnZWRJbmRleCArIDFdW3RoaXMubGluZUNvZGVGaWVsZF1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBuZXdTZXEgPSBwcmV2U2VxICsgY2FsY0Zsb2F0U3RlcFZhbHVlKG5leHRTZXEgLSBwcmV2U2VxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5pu05paw5ouW5ou95ZCO6KGM55qEIHNlcSDlgLxcclxuICAgICAgICBkcmFnZ2VkTm9kZS5kYXRhW3RoaXMubGluZUNvZGVGaWVsZF0gPSBuZXdTZXE7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBub2RlLnNlcSA9IOmHjeaWsOaOkuW6j++8jDHvvIwy77yMMy4uLlxyXG4gICAgICogQHBhcmFtIG5vZGVcclxuICAgICAqIEBwYXJhbSByb3dzXHJcbiAgICAgKiBAcmV0dXJuc1xyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY2FsY05ld1NlcVZhbHVlMihyb3dzKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubGluZUNvZGVGaWVsZClcclxuICAgICAgICAgICAgcm93cy5mb3JFYWNoKChyb3csIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByb3dbdGhpcy5saW5lQ29kZUZpZWxkXSA9IGluZGV4ICsgMTsgLy8g5oiW6ICF5qC55o2u5L2g55qE6ZyA5rGC6YeN5paw5o6S5bqPXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFTdG9yZS51cGRhdGUocm93LmlkLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMubGluZUNvZGVGaWVsZF06IHJvd1t0aGlzLmxpbmVDb2RlRmllbGRdLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
// 每一列的缺省属性
|
|
2
|
+
export const DEFAULT_COL_DEF = {
|
|
3
|
+
resizable: true,
|
|
4
|
+
editable: true,
|
|
5
|
+
suppressHeaderMenuButton: true,
|
|
6
|
+
suppressHeaderFilterButton: true,
|
|
7
|
+
sortable: true,
|
|
8
|
+
filter: true,
|
|
9
|
+
// UTF-7 排序
|
|
10
|
+
comparator: (a, b) => {
|
|
11
|
+
if (!a && !b)
|
|
12
|
+
return 0;
|
|
13
|
+
if (!a && b)
|
|
14
|
+
return -1;
|
|
15
|
+
if (a && !b)
|
|
16
|
+
return 1;
|
|
17
|
+
// 中文打头 用中文排序规则 todo: 区分 简体繁体日文韩文
|
|
18
|
+
const chineseCharRegex = /^[\u4E00-\u9FFF\u3400-\u4DBF\uF900-\uFAFF]/;
|
|
19
|
+
const zhHansCNa = chineseCharRegex.test(a);
|
|
20
|
+
const zhHansCNb = chineseCharRegex.test(b);
|
|
21
|
+
if (!zhHansCNa && zhHansCNb) {
|
|
22
|
+
return -1; // 字母排在汉字前面
|
|
23
|
+
}
|
|
24
|
+
if (zhHansCNa && !zhHansCNb) {
|
|
25
|
+
return 1; // 汉字排在字母后面
|
|
26
|
+
}
|
|
27
|
+
// 如果都是字母或都是汉字,按拼音排序
|
|
28
|
+
if (zhHansCNa && zhHansCNb) {
|
|
29
|
+
return a.localeCompare(b, 'zh-Hans-CN', {
|
|
30
|
+
sensitivity: 'base',
|
|
31
|
+
numeric: true,
|
|
32
|
+
ignorePunctuation: true,
|
|
33
|
+
caseFirst: 'upper',
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
return a.localeCompare(b);
|
|
37
|
+
// 仅中文,
|
|
38
|
+
const chineseCharRegex2 = /[\u4E00-\u9FFF\u3400-\u4DBF\uF900-\uFAFF]/;
|
|
39
|
+
const isALetter = !chineseCharRegex2.test(a);
|
|
40
|
+
const isBLetter = !chineseCharRegex2.test(b);
|
|
41
|
+
if (isALetter && isBLetter)
|
|
42
|
+
return a.localeCompare(b);
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
function compareStrings(a, b) {
|
|
46
|
+
if (!a && !b)
|
|
47
|
+
return 0;
|
|
48
|
+
if (!a && b)
|
|
49
|
+
return -1;
|
|
50
|
+
if (a && !b)
|
|
51
|
+
return 1;
|
|
52
|
+
// 判断语言类型
|
|
53
|
+
const getLanguage = (str) => {
|
|
54
|
+
if (/^[\u4E00-\u9FFF\u3400-\u4DBF\uF900-\uFAFF]/.test(str)) {
|
|
55
|
+
// 判断是简体中文还是繁体中文
|
|
56
|
+
if (/^[\u4E00-\u9FFF]/.test(str))
|
|
57
|
+
return 'zh-Hans-CN'; // 简体中文
|
|
58
|
+
return 'zh-Hant-TW'; // 繁体中文
|
|
59
|
+
}
|
|
60
|
+
if (/^[\u3040-\u309F\u30A0-\u30FF]/.test(str))
|
|
61
|
+
return 'ja'; // 日文
|
|
62
|
+
if (/^[\u00C0-\u1EF9]/.test(str))
|
|
63
|
+
return 'vi'; // 越南文
|
|
64
|
+
return 'en'; // 英文或其他
|
|
65
|
+
};
|
|
66
|
+
const langA = getLanguage(a);
|
|
67
|
+
const langB = getLanguage(b);
|
|
68
|
+
if (langA !== langB) {
|
|
69
|
+
// 按语言分组排序
|
|
70
|
+
const languageOrder = ['vi', 'en', 'zh-Hans-CN', 'zh-Hant-TW', 'ja'];
|
|
71
|
+
return languageOrder.indexOf(langA) - languageOrder.indexOf(langB);
|
|
72
|
+
}
|
|
73
|
+
// 同语言按拼音或字母排序
|
|
74
|
+
return a.localeCompare(b, langA, {
|
|
75
|
+
sensitivity: 'base', // 忽略大小写和重音符号
|
|
76
|
+
numeric: true, // 支持数字的自然排序
|
|
77
|
+
ignorePunctuation: true, // 忽略标点符号
|
|
78
|
+
caseFirst: 'upper', // 大写字母优先
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
import { pinyin } from 'pinyin-pro';
|
|
82
|
+
// 中文转拼音函数(支持简体和繁体)
|
|
83
|
+
function convertToPinyin(str) {
|
|
84
|
+
const r = pinyin(str, {
|
|
85
|
+
type: 'array',
|
|
86
|
+
//style: 4, // 带声调
|
|
87
|
+
//heteronym: false, // 不显示多音字
|
|
88
|
+
//returnString: true, // 返回字符串
|
|
89
|
+
});
|
|
90
|
+
return r.flat().join('');
|
|
91
|
+
}
|
|
92
|
+
function getSortKey(str) {
|
|
93
|
+
if (/^[\u4E00-\u9FFF]/.test(str)) {
|
|
94
|
+
return convertToPinyin(str); // 中文转换为拼音
|
|
95
|
+
}
|
|
96
|
+
if (/^[\u3040-\u309F\u30A0-\u30FF]/.test(str)) {
|
|
97
|
+
return str; // 日文直接使用原字符串
|
|
98
|
+
}
|
|
99
|
+
if (/^[\u00C0-\u1EF9]/.test(str)) {
|
|
100
|
+
return str.normalize('NFD').replace(/[\u0300-\u036f]/g, ''); // 越南文标准化
|
|
101
|
+
}
|
|
102
|
+
return str; // 英文或其他
|
|
103
|
+
}
|
|
104
|
+
function compareStringsBySortKey(a, b) {
|
|
105
|
+
const keyA = getSortKey(a);
|
|
106
|
+
const keyB = getSortKey(b);
|
|
107
|
+
return keyA.localeCompare(keyB, 'en'); // 使用英文语言环境比较
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiREVGQVVMVF9DT0xfREVGLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXktY29tbW9uL3NyYy9saWIvYWctZ3JpZC9ERUZBVUxUX0NPTF9ERUYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsV0FBVztBQUNYLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBVztJQUNuQyxTQUFTLEVBQUUsSUFBSTtJQUNmLFFBQVEsRUFBRSxJQUFJO0lBQ2Qsd0JBQXdCLEVBQUUsSUFBSTtJQUM5QiwwQkFBMEIsRUFBRSxJQUFJO0lBQ2hDLFFBQVEsRUFBRSxJQUFJO0lBQ2QsTUFBTSxFQUFFLElBQUk7SUFDWixXQUFXO0lBQ1gsVUFBVSxFQUFFLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFO1FBQ2pDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUV0QixpQ0FBaUM7UUFDakMsTUFBTSxnQkFBZ0IsR0FBRyw0Q0FBNEMsQ0FBQztRQUN0RSxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxFQUFFLENBQUM7WUFDMUIsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVc7UUFDMUIsQ0FBQztRQUNELElBQUksU0FBUyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDMUIsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXO1FBQ3pCLENBQUM7UUFDRCxvQkFBb0I7UUFDcEIs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QjtRQUNsQiw2QkFBNkI7UUFDN0IseUNBQXlDO0tBQzVDLENBQUMsQ0FBQztJQUNILE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBQ0QsU0FBUyxVQUFVLENBQUMsR0FBVztJQUMzQixJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQy9CLE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVTtJQUMzQyxDQUFDO0lBQ0QsSUFBSSwrQkFBK0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM1QyxPQUFPLEdBQUcsQ0FBQyxDQUFDLGFBQWE7SUFDN0IsQ0FBQztJQUNELElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDL0IsT0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7SUFDMUUsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDLENBQUMsUUFBUTtBQUN4QixDQUFDO0FBRUQsU0FBUyx1QkFBdUIsQ0FBQyxDQUFTLEVBQUUsQ0FBUztJQUNqRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0IsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhO0FBQ3hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xEZWYgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XHJcblxyXG4vLyDmr4/kuIDliJfnmoTnvLrnnIHlsZ7mgKdcclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ09MX0RFRjogQ29sRGVmID0ge1xyXG4gICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgZWRpdGFibGU6IHRydWUsXHJcbiAgICBzdXBwcmVzc0hlYWRlck1lbnVCdXR0b246IHRydWUsXHJcbiAgICBzdXBwcmVzc0hlYWRlckZpbHRlckJ1dHRvbjogdHJ1ZSxcclxuICAgIHNvcnRhYmxlOiB0cnVlLFxyXG4gICAgZmlsdGVyOiB0cnVlLFxyXG4gICAgLy8gVVRGLTcg5o6S5bqPXHJcbiAgICBjb21wYXJhdG9yOiAoYTogc3RyaW5nLCBiOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAoIWEgJiYgIWIpIHJldHVybiAwO1xyXG4gICAgICAgIGlmICghYSAmJiBiKSByZXR1cm4gLTE7XHJcbiAgICAgICAgaWYgKGEgJiYgIWIpIHJldHVybiAxO1xyXG5cclxuICAgICAgICAvLyDkuK3mlofmiZPlpLQg55So5Lit5paH5o6S5bqP6KeE5YiZIHRvZG86IOWMuuWIhiDnroDkvZPnuYHkvZPml6Xmlofpn6nmlodcclxuICAgICAgICBjb25zdCBjaGluZXNlQ2hhclJlZ2V4ID0gL15bXFx1NEUwMC1cXHU5RkZGXFx1MzQwMC1cXHU0REJGXFx1RjkwMC1cXHVGQUZGXS87XHJcbiAgICAgICAgY29uc3QgemhIYW5zQ05hID0gY2hpbmVzZUNoYXJSZWdleC50ZXN0KGEpO1xyXG4gICAgICAgIGNvbnN0IHpoSGFuc0NOYiA9IGNoaW5lc2VDaGFyUmVnZXgudGVzdChiKTtcclxuXHJcbiAgICAgICAgaWYgKCF6aEhhbnNDTmEgJiYgemhIYW5zQ05iKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAtMTsgLy8g5a2X5q+N5o6S5Zyo5rGJ5a2X5YmN6Z2iXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh6aEhhbnNDTmEgJiYgIXpoSGFuc0NOYikge1xyXG4gICAgICAgICAgICByZXR1cm4gMTsgLy8g5rGJ5a2X5o6S5Zyo5a2X5q+N5ZCO6Z2iXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOWmguaenOmDveaYr+Wtl+avjeaIlumDveaYr+axieWtl++8jOaMieaLvOmfs+aOkuW6j1xyXG4gICAgICAgIGlmICh6aEhhbnNDTmEgJiYgemhIYW5zQ05iKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhLmxvY2FsZUNvbXBhcmUoYiwgJ3poLUhhbnMtQ04nLCB7XHJcbiAgICAgICAgICAgICAgICBzZW5zaXRpdml0eTogJ2Jhc2UnLFxyXG4gICAgICAgICAgICAgICAgbnVtZXJpYzogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGlnbm9yZVB1bmN0dWF0aW9uOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY2FzZUZpcnN0OiAndXBwZXInLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGEubG9jYWxlQ29tcGFyZShiKTtcclxuICAgICAgICAvLyDku4XkuK3mlofvvIxcclxuICAgICAgICBjb25zdCBjaGluZXNlQ2hhclJlZ2V4MiA9IC9bXFx1NEUwMC1cXHU5RkZGXFx1MzQwMC1cXHU0REJGXFx1RjkwMC1cXHVGQUZGXS87XHJcbiAgICAgICAgY29uc3QgaXNBTGV0dGVyID0gIWNoaW5lc2VDaGFyUmVnZXgyLnRlc3QoYSk7XHJcbiAgICAgICAgY29uc3QgaXNCTGV0dGVyID0gIWNoaW5lc2VDaGFyUmVnZXgyLnRlc3QoYik7XHJcbiAgICAgICAgaWYgKGlzQUxldHRlciAmJiBpc0JMZXR0ZXIpIHJldHVybiBhLmxvY2FsZUNvbXBhcmUoYik7XHJcbiAgICB9LFxyXG59O1xyXG5cclxuZnVuY3Rpb24gY29tcGFyZVN0cmluZ3MoYTogc3RyaW5nLCBiOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgaWYgKCFhICYmICFiKSByZXR1cm4gMDtcclxuICAgIGlmICghYSAmJiBiKSByZXR1cm4gLTE7XHJcbiAgICBpZiAoYSAmJiAhYikgcmV0dXJuIDE7XHJcblxyXG4gICAgLy8g5Yik5pat6K+t6KiA57G75Z6LXHJcbiAgICBjb25zdCBnZXRMYW5ndWFnZSA9IChzdHI6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGlmICgvXltcXHU0RTAwLVxcdTlGRkZcXHUzNDAwLVxcdTREQkZcXHVGOTAwLVxcdUZBRkZdLy50ZXN0KHN0cikpIHtcclxuICAgICAgICAgICAgLy8g5Yik5pat5piv566A5L2T5Lit5paH6L+Y5piv57mB5L2T5Lit5paHXHJcbiAgICAgICAgICAgIGlmICgvXltcXHU0RTAwLVxcdTlGRkZdLy50ZXN0KHN0cikpIHJldHVybiAnemgtSGFucy1DTic7IC8vIOeugOS9k+S4reaWh1xyXG4gICAgICAgICAgICByZXR1cm4gJ3poLUhhbnQtVFcnOyAvLyDnuYHkvZPkuK3mlodcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKC9eW1xcdTMwNDAtXFx1MzA5RlxcdTMwQTAtXFx1MzBGRl0vLnRlc3Qoc3RyKSkgcmV0dXJuICdqYSc7IC8vIOaXpeaWh1xyXG4gICAgICAgIGlmICgvXltcXHUwMEMwLVxcdTFFRjldLy50ZXN0KHN0cikpIHJldHVybiAndmknOyAvLyDotorljZfmlodcclxuICAgICAgICByZXR1cm4gJ2VuJzsgLy8g6Iux5paH5oiW5YW25LuWXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGxhbmdBID0gZ2V0TGFuZ3VhZ2UoYSk7XHJcbiAgICBjb25zdCBsYW5nQiA9IGdldExhbmd1YWdlKGIpO1xyXG5cclxuICAgIGlmIChsYW5nQSAhPT0gbGFuZ0IpIHtcclxuICAgICAgICAvLyDmjInor63oqIDliIbnu4TmjpLluo9cclxuICAgICAgICBjb25zdCBsYW5ndWFnZU9yZGVyID0gWyd2aScsICdlbicsICd6aC1IYW5zLUNOJywgJ3poLUhhbnQtVFcnLCAnamEnXTtcclxuICAgICAgICByZXR1cm4gbGFuZ3VhZ2VPcmRlci5pbmRleE9mKGxhbmdBKSAtIGxhbmd1YWdlT3JkZXIuaW5kZXhPZihsYW5nQik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5ZCM6K+t6KiA5oyJ5ou86Z+z5oiW5a2X5q+N5o6S5bqPXHJcbiAgICByZXR1cm4gYS5sb2NhbGVDb21wYXJlKGIsIGxhbmdBLCB7XHJcbiAgICAgICAgc2Vuc2l0aXZpdHk6ICdiYXNlJywgLy8g5b+955Wl5aSn5bCP5YaZ5ZKM6YeN6Z+z56ym5Y+3XHJcbiAgICAgICAgbnVtZXJpYzogdHJ1ZSwgLy8g5pSv5oyB5pWw5a2X55qE6Ieq54S25o6S5bqPXHJcbiAgICAgICAgaWdub3JlUHVuY3R1YXRpb246IHRydWUsIC8vIOW/veeVpeagh+eCueespuWPt1xyXG4gICAgICAgIGNhc2VGaXJzdDogJ3VwcGVyJywgLy8g5aSn5YaZ5a2X5q+N5LyY5YWIXHJcbiAgICB9KTtcclxufVxyXG5cclxuaW1wb3J0IHsgcGlueWluIH0gZnJvbSAncGlueWluLXBybyc7XHJcbi8vIOS4reaWh+i9rOaLvOmfs+WHveaVsO+8iOaUr+aMgeeugOS9k+WSjOe5geS9k++8iVxyXG5mdW5jdGlvbiBjb252ZXJ0VG9QaW55aW4oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgciA9IHBpbnlpbihzdHIsIHtcclxuICAgICAgICB0eXBlOiAnYXJyYXknLFxyXG4gICAgICAgIC8vc3R5bGU6IDQsIC8vIOW4puWjsOiwg1xyXG4gICAgICAgIC8vaGV0ZXJvbnltOiBmYWxzZSwgLy8g5LiN5pi+56S65aSa6Z+z5a2XXHJcbiAgICAgICAgLy9yZXR1cm5TdHJpbmc6IHRydWUsICAgICAgICAgICAgLy8g6L+U5Zue5a2X56ym5LiyXHJcbiAgICB9KTtcclxuICAgIHJldHVybiByLmZsYXQoKS5qb2luKCcnKTtcclxufVxyXG5mdW5jdGlvbiBnZXRTb3J0S2V5KHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICgvXltcXHU0RTAwLVxcdTlGRkZdLy50ZXN0KHN0cikpIHtcclxuICAgICAgICByZXR1cm4gY29udmVydFRvUGlueWluKHN0cik7IC8vIOS4reaWh+i9rOaNouS4uuaLvOmfs1xyXG4gICAgfVxyXG4gICAgaWYgKC9eW1xcdTMwNDAtXFx1MzA5RlxcdTMwQTAtXFx1MzBGRl0vLnRlc3Qoc3RyKSkge1xyXG4gICAgICAgIHJldHVybiBzdHI7IC8vIOaXpeaWh+ebtOaOpeS9v+eUqOWOn+Wtl+espuS4slxyXG4gICAgfVxyXG4gICAgaWYgKC9eW1xcdTAwQzAtXFx1MUVGOV0vLnRlc3Qoc3RyKSkge1xyXG4gICAgICAgIHJldHVybiBzdHIubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyk7IC8vIOi2iuWNl+aWh+agh+WHhuWMllxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0cjsgLy8g6Iux5paH5oiW5YW25LuWXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNvbXBhcmVTdHJpbmdzQnlTb3J0S2V5KGE6IHN0cmluZywgYjogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IGtleUEgPSBnZXRTb3J0S2V5KGEpO1xyXG4gICAgY29uc3Qga2V5QiA9IGdldFNvcnRLZXkoYik7XHJcbiAgICByZXR1cm4ga2V5QS5sb2NhbGVDb21wYXJlKGtleUIsICdlbicpOyAvLyDkvb/nlKjoi7Hmlofor63oqIDnjq/looPmr5TovoNcclxufVxyXG4iXX0=
|