monkey-style-guide 2.0.181 → 2.0.183
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 +1287 -1285
- package/assets/data/country-codes.json +1466 -1466
- package/assets/icons/add-plus.svg +5 -5
- package/assets/icons/address-book.svg +4 -4
- package/assets/icons/arrow-down.svg +3 -3
- package/assets/icons/arrow-left.svg +3 -3
- package/assets/icons/arrow-line-right.svg +5 -5
- package/assets/icons/arrow-right.svg +3 -3
- package/assets/icons/arrow-up.svg +3 -3
- package/assets/icons/arrows.svg +6 -6
- package/assets/icons/auction.svg +7 -7
- package/assets/icons/average-tax.svg +6 -6
- package/assets/icons/bank-account.svg +12 -12
- package/assets/icons/bank-agency.svg +8 -8
- package/assets/icons/bank.svg +3 -3
- package/assets/icons/banknote-search.svg +8 -8
- package/assets/icons/bell.svg +4 -4
- package/assets/icons/block.svg +4 -4
- package/assets/icons/book-open-text.svg +10 -10
- package/assets/icons/book.svg +4 -4
- package/assets/icons/box.svg +6 -6
- package/assets/icons/build-approved.svg +9 -9
- package/assets/icons/build-person.svg +9 -9
- package/assets/icons/build-refused.svg +9 -9
- package/assets/icons/build-waiting.svg +8 -8
- package/assets/icons/calendar-box.svg +10 -10
- package/assets/icons/calendar.svg +6 -6
- package/assets/icons/camera.svg +4 -4
- package/assets/icons/card-machine.svg +14 -14
- package/assets/icons/card.svg +4 -4
- package/assets/icons/cash-banknote-invoice.svg +8 -8
- package/assets/icons/chart-down.svg +5 -0
- package/assets/icons/chart-up.svg +5 -0
- package/assets/icons/chat.svg +4 -4
- package/assets/icons/check-circle-out.svg +4 -4
- package/assets/icons/check-circle.svg +4 -4
- package/assets/icons/check-grey.svg +3 -3
- package/assets/icons/check-white.svg +4 -4
- package/assets/icons/check.svg +3 -3
- package/assets/icons/clipboard.svg +4 -4
- package/assets/icons/clock-closed.svg +6 -6
- package/assets/icons/clock.svg +4 -4
- package/assets/icons/close-circle.svg +5 -5
- package/assets/icons/close.svg +4 -4
- package/assets/icons/cnpj.svg +9 -9
- package/assets/icons/codepen.svg +7 -7
- package/assets/icons/company-name.svg +12 -12
- package/assets/icons/contract-pen.svg +7 -7
- package/assets/icons/contract.svg +14 -14
- package/assets/icons/delete.svg +5 -5
- package/assets/icons/digital-certificate.svg +6 -6
- package/assets/icons/document.svg +7 -7
- package/assets/icons/dollar-sign-circle.svg +7 -7
- package/assets/icons/dollar-sign.svg +5 -5
- package/assets/icons/domain.svg +9 -9
- package/assets/icons/dots-menu.svg +5 -5
- package/assets/icons/double-arrow-left.svg +4 -4
- package/assets/icons/double-arrow-right.svg +4 -4
- package/assets/icons/download.svg +5 -5
- package/assets/icons/drag-drop.svg +8 -8
- package/assets/icons/edit-square.svg +4 -4
- package/assets/icons/edit.svg +3 -3
- package/assets/icons/email-send-fast.svg +8 -8
- package/assets/icons/email.svg +4 -4
- package/assets/icons/empty-doc.svg +4 -4
- package/assets/icons/error.svg +5 -5
- package/assets/icons/eye-closed.svg +11 -11
- package/assets/icons/eye-open.svg +4 -4
- package/assets/icons/filter-add.svg +6 -6
- package/assets/icons/filter.svg +3 -3
- package/assets/icons/grid.svg +6 -6
- package/assets/icons/hands-clap.svg +10 -10
- package/assets/icons/help.svg +5 -5
- package/assets/icons/hexagon.svg +3 -3
- package/assets/icons/home.svg +4 -4
- package/assets/icons/image.svg +5 -5
- package/assets/icons/info.svg +6 -6
- package/assets/icons/invoice.svg +5 -5
- package/assets/icons/invoices-anticipated.svg +8 -8
- package/assets/icons/invoices-approval.svg +8 -8
- package/assets/icons/invoices-refused.svg +8 -8
- package/assets/icons/lighting-circle.svg +5 -5
- package/assets/icons/list.svg +8 -8
- package/assets/icons/location-pin.svg +4 -4
- package/assets/icons/login.svg +5 -5
- package/assets/icons/logout.svg +5 -5
- package/assets/icons/mail-box-upload.svg +6 -6
- package/assets/icons/mail-letter-fast-circle.svg +7 -7
- package/assets/icons/mail-open-document.svg +6 -6
- package/assets/icons/medal.svg +12 -12
- package/assets/icons/menu.svg +5 -5
- package/assets/icons/money-cedule.svg +6 -6
- package/assets/icons/money-discount.svg +8 -8
- package/assets/icons/money-hand.svg +6 -6
- package/assets/icons/money-net.svg +8 -8
- package/assets/icons/money-new.svg +7 -7
- package/assets/icons/money-percent.svg +10 -10
- package/assets/icons/money-refused.svg +9 -9
- package/assets/icons/money-sign.svg +4 -4
- package/assets/icons/money-waiting.svg +8 -8
- package/assets/icons/money.svg +6 -6
- package/assets/icons/more-circle.svg +5 -5
- package/assets/icons/more.svg +4 -4
- package/assets/icons/new-company.svg +10 -10
- package/assets/icons/offered.svg +5 -5
- package/assets/icons/office-work.svg +10 -10
- package/assets/icons/open-external.svg +5 -5
- package/assets/icons/password.svg +4 -4
- package/assets/icons/people.svg +6 -6
- package/assets/icons/percent-box.svg +6 -6
- package/assets/icons/percent.svg +5 -5
- package/assets/icons/person-document.svg +10 -10
- package/assets/icons/person-sad.svg +6 -6
- package/assets/icons/phone-call.svg +4 -4
- package/assets/icons/phone.svg +3 -3
- package/assets/icons/pin-navigation.svg +5 -5
- package/assets/icons/pork.svg +5 -5
- package/assets/icons/radio.svg +4 -4
- package/assets/icons/refresh.svg +5 -5
- package/assets/icons/registration.svg +8 -8
- package/assets/icons/repeat.svg +4 -4
- package/assets/icons/search.svg +4 -4
- package/assets/icons/second-warning.svg +5 -5
- package/assets/icons/settings.svg +4 -4
- package/assets/icons/shield-chekmark.svg +3 -3
- package/assets/icons/star-shining.svg +13 -13
- package/assets/icons/star.svg +3 -3
- package/assets/icons/store.svg +8 -8
- package/assets/icons/suppliers.svg +11 -11
- package/assets/icons/target-dart-arrow.svg +6 -6
- package/assets/icons/today.svg +9 -9
- package/assets/icons/trash.svg +6 -6
- package/assets/icons/trophy.svg +8 -8
- package/assets/icons/unfold-more.svg +4 -4
- package/assets/icons/upload.svg +5 -5
- package/assets/icons/user-group.svg +8 -8
- package/assets/icons/user.svg +4 -4
- package/assets/icons/waiting.svg +17 -17
- package/assets/icons/wallet.svg +5 -5
- package/assets/icons/warning.svg +5 -5
- package/assets/scss/partials/_breakpoints.scss +35 -35
- package/assets/scss/partials/_forms.scss +350 -350
- package/assets/scss/partials/_index.scss +11 -11
- package/assets/scss/partials/_radio-button.scss +35 -35
- package/assets/scss/partials/_style-reset.scss +185 -185
- package/assets/scss/partials/_typography.scss +149 -149
- package/assets/scss/partials/_variables.scss +184 -184
- package/assets/scss/partials/components/_badge.scss +55 -55
- package/assets/scss/partials/components/_buttons.scss +831 -831
- package/assets/scss/partials/components/_checkbox.scss +69 -69
- package/assets/scss/partials/components/_date-range-picker-v2.scss +302 -0
- package/assets/scss/partials/components/_date-range-picker.scss +265 -265
- package/assets/scss/partials/components/_expansion.scss +96 -96
- package/assets/scss/partials/components/_image-crop.scss +305 -305
- package/assets/scss/partials/components/_index.scss +24 -23
- package/assets/scss/partials/components/_input-phone.scss +36 -36
- package/assets/scss/partials/components/_input.scss +65 -65
- package/assets/scss/partials/components/_modal.scss +282 -282
- package/assets/scss/partials/components/_progressbar.scss +112 -112
- package/assets/scss/partials/components/_radiobutton.scss +66 -66
- package/assets/scss/partials/components/_select.scss +356 -356
- package/assets/scss/partials/components/_snackbar.scss +204 -204
- package/assets/scss/partials/components/_stepper.scss +86 -86
- package/assets/scss/partials/components/_tab.scss +82 -82
- package/assets/scss/partials/components/_table.scss +148 -148
- package/assets/scss/partials/components/_toggle.scss +103 -103
- package/assets/scss/partials/components/_wizard.scss +112 -112
- package/esm2020/lib/components/badge/badge.component.mjs +43 -43
- package/esm2020/lib/components/badge/badge.module.mjs +19 -19
- package/esm2020/lib/components/badge/index.mjs +3 -3
- package/esm2020/lib/components/button/button-avatar.component.mjs +53 -53
- package/esm2020/lib/components/button/button-dropdown.component.mjs +121 -121
- package/esm2020/lib/components/button/button.component.mjs +154 -154
- package/esm2020/lib/components/button/button.module.mjs +23 -23
- package/esm2020/lib/components/button/index.mjs +5 -5
- package/esm2020/lib/components/checkbox/checkbox.component.mjs +165 -165
- package/esm2020/lib/components/checkbox/checkbox.module.mjs +20 -20
- package/esm2020/lib/components/checkbox/index.mjs +3 -3
- package/esm2020/lib/components/date-range-picker/date-range-picker.component.mjs +660 -660
- package/esm2020/lib/components/date-range-picker/date-range-picker.module.mjs +22 -22
- package/esm2020/lib/components/date-range-picker/index.mjs +3 -3
- package/esm2020/lib/components/date-range-picker-v2/date-range-picker.component.mjs +671 -0
- package/esm2020/lib/components/date-range-picker-v2/date-range-picker.module.mjs +22 -0
- package/esm2020/lib/components/date-range-picker-v2/index.mjs +3 -0
- package/esm2020/lib/components/expansion/expansion.component.mjs +115 -115
- package/esm2020/lib/components/expansion/expansion.module.mjs +20 -20
- package/esm2020/lib/components/expansion/index.mjs +3 -3
- package/esm2020/lib/components/file-upload/file-upload.component.mjs +294 -294
- package/esm2020/lib/components/file-upload/file-upload.module.mjs +37 -37
- package/esm2020/lib/components/file-upload/index.mjs +3 -3
- package/esm2020/lib/components/icon/icon-add-plus.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-address-book.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-arrow-down.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-arrow-left.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-arrow-line-right.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-arrow-right.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-arrow-up.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-arrows.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-auction.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-average-tax.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-bank-account.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-bank-agency.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-bank.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-banknote-search.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-bell.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-block.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-book-open-text.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-book.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-box.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-build-approved.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-build-person.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-build-refused.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-build-waiting.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-calendar-box.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-calendar.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-camera.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-card-machine.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-card.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-cash-banknote-invoice.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-chart-down.component.mjs +15 -0
- package/esm2020/lib/components/icon/icon-chart-up.component.mjs +15 -0
- package/esm2020/lib/components/icon/icon-chat.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-check-circle-out.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-check-circle.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-check-grey.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-check-white.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-check.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-clipboard.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-clock-closed.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-clock.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-close-circle.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-close.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-cnpj.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-codepen.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-company-name.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-contract-pen.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-contract.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-delete.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-digital-certificate.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-document.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-dollar-sign-circle.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-dollar-sign.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-domain.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-dots-menu.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-double-arrow-left.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-double-arrow-right.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-download.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-drag-drop.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-edit-square.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-edit.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-email-send-fast.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-email.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-empty-doc.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-error.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-eye-closed.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-eye-open.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-filter-add.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-filter.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-grid.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-hands-clap.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-help.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-hexagon.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-home.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-image.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-info.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-invoice.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-invoices-anticipated.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-invoices-approval.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-invoices-refused.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-lighting-circle.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-list.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-location-pin.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-login.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-logout.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-mail-box-upload.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-mail-letter-fast-circle.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-mail-open-document.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-medal.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-menu.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-money-cedule.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-money-discount.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-money-hand.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-money-net.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-money-new.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-money-percent.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-money-refused.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-money-sign.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-money-waiting.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-money.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-more-circle.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-more.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-new-company.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-offered.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-open-external.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-password.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-people.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-percent-box.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-percent.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-person-document.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-person-sad.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-phone-call.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-phone.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-pin-navigation.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-pork.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-radio.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-refresh.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-registration.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-repeat.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-search.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-second-warning.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-settings.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-shield-chekmark.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-star-shining.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-star.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-store.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-suppliers.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-target-dart-arrow.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-today.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-trash.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-trophy.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-unfold-more.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-upload.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-user-group.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-user.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-waiting.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-wallet.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon-warning.component.mjs +15 -15
- package/esm2020/lib/components/icon/icon.component.mjs +1874 -1848
- package/esm2020/lib/components/icon/icon.module.mjs +295 -291
- package/esm2020/lib/components/icon/index.mjs +141 -139
- package/esm2020/lib/components/image-crop/image-crop.component.mjs +516 -516
- package/esm2020/lib/components/image-crop/image-crop.module.mjs +41 -41
- package/esm2020/lib/components/image-crop/index.mjs +3 -3
- package/esm2020/lib/components/index.mjs +21 -20
- package/esm2020/lib/components/input/index.mjs +4 -4
- package/esm2020/lib/components/input/input-filter.component.mjs +286 -286
- package/esm2020/lib/components/input/input.component.mjs +384 -384
- package/esm2020/lib/components/input/input.module.mjs +38 -38
- package/esm2020/lib/components/input-phone/index.mjs +3 -3
- package/esm2020/lib/components/input-phone/input-phone.component.mjs +307 -307
- package/esm2020/lib/components/input-phone/input-phone.module.mjs +45 -45
- package/esm2020/lib/components/modal/index.mjs +3 -3
- package/esm2020/lib/components/modal/modal.component.mjs +236 -236
- package/esm2020/lib/components/modal/modal.module.mjs +21 -21
- package/esm2020/lib/components/option/index.mjs +3 -3
- package/esm2020/lib/components/option/option.component.mjs +131 -131
- package/esm2020/lib/components/option/option.module.mjs +29 -29
- package/esm2020/lib/components/radiobutton/index.mjs +3 -3
- package/esm2020/lib/components/radiobutton/radiobutton.component.mjs +165 -165
- package/esm2020/lib/components/radiobutton/radiobutton.module.mjs +36 -36
- package/esm2020/lib/components/select/index.mjs +6 -6
- package/esm2020/lib/components/select/select-filter.component.mjs +197 -197
- package/esm2020/lib/components/select/select-multiple.component.mjs +304 -304
- package/esm2020/lib/components/select/select-search.component.mjs +306 -306
- package/esm2020/lib/components/select/select.component.mjs +245 -245
- package/esm2020/lib/components/select/select.module.mjs +61 -61
- package/esm2020/lib/components/stepper/index.mjs +3 -3
- package/esm2020/lib/components/stepper/stepper.component.mjs +57 -57
- package/esm2020/lib/components/stepper/stepper.module.mjs +20 -20
- package/esm2020/lib/components/tab/index.mjs +3 -3
- package/esm2020/lib/components/tab/tab.component.mjs +100 -100
- package/esm2020/lib/components/tab/tab.module.mjs +21 -21
- package/esm2020/lib/components/table/index.mjs +4 -4
- package/esm2020/lib/components/table/table-column.component.mjs +34 -34
- package/esm2020/lib/components/table/table.component.mjs +267 -267
- package/esm2020/lib/components/table/table.module.mjs +23 -23
- package/esm2020/lib/components/toggle/index.mjs +3 -3
- package/esm2020/lib/components/toggle/toggle.component.mjs +56 -56
- package/esm2020/lib/components/toggle/toggle.module.mjs +19 -19
- package/esm2020/lib/components/wizard/index.mjs +3 -3
- package/esm2020/lib/components/wizard/wizard.component.mjs +61 -61
- package/esm2020/lib/components/wizard/wizard.module.mjs +33 -33
- package/esm2020/lib/core/index.mjs +4 -4
- package/esm2020/lib/core/interfaces/index.mjs +3 -3
- package/esm2020/lib/core/interfaces/monkey-modal-settings.mjs +2 -2
- package/esm2020/lib/core/interfaces/monkey-style-settings.mjs +2 -2
- package/esm2020/lib/core/services/index.mjs +4 -4
- package/esm2020/lib/core/services/modal/index.mjs +3 -3
- package/esm2020/lib/core/services/modal/monkey-style-guide-modal-fixed.service.mjs +52 -52
- package/esm2020/lib/core/services/modal/monkey-style-guide-modal.service.mjs +55 -55
- package/esm2020/lib/core/services/monkey-style-guide.service.mjs +17 -17
- package/esm2020/lib/core/services/settings/index.mjs +1 -1
- package/esm2020/lib/core/services/settings/monkey-style-guide-settings.service.mjs +41 -41
- package/esm2020/lib/core/services/settings/monkey-style-guide-theme-settings.service.mjs +80 -80
- package/esm2020/lib/core/services/snackbar/index.mjs +1 -1
- package/esm2020/lib/core/services/snackbar/mokey-style-guide-snackbar.service.mjs +226 -226
- package/esm2020/lib/core/utils/index.mjs +1 -1
- package/esm2020/lib/core/utils/utils.mjs +240 -240
- package/esm2020/lib/monkey-style-guide.module.mjs +31 -31
- package/esm2020/monkey-style-guide.mjs +4 -4
- package/esm2020/public-api.mjs +9 -9
- package/fesm2015/monkey-style-guide.mjs +10670 -9940
- package/fesm2015/monkey-style-guide.mjs.map +1 -1
- package/fesm2020/monkey-style-guide.mjs +10658 -9929
- package/fesm2020/monkey-style-guide.mjs.map +1 -1
- package/lib/components/badge/badge.component.d.ts +8 -8
- package/lib/components/badge/badge.module.d.ts +8 -8
- package/lib/components/badge/index.d.ts +2 -2
- package/lib/components/button/button-avatar.component.d.ts +19 -19
- package/lib/components/button/button-dropdown.component.d.ts +23 -23
- package/lib/components/button/button.component.d.ts +22 -22
- package/lib/components/button/button.module.d.ts +12 -12
- package/lib/components/button/index.d.ts +4 -4
- package/lib/components/checkbox/checkbox.component.d.ts +32 -32
- package/lib/components/checkbox/checkbox.module.d.ts +9 -9
- package/lib/components/checkbox/index.d.ts +2 -2
- package/lib/components/date-range-picker/date-range-picker.component.d.ts +69 -69
- package/lib/components/date-range-picker/date-range-picker.module.d.ts +11 -11
- package/lib/components/date-range-picker/index.d.ts +2 -2
- package/lib/components/date-range-picker-v2/date-range-picker.component.d.ts +73 -0
- package/lib/components/date-range-picker-v2/date-range-picker.module.d.ts +11 -0
- package/lib/components/date-range-picker-v2/index.d.ts +2 -0
- package/lib/components/expansion/expansion.component.d.ts +20 -20
- package/lib/components/expansion/expansion.module.d.ts +9 -9
- package/lib/components/expansion/index.d.ts +2 -2
- package/lib/components/file-upload/file-upload.component.d.ts +51 -51
- package/lib/components/file-upload/file-upload.module.d.ts +11 -11
- package/lib/components/file-upload/index.d.ts +2 -2
- package/lib/components/icon/icon-add-plus.component.d.ts +7 -7
- package/lib/components/icon/icon-address-book.component.d.ts +7 -7
- package/lib/components/icon/icon-arrow-down.component.d.ts +7 -7
- package/lib/components/icon/icon-arrow-left.component.d.ts +7 -7
- package/lib/components/icon/icon-arrow-line-right.component.d.ts +7 -7
- package/lib/components/icon/icon-arrow-right.component.d.ts +7 -7
- package/lib/components/icon/icon-arrow-up.component.d.ts +7 -7
- package/lib/components/icon/icon-arrows.component.d.ts +7 -7
- package/lib/components/icon/icon-auction.component.d.ts +7 -7
- package/lib/components/icon/icon-average-tax.component.d.ts +7 -7
- package/lib/components/icon/icon-bank-account.component.d.ts +7 -7
- package/lib/components/icon/icon-bank-agency.component.d.ts +7 -7
- package/lib/components/icon/icon-bank.component.d.ts +7 -7
- package/lib/components/icon/icon-banknote-search.component.d.ts +7 -7
- package/lib/components/icon/icon-bell.component.d.ts +7 -7
- package/lib/components/icon/icon-block.component.d.ts +7 -7
- package/lib/components/icon/icon-book-open-text.component.d.ts +7 -7
- package/lib/components/icon/icon-book.component.d.ts +7 -7
- package/lib/components/icon/icon-box.component.d.ts +7 -7
- package/lib/components/icon/icon-build-approved.component.d.ts +7 -7
- package/lib/components/icon/icon-build-person.component.d.ts +7 -7
- package/lib/components/icon/icon-build-refused.component.d.ts +7 -7
- package/lib/components/icon/icon-build-waiting.component.d.ts +7 -7
- package/lib/components/icon/icon-calendar-box.component.d.ts +7 -7
- package/lib/components/icon/icon-calendar.component.d.ts +7 -7
- package/lib/components/icon/icon-camera.component.d.ts +7 -7
- package/lib/components/icon/icon-card-machine.component.d.ts +7 -7
- package/lib/components/icon/icon-card.component.d.ts +7 -7
- package/lib/components/icon/icon-cash-banknote-invoice.component.d.ts +7 -7
- package/lib/components/icon/icon-chart-down.component.d.ts +7 -0
- package/lib/components/icon/icon-chart-up.component.d.ts +7 -0
- package/lib/components/icon/icon-chat.component.d.ts +7 -7
- package/lib/components/icon/icon-check-circle-out.component.d.ts +7 -7
- package/lib/components/icon/icon-check-circle.component.d.ts +7 -7
- package/lib/components/icon/icon-check-grey.component.d.ts +7 -7
- package/lib/components/icon/icon-check-white.component.d.ts +7 -7
- package/lib/components/icon/icon-check.component.d.ts +7 -7
- package/lib/components/icon/icon-clipboard.component.d.ts +7 -7
- package/lib/components/icon/icon-clock-closed.component.d.ts +7 -7
- package/lib/components/icon/icon-clock.component.d.ts +7 -7
- package/lib/components/icon/icon-close-circle.component.d.ts +7 -7
- package/lib/components/icon/icon-close.component.d.ts +7 -7
- package/lib/components/icon/icon-cnpj.component.d.ts +7 -7
- package/lib/components/icon/icon-codepen.component.d.ts +7 -7
- package/lib/components/icon/icon-company-name.component.d.ts +7 -7
- package/lib/components/icon/icon-contract-pen.component.d.ts +7 -7
- package/lib/components/icon/icon-contract.component.d.ts +7 -7
- package/lib/components/icon/icon-delete.component.d.ts +7 -7
- package/lib/components/icon/icon-digital-certificate.component.d.ts +7 -7
- package/lib/components/icon/icon-document.component.d.ts +7 -7
- package/lib/components/icon/icon-dollar-sign-circle.component.d.ts +7 -7
- package/lib/components/icon/icon-dollar-sign.component.d.ts +7 -7
- package/lib/components/icon/icon-domain.component.d.ts +7 -7
- package/lib/components/icon/icon-dots-menu.component.d.ts +7 -7
- package/lib/components/icon/icon-double-arrow-left.component.d.ts +7 -7
- package/lib/components/icon/icon-double-arrow-right.component.d.ts +7 -7
- package/lib/components/icon/icon-download.component.d.ts +7 -7
- package/lib/components/icon/icon-drag-drop.component.d.ts +7 -7
- package/lib/components/icon/icon-edit-square.component.d.ts +7 -7
- package/lib/components/icon/icon-edit.component.d.ts +7 -7
- package/lib/components/icon/icon-email-send-fast.component.d.ts +7 -7
- package/lib/components/icon/icon-email.component.d.ts +7 -7
- package/lib/components/icon/icon-empty-doc.component.d.ts +7 -7
- package/lib/components/icon/icon-error.component.d.ts +7 -7
- package/lib/components/icon/icon-eye-closed.component.d.ts +7 -7
- package/lib/components/icon/icon-eye-open.component.d.ts +7 -7
- package/lib/components/icon/icon-filter-add.component.d.ts +7 -7
- package/lib/components/icon/icon-filter.component.d.ts +7 -7
- package/lib/components/icon/icon-grid.component.d.ts +7 -7
- package/lib/components/icon/icon-hands-clap.component.d.ts +7 -7
- package/lib/components/icon/icon-help.component.d.ts +7 -7
- package/lib/components/icon/icon-hexagon.component.d.ts +7 -7
- package/lib/components/icon/icon-home.component.d.ts +7 -7
- package/lib/components/icon/icon-image.component.d.ts +7 -7
- package/lib/components/icon/icon-info.component.d.ts +7 -7
- package/lib/components/icon/icon-invoice.component.d.ts +7 -7
- package/lib/components/icon/icon-invoices-anticipated.component.d.ts +7 -7
- package/lib/components/icon/icon-invoices-approval.component.d.ts +7 -7
- package/lib/components/icon/icon-invoices-refused.component.d.ts +7 -7
- package/lib/components/icon/icon-lighting-circle.component.d.ts +7 -7
- package/lib/components/icon/icon-list.component.d.ts +7 -7
- package/lib/components/icon/icon-location-pin.component.d.ts +7 -7
- package/lib/components/icon/icon-login.component.d.ts +7 -7
- package/lib/components/icon/icon-logout.component.d.ts +7 -7
- package/lib/components/icon/icon-mail-box-upload.component.d.ts +7 -7
- package/lib/components/icon/icon-mail-letter-fast-circle.component.d.ts +7 -7
- package/lib/components/icon/icon-mail-open-document.component.d.ts +7 -7
- package/lib/components/icon/icon-medal.component.d.ts +7 -7
- package/lib/components/icon/icon-menu.component.d.ts +7 -7
- package/lib/components/icon/icon-money-cedule.component.d.ts +7 -7
- package/lib/components/icon/icon-money-discount.component.d.ts +7 -7
- package/lib/components/icon/icon-money-hand.component.d.ts +7 -7
- package/lib/components/icon/icon-money-net.component.d.ts +7 -7
- package/lib/components/icon/icon-money-new.component.d.ts +7 -7
- package/lib/components/icon/icon-money-percent.component.d.ts +7 -7
- package/lib/components/icon/icon-money-refused.component.d.ts +7 -7
- package/lib/components/icon/icon-money-sign.component.d.ts +7 -7
- package/lib/components/icon/icon-money-waiting.component.d.ts +7 -7
- package/lib/components/icon/icon-money.component.d.ts +7 -7
- package/lib/components/icon/icon-more-circle.component.d.ts +7 -7
- package/lib/components/icon/icon-more.component.d.ts +7 -7
- package/lib/components/icon/icon-new-company.component.d.ts +7 -7
- package/lib/components/icon/icon-offered.component.d.ts +7 -7
- package/lib/components/icon/icon-open-external.component.d.ts +7 -7
- package/lib/components/icon/icon-password.component.d.ts +7 -7
- package/lib/components/icon/icon-people.component.d.ts +7 -7
- package/lib/components/icon/icon-percent-box.component.d.ts +7 -7
- package/lib/components/icon/icon-percent.component.d.ts +7 -7
- package/lib/components/icon/icon-person-document.component.d.ts +7 -7
- package/lib/components/icon/icon-person-sad.component.d.ts +7 -7
- package/lib/components/icon/icon-phone-call.component.d.ts +7 -7
- package/lib/components/icon/icon-phone.component.d.ts +7 -7
- package/lib/components/icon/icon-pin-navigation.component.d.ts +7 -7
- package/lib/components/icon/icon-pork.component.d.ts +7 -7
- package/lib/components/icon/icon-radio.component.d.ts +7 -7
- package/lib/components/icon/icon-refresh.component.d.ts +7 -7
- package/lib/components/icon/icon-registration.component.d.ts +7 -7
- package/lib/components/icon/icon-repeat.component.d.ts +7 -7
- package/lib/components/icon/icon-search.component.d.ts +7 -7
- package/lib/components/icon/icon-second-warning.component.d.ts +7 -7
- package/lib/components/icon/icon-settings.component.d.ts +7 -7
- package/lib/components/icon/icon-shield-chekmark.component.d.ts +7 -7
- package/lib/components/icon/icon-star-shining.component.d.ts +7 -7
- package/lib/components/icon/icon-star.component.d.ts +7 -7
- package/lib/components/icon/icon-store.component.d.ts +7 -7
- package/lib/components/icon/icon-suppliers.component.d.ts +7 -7
- package/lib/components/icon/icon-target-dart-arrow.component.d.ts +7 -7
- package/lib/components/icon/icon-today.component.d.ts +7 -7
- package/lib/components/icon/icon-trash.component.d.ts +7 -7
- package/lib/components/icon/icon-trophy.component.d.ts +7 -7
- package/lib/components/icon/icon-unfold-more.component.d.ts +7 -7
- package/lib/components/icon/icon-upload.component.d.ts +7 -7
- package/lib/components/icon/icon-user-group.component.d.ts +7 -7
- package/lib/components/icon/icon-user.component.d.ts +7 -7
- package/lib/components/icon/icon-waiting.component.d.ts +7 -7
- package/lib/components/icon/icon-wallet.component.d.ts +7 -7
- package/lib/components/icon/icon-warning.component.d.ts +7 -7
- package/lib/components/icon/icon.component.d.ts +27 -27
- package/lib/components/icon/icon.module.d.ts +145 -143
- package/lib/components/icon/index.d.ts +140 -138
- package/lib/components/image-crop/image-crop.component.d.ts +77 -77
- package/lib/components/image-crop/image-crop.module.d.ts +12 -12
- package/lib/components/image-crop/index.d.ts +2 -2
- package/lib/components/index.d.ts +20 -19
- package/lib/components/input/index.d.ts +3 -3
- package/lib/components/input/input-filter.component.d.ts +55 -55
- package/lib/components/input/input.component.d.ts +64 -64
- package/lib/components/input/input.module.d.ts +12 -12
- package/lib/components/input-phone/index.d.ts +2 -2
- package/lib/components/input-phone/input-phone.component.d.ts +62 -62
- package/lib/components/input-phone/input-phone.module.d.ts +13 -13
- package/lib/components/modal/index.d.ts +2 -2
- package/lib/components/modal/modal.component.d.ts +24 -24
- package/lib/components/modal/modal.module.d.ts +10 -10
- package/lib/components/option/index.d.ts +2 -2
- package/lib/components/option/option.component.d.ts +22 -22
- package/lib/components/option/option.module.d.ts +8 -8
- package/lib/components/radiobutton/index.d.ts +2 -2
- package/lib/components/radiobutton/radiobutton.component.d.ts +39 -39
- package/lib/components/radiobutton/radiobutton.module.d.ts +9 -9
- package/lib/components/select/index.d.ts +5 -5
- package/lib/components/select/select-filter.component.d.ts +41 -41
- package/lib/components/select/select-multiple.component.d.ts +48 -48
- package/lib/components/select/select-search.component.d.ts +56 -56
- package/lib/components/select/select.component.d.ts +48 -48
- package/lib/components/select/select.module.d.ts +15 -15
- package/lib/components/stepper/index.d.ts +2 -2
- package/lib/components/stepper/stepper.component.d.ts +18 -18
- package/lib/components/stepper/stepper.module.d.ts +9 -9
- package/lib/components/tab/index.d.ts +2 -2
- package/lib/components/tab/tab.component.d.ts +24 -24
- package/lib/components/tab/tab.module.d.ts +10 -10
- package/lib/components/table/index.d.ts +3 -3
- package/lib/components/table/table-column.component.d.ts +5 -5
- package/lib/components/table/table.component.d.ts +59 -59
- package/lib/components/table/table.module.d.ts +12 -12
- package/lib/components/toggle/index.d.ts +2 -2
- package/lib/components/toggle/toggle.component.d.ts +18 -18
- package/lib/components/toggle/toggle.module.d.ts +8 -8
- package/lib/components/wizard/index.d.ts +2 -2
- package/lib/components/wizard/wizard.component.d.ts +18 -18
- package/lib/components/wizard/wizard.module.d.ts +9 -9
- package/lib/core/index.d.ts +3 -3
- package/lib/core/interfaces/index.d.ts +2 -2
- package/lib/core/interfaces/monkey-modal-settings.d.ts +58 -58
- package/lib/core/interfaces/monkey-style-settings.d.ts +59 -59
- package/lib/core/services/index.d.ts +3 -3
- package/lib/core/services/modal/index.d.ts +2 -2
- package/lib/core/services/modal/monkey-style-guide-modal-fixed.service.d.ts +16 -16
- package/lib/core/services/modal/monkey-style-guide-modal.service.d.ts +18 -18
- package/lib/core/services/monkey-style-guide.service.d.ts +10 -10
- package/lib/core/services/settings/index.d.ts +1 -1
- package/lib/core/services/settings/monkey-style-guide-settings.service.d.ts +15 -15
- package/lib/core/services/settings/monkey-style-guide-theme-settings.service.d.ts +12 -12
- package/lib/core/services/snackbar/index.d.ts +1 -1
- package/lib/core/services/snackbar/mokey-style-guide-snackbar.service.d.ts +58 -58
- package/lib/core/utils/index.d.ts +1 -1
- package/lib/core/utils/utils.d.ts +29 -29
- package/lib/monkey-style-guide.module.d.ts +8 -8
- package/monkey-style-guide-2.0.183.tgz +0 -0
- package/monkey-style-guide.d.ts +5 -5
- package/package.json +1 -1
- package/public-api.d.ts +8 -8
- package/monkey-style-guide-2.0.181.tgz +0 -0
|
@@ -1,240 +1,240 @@
|
|
|
1
|
-
import { PhoneNumberUtil } from 'google-libphonenumber';
|
|
2
|
-
const phoneUtil = PhoneNumberUtil.getInstance();
|
|
3
|
-
export class MonkeyUtils {
|
|
4
|
-
static persistNullEmptyUndefined(tp) {
|
|
5
|
-
return tp !== null && tp !== undefined && tp !== '';
|
|
6
|
-
}
|
|
7
|
-
static getDocumentType(doc) {
|
|
8
|
-
if (!doc)
|
|
9
|
-
return '';
|
|
10
|
-
return doc.length <= 11 ? 'CPF' : 'CNPJ';
|
|
11
|
-
}
|
|
12
|
-
static getDocumentMask(type) {
|
|
13
|
-
if (type === 'CPF')
|
|
14
|
-
return '000.000.000-00';
|
|
15
|
-
return '00.000.000/0000-00';
|
|
16
|
-
}
|
|
17
|
-
static formatDocumentWithMask(doc, withType) {
|
|
18
|
-
if (!doc)
|
|
19
|
-
return doc;
|
|
20
|
-
let formated = '';
|
|
21
|
-
if (doc.length === 14)
|
|
22
|
-
formated = doc
|
|
23
|
-
.replace(/^(\d{2})(\d)/, '$1.$2')
|
|
24
|
-
.replace(/^(\d{2})\.(\d{3})(\d)/, '$1.$2.$3')
|
|
25
|
-
.replace(/\.(\d{3})(\d)/, '.$1/$2')
|
|
26
|
-
.replace(/(\d{4})(\d)/, '$1-$2');
|
|
27
|
-
else
|
|
28
|
-
formated = doc
|
|
29
|
-
.replace(/^(\d{3})(\d)/, '$1.$2')
|
|
30
|
-
.replace(/^(\d{3})\.(\d{3})(\d)/, '$1.$2.$3')
|
|
31
|
-
.replace(/\.(\d{3})(\d)/, '.$1-$2');
|
|
32
|
-
return `${withType ? `${this.getDocumentType(doc)}:` : ''} ${formated}`;
|
|
33
|
-
}
|
|
34
|
-
static cutFirstLastName(value, tp = 'first') {
|
|
35
|
-
const split = value?.trim()?.split(' ');
|
|
36
|
-
if (tp === 'first')
|
|
37
|
-
return split[0];
|
|
38
|
-
return split?.splice(1, split.length)?.join(' ');
|
|
39
|
-
}
|
|
40
|
-
static isCPFCNPJValid(document) {
|
|
41
|
-
document = document.replace(/[^\d]/g, '');
|
|
42
|
-
if (document.length === 11) {
|
|
43
|
-
let base = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0];
|
|
44
|
-
for (var i = 0, n = 0; i < 9; n += document[i] * base[i++])
|
|
45
|
-
;
|
|
46
|
-
if (document[9] != ((n %= 11) <= 1 ? 0 : 11 - n)) {
|
|
47
|
-
return false;
|
|
48
|
-
}
|
|
49
|
-
base = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0];
|
|
50
|
-
for (var i = 0, n = 0; i <= 9; n += document[i] * base[i++])
|
|
51
|
-
;
|
|
52
|
-
if (document[10] != ((n %= 11) <= 1 ? 0 : 11 - n)) {
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
|
-
return true;
|
|
56
|
-
}
|
|
57
|
-
else if (document.length === 14 || /0{14}/.test(document)) {
|
|
58
|
-
let base = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
|
|
59
|
-
for (var i = 0, n = 0; i < 12; n += document[i] * base[++i])
|
|
60
|
-
;
|
|
61
|
-
if (document[12] != ((n %= 11) < 2 ? 0 : 11 - n)) {
|
|
62
|
-
return false;
|
|
63
|
-
}
|
|
64
|
-
for (var i = 0, n = 0; i <= 12; n += document[i] * base[i++])
|
|
65
|
-
;
|
|
66
|
-
if (document[13] != ((n %= 11) < 2 ? 0 : 11 - n)) {
|
|
67
|
-
return false;
|
|
68
|
-
}
|
|
69
|
-
return true;
|
|
70
|
-
}
|
|
71
|
-
else
|
|
72
|
-
return false;
|
|
73
|
-
}
|
|
74
|
-
static isValidUrl(txt) {
|
|
75
|
-
const regex = new RegExp(/^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)+[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,10}(:[0-9]{1,5})?(\/.*)?$/gm);
|
|
76
|
-
return regex.test(txt);
|
|
77
|
-
}
|
|
78
|
-
static isValidZipCode(zipCode) {
|
|
79
|
-
return `${this.handleOnlyNumbers(zipCode)}`.length === 8;
|
|
80
|
-
}
|
|
81
|
-
static getRandomString(len, charSet) {
|
|
82
|
-
charSet = charSet || 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
83
|
-
let randomString = Array.apply(null, Array(len))
|
|
84
|
-
.map(function () {
|
|
85
|
-
return charSet.charAt(Math.floor(Math.random() * charSet.length));
|
|
86
|
-
})
|
|
87
|
-
.join('');
|
|
88
|
-
return randomString;
|
|
89
|
-
}
|
|
90
|
-
static handleOnlyNumbersCurrency(value) {
|
|
91
|
-
if (!value)
|
|
92
|
-
return null;
|
|
93
|
-
return value.replace(new RegExp(/[^0-9.]/g), '');
|
|
94
|
-
}
|
|
95
|
-
static handleOnlyNumbers(value) {
|
|
96
|
-
if (!value)
|
|
97
|
-
return null;
|
|
98
|
-
return value.replace(new RegExp(/[^0-9]/g), '');
|
|
99
|
-
}
|
|
100
|
-
static handleOnlyAlphaNumeric(value) {
|
|
101
|
-
if (!value)
|
|
102
|
-
return '';
|
|
103
|
-
return value.replace(new RegExp(/[^0-9A-Za-z]/, 'g'), '');
|
|
104
|
-
}
|
|
105
|
-
static capitalize(value) {
|
|
106
|
-
return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;
|
|
107
|
-
}
|
|
108
|
-
static formatZipCode(zipCode) {
|
|
109
|
-
if (!zipCode)
|
|
110
|
-
return zipCode;
|
|
111
|
-
const formated = zipCode
|
|
112
|
-
.replace(/^(\d{5})(\d)/, '$1-$2')
|
|
113
|
-
.replace(/\.(\d{3})(\d)/, '.$1-$2');
|
|
114
|
-
return `${formated}`;
|
|
115
|
-
}
|
|
116
|
-
static formatFileSize(size) {
|
|
117
|
-
let units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
|
|
118
|
-
let l = 0;
|
|
119
|
-
while (size >= 1024 && ++l) {
|
|
120
|
-
size = size / 1024;
|
|
121
|
-
}
|
|
122
|
-
return size.toFixed(size < 10 && l > 0 ? 1 : 0) + ' ' + units[l];
|
|
123
|
-
}
|
|
124
|
-
static sufflue(data) {
|
|
125
|
-
for (let i = data.length - 1; i > 0; i--) {
|
|
126
|
-
const j = Math.floor(Math.random() * i);
|
|
127
|
-
const temp = data[i];
|
|
128
|
-
data[i] = data[j];
|
|
129
|
-
data[j] = temp;
|
|
130
|
-
}
|
|
131
|
-
return data;
|
|
132
|
-
}
|
|
133
|
-
static handleBlobFile(theBlob, fileName, fileType) {
|
|
134
|
-
function blobToFile(theBlob, fileName) {
|
|
135
|
-
const b = theBlob;
|
|
136
|
-
b.lastModifiedDate = new Date();
|
|
137
|
-
b.name = fileName;
|
|
138
|
-
return b;
|
|
139
|
-
}
|
|
140
|
-
let file;
|
|
141
|
-
if (!navigator.msSaveBlob) {
|
|
142
|
-
file = new File([theBlob], fileName, { type: fileType });
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
file = new Blob([theBlob], { type: fileType });
|
|
146
|
-
file = blobToFile(file, fileName);
|
|
147
|
-
}
|
|
148
|
-
return file;
|
|
149
|
-
}
|
|
150
|
-
static truncate(text, maxLength = 25) {
|
|
151
|
-
const midChar = '...';
|
|
152
|
-
if (!text)
|
|
153
|
-
return midChar;
|
|
154
|
-
if (text && text.length <= maxLength)
|
|
155
|
-
return text;
|
|
156
|
-
const left = Math.ceil(maxLength / 2);
|
|
157
|
-
const right = text.length - left + 1;
|
|
158
|
-
return `${text.substr(0, left)} ${midChar} ${text.substring(right)}`;
|
|
159
|
-
}
|
|
160
|
-
static isLocalhost() {
|
|
161
|
-
const { href } = window?.location;
|
|
162
|
-
if (!href)
|
|
163
|
-
return false;
|
|
164
|
-
return href?.search('localhost') >= 0;
|
|
165
|
-
}
|
|
166
|
-
static getPhoneRegions() {
|
|
167
|
-
return phoneUtil
|
|
168
|
-
.getSupportedRegions()
|
|
169
|
-
.map((code) => {
|
|
170
|
-
return phoneUtil.getCountryCodeForRegion(code);
|
|
171
|
-
})
|
|
172
|
-
.filter((v, i, a) => a.indexOf(v) === i)
|
|
173
|
-
.sort((a, b) => (a < b ? -1 : 1));
|
|
174
|
-
}
|
|
175
|
-
static getPhoneHandle(internationalNumber = 55) {
|
|
176
|
-
let maxLength = 14;
|
|
177
|
-
let mask = 'XX XXXXX-XXXX';
|
|
178
|
-
try {
|
|
179
|
-
const country = phoneUtil.getRegionCodeForCountryCode(internationalNumber);
|
|
180
|
-
const exampleNumber = phoneUtil.getExampleNumber(country)['values_']['2'];
|
|
181
|
-
const number = phoneUtil.parse(`${exampleNumber}`, country);
|
|
182
|
-
const formated = phoneUtil.format(number, null);
|
|
183
|
-
if (formated) {
|
|
184
|
-
maxLength = `${formated}`.length;
|
|
185
|
-
mask = `${formated}`.replace(new RegExp(/[^0-9]/g), '0');
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
catch (e) {
|
|
189
|
-
//not to do
|
|
190
|
-
}
|
|
191
|
-
return {
|
|
192
|
-
maxLength,
|
|
193
|
-
mask,
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
static getPhoneCountryCode(phone) {
|
|
197
|
-
if (!phone)
|
|
198
|
-
return '';
|
|
199
|
-
let cc = `${this.handleOnlyNumbers(phone)}`?.substring(0, 2);
|
|
200
|
-
let code;
|
|
201
|
-
try {
|
|
202
|
-
const number = phoneUtil.parse(phone);
|
|
203
|
-
code = number.getCountryCodeOrDefault();
|
|
204
|
-
}
|
|
205
|
-
catch (e) {
|
|
206
|
-
//not to do
|
|
207
|
-
}
|
|
208
|
-
return code || cc;
|
|
209
|
-
}
|
|
210
|
-
static getPhoneNumberFormated(phone, internationalNumber = 55) {
|
|
211
|
-
if (!phone)
|
|
212
|
-
return '';
|
|
213
|
-
phone = phone.replace(new RegExp(`\\+${internationalNumber}`, 'g'), '');
|
|
214
|
-
try {
|
|
215
|
-
const country = phoneUtil.getRegionCodeForCountryCode(internationalNumber);
|
|
216
|
-
const number = phoneUtil.parse(phone, country);
|
|
217
|
-
if (phoneUtil.isPossibleNumber(number)) {
|
|
218
|
-
return phoneUtil.format(number, null);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
catch (e) {
|
|
222
|
-
//not to do
|
|
223
|
-
}
|
|
224
|
-
return phone;
|
|
225
|
-
}
|
|
226
|
-
static isPhoneNumberValid(phone, internationalNumber = 55) {
|
|
227
|
-
if (!phone)
|
|
228
|
-
return false;
|
|
229
|
-
try {
|
|
230
|
-
const country = phoneUtil.getRegionCodeForCountryCode(internationalNumber);
|
|
231
|
-
const number = phoneUtil.parse(phone, country);
|
|
232
|
-
return phoneUtil.isValidNumberForRegion(number, country);
|
|
233
|
-
}
|
|
234
|
-
catch (e) {
|
|
235
|
-
//not to do
|
|
236
|
-
}
|
|
237
|
-
return false;
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktc3R5bGUtZ3VpZGUvc3JjL2xpYi9jb3JlL3V0aWxzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFaEQsTUFBTSxPQUFPLFdBQVc7SUFDZixNQUFNLENBQUMseUJBQXlCLENBQUMsRUFBTztRQUM3QyxPQUFPLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxLQUFLLFNBQVMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFTSxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQVc7UUFDdkMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNwQixPQUFPLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMzQyxDQUFDO0lBRU0sTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFZO1FBQ3hDLElBQUksSUFBSSxLQUFLLEtBQUs7WUFBRSxPQUFPLGdCQUFnQixDQUFDO1FBQzVDLE9BQU8sb0JBQW9CLENBQUM7SUFDOUIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxHQUFXLEVBQUUsUUFBa0I7UUFDbEUsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUNyQixJQUFJLFFBQVEsR0FBVyxFQUFFLENBQUM7UUFDMUIsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUU7WUFDbkIsUUFBUSxHQUFHLEdBQUc7aUJBQ1gsT0FBTyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUM7aUJBQ2hDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxVQUFVLENB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QUUsT0FBTyxLQUFLLENBQUM7UUFDekIsSUFBSTtZQUNGLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQzNFLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQy9DLE9BQU8sU0FBUyxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztTQUMxRDtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsV0FBVztTQUNaO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaG9uZU51bWJlclV0aWwgfSBmcm9tICdnb29nbGUtbGlicGhvbmVudW1iZXInO1xuXG5jb25zdCBwaG9uZVV0aWwgPSBQaG9uZU51bWJlclV0aWwuZ2V0SW5zdGFuY2UoKTtcblxuZXhwb3J0IGNsYXNzIE1vbmtleVV0aWxzIHtcbiAgcHVibGljIHN0YXRpYyBwZXJzaXN0TnVsbEVtcHR5VW5kZWZpbmVkKHRwOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHAgIT09IG51bGwgJiYgdHAgIT09IHVuZGVmaW5lZCAmJiB0cCAhPT0gJyc7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldERvY3VtZW50VHlwZShkb2M6IHN0cmluZykge1xuICAgIGlmICghZG9jKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIGRvYy5sZW5ndGggPD0gMTEgPyAnQ1BGJyA6ICdDTlBKJztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RG9jdW1lbnRNYXNrKHR5cGU6IHN0cmluZykge1xuICAgIGlmICh0eXBlID09PSAnQ1BGJykgcmV0dXJuICcwMDAuMDAwLjAwMC0wMCc7XG4gICAgcmV0dXJuICcwMC4wMDAuMDAwLzAwMDAtMDAnO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBmb3JtYXREb2N1bWVudFdpdGhNYXNrKGRvYzogc3RyaW5nLCB3aXRoVHlwZT86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIGlmICghZG9jKSByZXR1cm4gZG9jO1xuICAgIGxldCBmb3JtYXRlZDogc3RyaW5nID0gJyc7XG4gICAgaWYgKGRvYy5sZW5ndGggPT09IDE0KVxuICAgICAgZm9ybWF0ZWQgPSBkb2NcbiAgICAgICAgLnJlcGxhY2UoL14oXFxkezJ9KShcXGQpLywgJyQxLiQyJylcbiAgICAgICAgLnJlcGxhY2UoL14oXFxkezJ9KVxcLihcXGR7M30pKFxcZCkvLCAnJDEuJDIuJDMnKVxuICAgICAgICAucmVwbGFjZSgvXFwuKFxcZHszfSkoXFxkKS8sICcuJDEvJDInKVxuICAgICAgICAucmVwbGFjZSgvKFxcZHs0fSkoXFxkKS8sICckMS0kMicpO1xuICAgIGVsc2VcbiAgICAgIGZvcm1hdGVkID0gZG9jXG4gICAgICAgIC5yZXBsYWNlKC9eKFxcZHszfSkoXFxkKS8sICckMS4kMicpXG4gICAgICAgIC5yZXBsYWNlKC9eKFxcZHszfSlcXC4oXFxkezN9KShcXGQpLywgJyQxLiQyLiQzJylcbiAgICAgICAgLnJlcGxhY2UoL1xcLihcXGR7M30pKFxcZCkvLCAnLiQxLSQyJyk7XG5cbiAgICByZXR1cm4gYCR7d2l0aFR5cGUgPyBgJHt0aGlzLmdldERvY3VtZW50VHlwZShkb2MpfTpgIDogJyd9ICR7Zm9ybWF0ZWR9YDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY3V0Rmlyc3RMYXN0TmFtZSh2YWx1ZTogc3RyaW5nLCB0cDogc3RyaW5nID0gJ2ZpcnN0Jykge1xuICAgIGNvbnN0IHNwbGl0ID0gdmFsdWU/LnRyaW0oKT8uc3BsaXQoJyAnKTtcblxuICAgIGlmICh0cCA9PT0gJ2ZpcnN0JykgcmV0dXJuIHNwbGl0WzBdO1xuICAgIHJldHVybiBzcGxpdD8uc3BsaWNlKDEsIHNwbGl0Lmxlbmd0aCk/LmpvaW4oJyAnKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNDUEZDTlBKVmFsaWQoZG9jdW1lbnQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIGRvY3VtZW50ID0gZG9jdW1lbnQucmVwbGFjZSgvW15cXGRdL2csICcnKTtcbiAgICBpZiAoZG9jdW1lbnQubGVuZ3RoID09PSAxMSkge1xuICAgICAgbGV0IGJhc2UgPSBbMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDBdO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSAwOyBpIDwgOTsgbiArPSBkb2N1bWVudFtpXSAqIGJhc2VbaSsrXSk7XG4gICAgICBpZiAoZG9jdW1lbnRbOV0gIT0gKChuICU9IDExKSA8PSAxID8gMCA6IDExIC0gbikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgYmFzZSA9IFsxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDBdO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSAwOyBpIDw9IDk7IG4gKz0gZG9jdW1lbnRbaV0gKiBiYXNlW2krK10pO1xuICAgICAgaWYgKGRvY3VtZW50WzEwXSAhPSAoKG4gJT0gMTEpIDw9IDEgPyAwIDogMTEgLSBuKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50Lmxlbmd0aCA9PT0gMTQgfHwgLzB7MTR9Ly50ZXN0KGRvY3VtZW50KSkge1xuICAgICAgbGV0IGJhc2UgPSBbNiwgNSwgNCwgMywgMiwgOSwgOCwgNywgNiwgNSwgNCwgMywgMl07XG4gICAgICBmb3IgKHZhciBpID0gMCwgbiA9IDA7IGkgPCAxMjsgbiArPSBkb2N1bWVudFtpXSAqIGJhc2VbKytpXSk7XG4gICAgICBpZiAoZG9jdW1lbnRbMTJdICE9ICgobiAlPSAxMSkgPCAyID8gMCA6IDExIC0gbikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMCwgbiA9IDA7IGkgPD0gMTI7IG4gKz0gZG9jdW1lbnRbaV0gKiBiYXNlW2krK10pO1xuICAgICAgaWYgKGRvY3VtZW50WzEzXSAhPSAoKG4gJT0gMTEpIDwgMiA/IDAgOiAxMSAtIG4pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNWYWxpZFVybCh0eHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgICAgIC9eKGh0dHA6XFwvXFwvd3d3XFwufGh0dHBzOlxcL1xcL3d3d1xcLnxodHRwOlxcL1xcL3xodHRwczpcXC9cXC8pK1thLXowLTldKyhbXFwtXFwuXXsxfVthLXowLTldKykqXFwuW2Etel17MiwxMH0oOlswLTldezEsNX0pPyhcXC8uKik/JC9nbVxuICAgICk7XG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QodHh0KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNWYWxpZFppcENvZGUoemlwQ29kZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGAke3RoaXMuaGFuZGxlT25seU51bWJlcnMoemlwQ29kZSl9YC5sZW5ndGggPT09IDg7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldFJhbmRvbVN0cmluZyhsZW46IG51bWJlciwgY2hhclNldD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY2hhclNldCA9IGNoYXJTZXQgfHwgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5JztcbiAgICBsZXQgcmFuZG9tU3RyaW5nOiBzdHJpbmcgPSBBcnJheS5hcHBseShudWxsLCBBcnJheShsZW4pKVxuICAgICAgLm1hcChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjaGFyU2V0LmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyU2V0Lmxlbmd0aCkpO1xuICAgICAgfSlcbiAgICAgIC5qb2luKCcnKTtcbiAgICByZXR1cm4gcmFuZG9tU3RyaW5nO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBoYW5kbGVPbmx5TnVtYmVyc0N1cnJlbmN5KHZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKC9bXjAtOS5dL2cpLCAnJyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGhhbmRsZU9ubHlOdW1iZXJzKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKC9bXjAtOV0vZyksICcnKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaGFuZGxlT25seUFscGhhTnVtZXJpYyh2YWx1ZTogYW55KSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAoL1teMC05QS1aYS16XS8sICdnJyksICcnKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY2FwaXRhbGl6ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGAke3ZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7dmFsdWUuc2xpY2UoMSl9YDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZm9ybWF0WmlwQ29kZSh6aXBDb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghemlwQ29kZSkgcmV0dXJuIHppcENvZGU7XG4gICAgY29uc3QgZm9ybWF0ZWQ6IHN0cmluZyA9IHppcENvZGVcbiAgICAgIC5yZXBsYWNlKC9eKFxcZHs1fSkoXFxkKS8sICckMS0kMicpXG4gICAgICAucmVwbGFjZSgvXFwuKFxcZHszfSkoXFxkKS8sICcuJDEtJDInKTtcblxuICAgIHJldHVybiBgJHtmb3JtYXRlZH1gO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBmb3JtYXRGaWxlU2l6ZShzaXplOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGxldCB1bml0cyA9IFsnQicsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xuICAgIGxldCBsID0gMDtcbiAgICB3aGlsZSAoc2l6ZSA+PSAxMDI0ICYmICsrbCkge1xuICAgICAgc2l6ZSA9IHNpemUgLyAxMDI0O1xuICAgIH1cbiAgICByZXR1cm4gc2l6ZS50b0ZpeGVkKHNpemUgPCAxMCAmJiBsID4gMCA/IDEgOiAwKSArICcgJyArIHVuaXRzW2xdO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzdWZmbHVlKGRhdGE6IGFueVtdKTogYW55W10ge1xuICAgIGZvciAobGV0IGkgPSBkYXRhLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IGogPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBpKTtcbiAgICAgIGNvbnN0IHRlbXAgPSBkYXRhW2ldO1xuICAgICAgZGF0YVtpXSA9IGRhdGFbal07XG4gICAgICBkYXRhW2pdID0gdGVtcDtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGhhbmRsZUJsb2JGaWxlKHRoZUJsb2I6IGFueSwgZmlsZU5hbWU6IHN0cmluZywgZmlsZVR5cGU6IHN0cmluZykge1xuICAgIGZ1bmN0aW9uIGJsb2JUb0ZpbGUodGhlQmxvYiwgZmlsZU5hbWUpIHtcbiAgICAgIGNvbnN0IGIgPSB0aGVCbG9iO1xuICAgICAgYi5sYXN0TW9kaWZpZWREYXRlID0gbmV3IERhdGUoKTtcbiAgICAgIGIubmFtZSA9IGZpbGVOYW1lO1xuICAgICAgcmV0dXJuIGI7XG4gICAgfVxuXG4gICAgbGV0IGZpbGU6IGFueTtcbiAgICBpZiAoIShuYXZpZ2F0b3IgYXMgYW55KS5tc1NhdmVCbG9iKSB7XG4gICAgICBmaWxlID0gbmV3IEZpbGUoW3RoZUJsb2JdLCBmaWxlTmFtZSwgeyB0eXBlOiBmaWxlVHlwZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmlsZSA9IG5ldyBCbG9iKFt0aGVCbG9iXSwgeyB0eXBlOiBmaWxlVHlwZSB9KTtcbiAgICAgIGZpbGUgPSBibG9iVG9GaWxlKGZpbGUsIGZpbGVOYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbGU7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHRydW5jYXRlKHRleHQ6IHN0cmluZywgbWF4TGVuZ3RoOiBudW1iZXIgPSAyNSk6IHN0cmluZyB7XG4gICAgY29uc3QgbWlkQ2hhciA9ICcuLi4nO1xuICAgIGlmICghdGV4dCkgcmV0dXJuIG1pZENoYXI7XG4gICAgaWYgKHRleHQgJiYgdGV4dC5sZW5ndGggPD0gbWF4TGVuZ3RoKSByZXR1cm4gdGV4dDtcblxuICAgIGNvbnN0IGxlZnQgPSBNYXRoLmNlaWwobWF4TGVuZ3RoIC8gMik7XG4gICAgY29uc3QgcmlnaHQgPSB0ZXh0Lmxlbmd0aCAtIGxlZnQgKyAxO1xuXG4gICAgcmV0dXJuIGAke3RleHQuc3Vic3RyKDAsIGxlZnQpfSAke21pZENoYXJ9ICR7dGV4dC5zdWJzdHJpbmcocmlnaHQpfWA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzTG9jYWxob3N0KCkge1xuICAgIGNvbnN0IHsgaHJlZiB9ID0gd2luZG93Py5sb2NhdGlvbjtcbiAgICBpZiAoIWhyZWYpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gaHJlZj8uc2VhcmNoKCdsb2NhbGhvc3QnKSA+PSAwO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRQaG9uZVJlZ2lvbnMoKSB7XG4gICAgcmV0dXJuIHBob25lVXRpbFxuICAgICAgLmdldFN1cHBvcnRlZFJlZ2lvbnMoKVxuICAgICAgLm1hcCgoY29kZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiBwaG9uZVV0aWwuZ2V0Q291bnRyeUNvZGVGb3JSZWdpb24oY29kZSk7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigodiwgaSwgYSkgPT4gYS5pbmRleE9mKHYpID09PSBpKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IChhIDwgYiA/IC0xIDogMSkpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRQaG9uZUhhbmRsZShpbnRlcm5hdGlvbmFsTnVtYmVyID0gNTUpIHtcbiAgICBsZXQgbWF4TGVuZ3RoID0gMTQ7XG4gICAgbGV0IG1hc2sgPSAnWFggWFhYWFgtWFhYWCc7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvdW50cnkgPSBwaG9uZVV0aWwuZ2V0UmVnaW9uQ29kZUZvckNvdW50cnlDb2RlKGludGVybmF0aW9uYWxOdW1iZXIpO1xuICAgICAgY29uc3QgZXhhbXBsZU51bWJlciA9IHBob25lVXRpbC5nZXRFeGFtcGxlTnVtYmVyKGNvdW50cnkpWyd2YWx1ZXNfJ11bJzInXTtcblxuICAgICAgY29uc3QgbnVtYmVyID0gcGhvbmVVdGlsLnBhcnNlKGAke2V4YW1wbGVOdW1iZXJ9YCwgY291bnRyeSk7XG4gICAgICBjb25zdCBmb3JtYXRlZCA9IHBob25lVXRpbC5mb3JtYXQobnVtYmVyLCBudWxsKTtcbiAgICAgIGlmIChmb3JtYXRlZCkge1xuICAgICAgICBtYXhMZW5ndGggPSBgJHtmb3JtYXRlZH1gLmxlbmd0aDtcbiAgICAgICAgbWFzayA9IGAke2Zvcm1hdGVkfWAucmVwbGFjZShuZXcgUmVnRXhwKC9bXjAtOV0vZyksICcwJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy9ub3QgdG8gZG9cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIG1heExlbmd0aCxcbiAgICAgIG1hc2ssXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0UGhvbmVDb3VudHJ5Q29kZShwaG9uZTogc3RyaW5nKSB7XG4gICAgaWYgKCFwaG9uZSkgcmV0dXJuICcnO1xuICAgIGxldCBjYyA9IGAke3RoaXMuaGFuZGxlT25seU51bWJlcnMocGhvbmUpfWA/LnN1YnN0cmluZygwLCAyKTtcbiAgICBsZXQgY29kZTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbnVtYmVyID0gcGhvbmVVdGlsLnBhcnNlKHBob25lKTtcbiAgICAgIGNvZGUgPSBudW1iZXIuZ2V0Q291bnRyeUNvZGVPckRlZmF1bHQoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvL25vdCB0byBkb1xuICAgIH1cbiAgICByZXR1cm4gY29kZSB8fCBjYztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0UGhvbmVOdW1iZXJGb3JtYXRlZChwaG9uZTogc3RyaW5nLCBpbnRlcm5hdGlvbmFsTnVtYmVyID0gNTUpIHtcbiAgICBpZiAoIXBob25lKSByZXR1cm4gJyc7XG4gICAgcGhvbmUgPSBwaG9uZS5yZXBsYWNlKG5ldyBSZWdFeHAoYFxcXFwrJHtpbnRlcm5hdGlvbmFsTnVtYmVyfWAsJ2cnKSwnJyk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvdW50cnkgPSBwaG9uZVV0aWwuZ2V0UmVnaW9uQ29kZUZvckNvdW50cnlDb2RlKGludGVybmF0aW9uYWxOdW1iZXIpO1xuICAgICAgY29uc3QgbnVtYmVyID0gcGhvbmVVdGlsLnBhcnNlKHBob25lLCBjb3VudHJ5KTtcbiAgICAgIGlmIChwaG9uZVV0aWwuaXNQb3NzaWJsZU51bWJlcihudW1iZXIpKSB7XG4gICAgICAgIHJldHVybiBwaG9uZVV0aWwuZm9ybWF0KG51bWJlciwgbnVsbCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy9ub3QgdG8gZG9cbiAgICB9XG4gICAgcmV0dXJuIHBob25lO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc1Bob25lTnVtYmVyVmFsaWQocGhvbmU6IHN0cmluZywgaW50ZXJuYXRpb25hbE51bWJlciA9IDU1KSB7XG4gICAgaWYgKCFwaG9uZSkgcmV0dXJuIGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb3VudHJ5ID0gcGhvbmVVdGlsLmdldFJlZ2lvbkNvZGVGb3JDb3VudHJ5Q29kZShpbnRlcm5hdGlvbmFsTnVtYmVyKTtcbiAgICAgIGNvbnN0IG51bWJlciA9IHBob25lVXRpbC5wYXJzZShwaG9uZSwgY291bnRyeSk7XG4gICAgICByZXR1cm4gcGhvbmVVdGlsLmlzVmFsaWROdW1iZXJGb3JSZWdpb24obnVtYmVyLCBjb3VudHJ5KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvL25vdCB0byBkb1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
|
|
1
|
+
import { PhoneNumberUtil } from 'google-libphonenumber';
|
|
2
|
+
const phoneUtil = PhoneNumberUtil.getInstance();
|
|
3
|
+
export class MonkeyUtils {
|
|
4
|
+
static persistNullEmptyUndefined(tp) {
|
|
5
|
+
return tp !== null && tp !== undefined && tp !== '';
|
|
6
|
+
}
|
|
7
|
+
static getDocumentType(doc) {
|
|
8
|
+
if (!doc)
|
|
9
|
+
return '';
|
|
10
|
+
return doc.length <= 11 ? 'CPF' : 'CNPJ';
|
|
11
|
+
}
|
|
12
|
+
static getDocumentMask(type) {
|
|
13
|
+
if (type === 'CPF')
|
|
14
|
+
return '000.000.000-00';
|
|
15
|
+
return '00.000.000/0000-00';
|
|
16
|
+
}
|
|
17
|
+
static formatDocumentWithMask(doc, withType) {
|
|
18
|
+
if (!doc)
|
|
19
|
+
return doc;
|
|
20
|
+
let formated = '';
|
|
21
|
+
if (doc.length === 14)
|
|
22
|
+
formated = doc
|
|
23
|
+
.replace(/^(\d{2})(\d)/, '$1.$2')
|
|
24
|
+
.replace(/^(\d{2})\.(\d{3})(\d)/, '$1.$2.$3')
|
|
25
|
+
.replace(/\.(\d{3})(\d)/, '.$1/$2')
|
|
26
|
+
.replace(/(\d{4})(\d)/, '$1-$2');
|
|
27
|
+
else
|
|
28
|
+
formated = doc
|
|
29
|
+
.replace(/^(\d{3})(\d)/, '$1.$2')
|
|
30
|
+
.replace(/^(\d{3})\.(\d{3})(\d)/, '$1.$2.$3')
|
|
31
|
+
.replace(/\.(\d{3})(\d)/, '.$1-$2');
|
|
32
|
+
return `${withType ? `${this.getDocumentType(doc)}:` : ''} ${formated}`;
|
|
33
|
+
}
|
|
34
|
+
static cutFirstLastName(value, tp = 'first') {
|
|
35
|
+
const split = value?.trim()?.split(' ');
|
|
36
|
+
if (tp === 'first')
|
|
37
|
+
return split[0];
|
|
38
|
+
return split?.splice(1, split.length)?.join(' ');
|
|
39
|
+
}
|
|
40
|
+
static isCPFCNPJValid(document) {
|
|
41
|
+
document = document.replace(/[^\d]/g, '');
|
|
42
|
+
if (document.length === 11) {
|
|
43
|
+
let base = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0];
|
|
44
|
+
for (var i = 0, n = 0; i < 9; n += document[i] * base[i++])
|
|
45
|
+
;
|
|
46
|
+
if (document[9] != ((n %= 11) <= 1 ? 0 : 11 - n)) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
base = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0];
|
|
50
|
+
for (var i = 0, n = 0; i <= 9; n += document[i] * base[i++])
|
|
51
|
+
;
|
|
52
|
+
if (document[10] != ((n %= 11) <= 1 ? 0 : 11 - n)) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
else if (document.length === 14 || /0{14}/.test(document)) {
|
|
58
|
+
let base = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
|
|
59
|
+
for (var i = 0, n = 0; i < 12; n += document[i] * base[++i])
|
|
60
|
+
;
|
|
61
|
+
if (document[12] != ((n %= 11) < 2 ? 0 : 11 - n)) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
for (var i = 0, n = 0; i <= 12; n += document[i] * base[i++])
|
|
65
|
+
;
|
|
66
|
+
if (document[13] != ((n %= 11) < 2 ? 0 : 11 - n)) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
else
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
static isValidUrl(txt) {
|
|
75
|
+
const regex = new RegExp(/^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)+[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,10}(:[0-9]{1,5})?(\/.*)?$/gm);
|
|
76
|
+
return regex.test(txt);
|
|
77
|
+
}
|
|
78
|
+
static isValidZipCode(zipCode) {
|
|
79
|
+
return `${this.handleOnlyNumbers(zipCode)}`.length === 8;
|
|
80
|
+
}
|
|
81
|
+
static getRandomString(len, charSet) {
|
|
82
|
+
charSet = charSet || 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
83
|
+
let randomString = Array.apply(null, Array(len))
|
|
84
|
+
.map(function () {
|
|
85
|
+
return charSet.charAt(Math.floor(Math.random() * charSet.length));
|
|
86
|
+
})
|
|
87
|
+
.join('');
|
|
88
|
+
return randomString;
|
|
89
|
+
}
|
|
90
|
+
static handleOnlyNumbersCurrency(value) {
|
|
91
|
+
if (!value)
|
|
92
|
+
return null;
|
|
93
|
+
return value.replace(new RegExp(/[^0-9.]/g), '');
|
|
94
|
+
}
|
|
95
|
+
static handleOnlyNumbers(value) {
|
|
96
|
+
if (!value)
|
|
97
|
+
return null;
|
|
98
|
+
return value.replace(new RegExp(/[^0-9]/g), '');
|
|
99
|
+
}
|
|
100
|
+
static handleOnlyAlphaNumeric(value) {
|
|
101
|
+
if (!value)
|
|
102
|
+
return '';
|
|
103
|
+
return value.replace(new RegExp(/[^0-9A-Za-z]/, 'g'), '');
|
|
104
|
+
}
|
|
105
|
+
static capitalize(value) {
|
|
106
|
+
return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;
|
|
107
|
+
}
|
|
108
|
+
static formatZipCode(zipCode) {
|
|
109
|
+
if (!zipCode)
|
|
110
|
+
return zipCode;
|
|
111
|
+
const formated = zipCode
|
|
112
|
+
.replace(/^(\d{5})(\d)/, '$1-$2')
|
|
113
|
+
.replace(/\.(\d{3})(\d)/, '.$1-$2');
|
|
114
|
+
return `${formated}`;
|
|
115
|
+
}
|
|
116
|
+
static formatFileSize(size) {
|
|
117
|
+
let units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
|
|
118
|
+
let l = 0;
|
|
119
|
+
while (size >= 1024 && ++l) {
|
|
120
|
+
size = size / 1024;
|
|
121
|
+
}
|
|
122
|
+
return size.toFixed(size < 10 && l > 0 ? 1 : 0) + ' ' + units[l];
|
|
123
|
+
}
|
|
124
|
+
static sufflue(data) {
|
|
125
|
+
for (let i = data.length - 1; i > 0; i--) {
|
|
126
|
+
const j = Math.floor(Math.random() * i);
|
|
127
|
+
const temp = data[i];
|
|
128
|
+
data[i] = data[j];
|
|
129
|
+
data[j] = temp;
|
|
130
|
+
}
|
|
131
|
+
return data;
|
|
132
|
+
}
|
|
133
|
+
static handleBlobFile(theBlob, fileName, fileType) {
|
|
134
|
+
function blobToFile(theBlob, fileName) {
|
|
135
|
+
const b = theBlob;
|
|
136
|
+
b.lastModifiedDate = new Date();
|
|
137
|
+
b.name = fileName;
|
|
138
|
+
return b;
|
|
139
|
+
}
|
|
140
|
+
let file;
|
|
141
|
+
if (!navigator.msSaveBlob) {
|
|
142
|
+
file = new File([theBlob], fileName, { type: fileType });
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
file = new Blob([theBlob], { type: fileType });
|
|
146
|
+
file = blobToFile(file, fileName);
|
|
147
|
+
}
|
|
148
|
+
return file;
|
|
149
|
+
}
|
|
150
|
+
static truncate(text, maxLength = 25) {
|
|
151
|
+
const midChar = '...';
|
|
152
|
+
if (!text)
|
|
153
|
+
return midChar;
|
|
154
|
+
if (text && text.length <= maxLength)
|
|
155
|
+
return text;
|
|
156
|
+
const left = Math.ceil(maxLength / 2);
|
|
157
|
+
const right = text.length - left + 1;
|
|
158
|
+
return `${text.substr(0, left)} ${midChar} ${text.substring(right)}`;
|
|
159
|
+
}
|
|
160
|
+
static isLocalhost() {
|
|
161
|
+
const { href } = window?.location;
|
|
162
|
+
if (!href)
|
|
163
|
+
return false;
|
|
164
|
+
return href?.search('localhost') >= 0;
|
|
165
|
+
}
|
|
166
|
+
static getPhoneRegions() {
|
|
167
|
+
return phoneUtil
|
|
168
|
+
.getSupportedRegions()
|
|
169
|
+
.map((code) => {
|
|
170
|
+
return phoneUtil.getCountryCodeForRegion(code);
|
|
171
|
+
})
|
|
172
|
+
.filter((v, i, a) => a.indexOf(v) === i)
|
|
173
|
+
.sort((a, b) => (a < b ? -1 : 1));
|
|
174
|
+
}
|
|
175
|
+
static getPhoneHandle(internationalNumber = 55) {
|
|
176
|
+
let maxLength = 14;
|
|
177
|
+
let mask = 'XX XXXXX-XXXX';
|
|
178
|
+
try {
|
|
179
|
+
const country = phoneUtil.getRegionCodeForCountryCode(internationalNumber);
|
|
180
|
+
const exampleNumber = phoneUtil.getExampleNumber(country)['values_']['2'];
|
|
181
|
+
const number = phoneUtil.parse(`${exampleNumber}`, country);
|
|
182
|
+
const formated = phoneUtil.format(number, null);
|
|
183
|
+
if (formated) {
|
|
184
|
+
maxLength = `${formated}`.length;
|
|
185
|
+
mask = `${formated}`.replace(new RegExp(/[^0-9]/g), '0');
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
catch (e) {
|
|
189
|
+
//not to do
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
maxLength,
|
|
193
|
+
mask,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
static getPhoneCountryCode(phone) {
|
|
197
|
+
if (!phone)
|
|
198
|
+
return '';
|
|
199
|
+
let cc = `${this.handleOnlyNumbers(phone)}`?.substring(0, 2);
|
|
200
|
+
let code;
|
|
201
|
+
try {
|
|
202
|
+
const number = phoneUtil.parse(phone);
|
|
203
|
+
code = number.getCountryCodeOrDefault();
|
|
204
|
+
}
|
|
205
|
+
catch (e) {
|
|
206
|
+
//not to do
|
|
207
|
+
}
|
|
208
|
+
return code || cc;
|
|
209
|
+
}
|
|
210
|
+
static getPhoneNumberFormated(phone, internationalNumber = 55) {
|
|
211
|
+
if (!phone)
|
|
212
|
+
return '';
|
|
213
|
+
phone = phone.replace(new RegExp(`\\+${internationalNumber}`, 'g'), '');
|
|
214
|
+
try {
|
|
215
|
+
const country = phoneUtil.getRegionCodeForCountryCode(internationalNumber);
|
|
216
|
+
const number = phoneUtil.parse(phone, country);
|
|
217
|
+
if (phoneUtil.isPossibleNumber(number)) {
|
|
218
|
+
return phoneUtil.format(number, null);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
catch (e) {
|
|
222
|
+
//not to do
|
|
223
|
+
}
|
|
224
|
+
return phone;
|
|
225
|
+
}
|
|
226
|
+
static isPhoneNumberValid(phone, internationalNumber = 55) {
|
|
227
|
+
if (!phone)
|
|
228
|
+
return false;
|
|
229
|
+
try {
|
|
230
|
+
const country = phoneUtil.getRegionCodeForCountryCode(internationalNumber);
|
|
231
|
+
const number = phoneUtil.parse(phone, country);
|
|
232
|
+
return phoneUtil.isValidNumberForRegion(number, country);
|
|
233
|
+
}
|
|
234
|
+
catch (e) {
|
|
235
|
+
//not to do
|
|
236
|
+
}
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktc3R5bGUtZ3VpZGUvc3JjL2xpYi9jb3JlL3V0aWxzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFaEQsTUFBTSxPQUFPLFdBQVc7SUFDZixNQUFNLENBQUMseUJBQXlCLENBQUMsRUFBTztRQUM3QyxPQUFPLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxLQUFLLFNBQVMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFTSxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQVc7UUFDdkMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNwQixPQUFPLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMzQyxDQUFDO0lBRU0sTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFZO1FBQ3hDLElBQUksSUFBSSxLQUFLLEtBQUs7WUFBRSxPQUFPLGdCQUFnQixDQUFDO1FBQzVDLE9BQU8sb0JBQW9CLENBQUM7SUFDOUIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxHQUFXLEVBQUUsUUFBa0I7UUFDbEUsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUNyQixJQUFJLFFBQVEsR0FBVyxFQUFFLENBQUM7UUFDMUIsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUU7WUFDbkIsUUFBUSxHQUFHLEdBQUc7aUJBQ1gsT0FBTyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUM7aUJBQ2hDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxVQUFVLENB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QUUsT0FBTyxLQUFLLENBQUM7UUFDekIsSUFBSTtZQUNGLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQzNFLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQy9DLE9BQU8sU0FBUyxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztTQUMxRDtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsV0FBVztTQUNaO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaG9uZU51bWJlclV0aWwgfSBmcm9tICdnb29nbGUtbGlicGhvbmVudW1iZXInO1xyXG5cclxuY29uc3QgcGhvbmVVdGlsID0gUGhvbmVOdW1iZXJVdGlsLmdldEluc3RhbmNlKCk7XHJcblxyXG5leHBvcnQgY2xhc3MgTW9ua2V5VXRpbHMge1xyXG4gIHB1YmxpYyBzdGF0aWMgcGVyc2lzdE51bGxFbXB0eVVuZGVmaW5lZCh0cDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHAgIT09IG51bGwgJiYgdHAgIT09IHVuZGVmaW5lZCAmJiB0cCAhPT0gJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldERvY3VtZW50VHlwZShkb2M6IHN0cmluZykge1xyXG4gICAgaWYgKCFkb2MpIHJldHVybiAnJztcclxuICAgIHJldHVybiBkb2MubGVuZ3RoIDw9IDExID8gJ0NQRicgOiAnQ05QSic7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldERvY3VtZW50TWFzayh0eXBlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0eXBlID09PSAnQ1BGJykgcmV0dXJuICcwMDAuMDAwLjAwMC0wMCc7XHJcbiAgICByZXR1cm4gJzAwLjAwMC4wMDAvMDAwMC0wMCc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGZvcm1hdERvY3VtZW50V2l0aE1hc2soZG9jOiBzdHJpbmcsIHdpdGhUeXBlPzogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICBpZiAoIWRvYykgcmV0dXJuIGRvYztcclxuICAgIGxldCBmb3JtYXRlZDogc3RyaW5nID0gJyc7XHJcbiAgICBpZiAoZG9jLmxlbmd0aCA9PT0gMTQpXHJcbiAgICAgIGZvcm1hdGVkID0gZG9jXHJcbiAgICAgICAgLnJlcGxhY2UoL14oXFxkezJ9KShcXGQpLywgJyQxLiQyJylcclxuICAgICAgICAucmVwbGFjZSgvXihcXGR7Mn0pXFwuKFxcZHszfSkoXFxkKS8sICckMS4kMi4kMycpXHJcbiAgICAgICAgLnJlcGxhY2UoL1xcLihcXGR7M30pKFxcZCkvLCAnLiQxLyQyJylcclxuICAgICAgICAucmVwbGFjZSgvKFxcZHs0fSkoXFxkKS8sICckMS0kMicpO1xyXG4gICAgZWxzZVxyXG4gICAgICBmb3JtYXRlZCA9IGRvY1xyXG4gICAgICAgIC5yZXBsYWNlKC9eKFxcZHszfSkoXFxkKS8sICckMS4kMicpXHJcbiAgICAgICAgLnJlcGxhY2UoL14oXFxkezN9KVxcLihcXGR7M30pKFxcZCkvLCAnJDEuJDIuJDMnKVxyXG4gICAgICAgIC5yZXBsYWNlKC9cXC4oXFxkezN9KShcXGQpLywgJy4kMS0kMicpO1xyXG5cclxuICAgIHJldHVybiBgJHt3aXRoVHlwZSA/IGAke3RoaXMuZ2V0RG9jdW1lbnRUeXBlKGRvYyl9OmAgOiAnJ30gJHtmb3JtYXRlZH1gO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBjdXRGaXJzdExhc3ROYW1lKHZhbHVlOiBzdHJpbmcsIHRwOiBzdHJpbmcgPSAnZmlyc3QnKSB7XHJcbiAgICBjb25zdCBzcGxpdCA9IHZhbHVlPy50cmltKCk/LnNwbGl0KCcgJyk7XHJcblxyXG4gICAgaWYgKHRwID09PSAnZmlyc3QnKSByZXR1cm4gc3BsaXRbMF07XHJcbiAgICByZXR1cm4gc3BsaXQ/LnNwbGljZSgxLCBzcGxpdC5sZW5ndGgpPy5qb2luKCcgJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGlzQ1BGQ05QSlZhbGlkKGRvY3VtZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGRvY3VtZW50ID0gZG9jdW1lbnQucmVwbGFjZSgvW15cXGRdL2csICcnKTtcclxuICAgIGlmIChkb2N1bWVudC5sZW5ndGggPT09IDExKSB7XHJcbiAgICAgIGxldCBiYXNlID0gWzEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwXTtcclxuICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSAwOyBpIDwgOTsgbiArPSBkb2N1bWVudFtpXSAqIGJhc2VbaSsrXSk7XHJcbiAgICAgIGlmIChkb2N1bWVudFs5XSAhPSAoKG4gJT0gMTEpIDw9IDEgPyAwIDogMTEgLSBuKSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBiYXNlID0gWzExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMF07XHJcbiAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gMDsgaSA8PSA5OyBuICs9IGRvY3VtZW50W2ldICogYmFzZVtpKytdKTtcclxuICAgICAgaWYgKGRvY3VtZW50WzEwXSAhPSAoKG4gJT0gMTEpIDw9IDEgPyAwIDogMTEgLSBuKSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQubGVuZ3RoID09PSAxNCB8fCAvMHsxNH0vLnRlc3QoZG9jdW1lbnQpKSB7XHJcbiAgICAgIGxldCBiYXNlID0gWzYsIDUsIDQsIDMsIDIsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDJdO1xyXG4gICAgICBmb3IgKHZhciBpID0gMCwgbiA9IDA7IGkgPCAxMjsgbiArPSBkb2N1bWVudFtpXSAqIGJhc2VbKytpXSk7XHJcbiAgICAgIGlmIChkb2N1bWVudFsxMl0gIT0gKChuICU9IDExKSA8IDIgPyAwIDogMTEgLSBuKSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSAwOyBpIDw9IDEyOyBuICs9IGRvY3VtZW50W2ldICogYmFzZVtpKytdKTtcclxuICAgICAgaWYgKGRvY3VtZW50WzEzXSAhPSAoKG4gJT0gMTEpIDwgMiA/IDAgOiAxMSAtIG4pKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGlzVmFsaWRVcmwodHh0OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChcclxuICAgICAgL14oaHR0cDpcXC9cXC93d3dcXC58aHR0cHM6XFwvXFwvd3d3XFwufGh0dHA6XFwvXFwvfGh0dHBzOlxcL1xcLykrW2EtejAtOV0rKFtcXC1cXC5dezF9W2EtejAtOV0rKSpcXC5bYS16XXsyLDEwfSg6WzAtOV17MSw1fSk/KFxcLy4qKT8kL2dtXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QodHh0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgaXNWYWxpZFppcENvZGUoemlwQ29kZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gYCR7dGhpcy5oYW5kbGVPbmx5TnVtYmVycyh6aXBDb2RlKX1gLmxlbmd0aCA9PT0gODtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0UmFuZG9tU3RyaW5nKGxlbjogbnVtYmVyLCBjaGFyU2V0Pzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNoYXJTZXQgPSBjaGFyU2V0IHx8ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XHJcbiAgICBsZXQgcmFuZG9tU3RyaW5nOiBzdHJpbmcgPSBBcnJheS5hcHBseShudWxsLCBBcnJheShsZW4pKVxyXG4gICAgICAubWFwKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gY2hhclNldC5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhclNldC5sZW5ndGgpKTtcclxuICAgICAgfSlcclxuICAgICAgLmpvaW4oJycpO1xyXG4gICAgcmV0dXJuIHJhbmRvbVN0cmluZztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgaGFuZGxlT25seU51bWJlcnNDdXJyZW5jeSh2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAoL1teMC05Ll0vZyksICcnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgaGFuZGxlT25seU51bWJlcnModmFsdWU6IGFueSkge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKC9bXjAtOV0vZyksICcnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgaGFuZGxlT25seUFscGhhTnVtZXJpYyh2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gJyc7XHJcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKC9bXjAtOUEtWmEtel0vLCAnZycpLCAnJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGNhcGl0YWxpemUodmFsdWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGAke3ZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7dmFsdWUuc2xpY2UoMSl9YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZm9ybWF0WmlwQ29kZSh6aXBDb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF6aXBDb2RlKSByZXR1cm4gemlwQ29kZTtcclxuICAgIGNvbnN0IGZvcm1hdGVkOiBzdHJpbmcgPSB6aXBDb2RlXHJcbiAgICAgIC5yZXBsYWNlKC9eKFxcZHs1fSkoXFxkKS8sICckMS0kMicpXHJcbiAgICAgIC5yZXBsYWNlKC9cXC4oXFxkezN9KShcXGQpLywgJy4kMS0kMicpO1xyXG5cclxuICAgIHJldHVybiBgJHtmb3JtYXRlZH1gO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBmb3JtYXRGaWxlU2l6ZShzaXplOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHVuaXRzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XHJcbiAgICBsZXQgbCA9IDA7XHJcbiAgICB3aGlsZSAoc2l6ZSA+PSAxMDI0ICYmICsrbCkge1xyXG4gICAgICBzaXplID0gc2l6ZSAvIDEwMjQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc2l6ZS50b0ZpeGVkKHNpemUgPCAxMCAmJiBsID4gMCA/IDEgOiAwKSArICcgJyArIHVuaXRzW2xdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBzdWZmbHVlKGRhdGE6IGFueVtdKTogYW55W10ge1xyXG4gICAgZm9yIChsZXQgaSA9IGRhdGEubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkge1xyXG4gICAgICBjb25zdCBqID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogaSk7XHJcbiAgICAgIGNvbnN0IHRlbXAgPSBkYXRhW2ldO1xyXG4gICAgICBkYXRhW2ldID0gZGF0YVtqXTtcclxuICAgICAgZGF0YVtqXSA9IHRlbXA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgaGFuZGxlQmxvYkZpbGUodGhlQmxvYjogYW55LCBmaWxlTmFtZTogc3RyaW5nLCBmaWxlVHlwZTogc3RyaW5nKSB7XHJcbiAgICBmdW5jdGlvbiBibG9iVG9GaWxlKHRoZUJsb2IsIGZpbGVOYW1lKSB7XHJcbiAgICAgIGNvbnN0IGIgPSB0aGVCbG9iO1xyXG4gICAgICBiLmxhc3RNb2RpZmllZERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICBiLm5hbWUgPSBmaWxlTmFtZTtcclxuICAgICAgcmV0dXJuIGI7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGZpbGU6IGFueTtcclxuICAgIGlmICghKG5hdmlnYXRvciBhcyBhbnkpLm1zU2F2ZUJsb2IpIHtcclxuICAgICAgZmlsZSA9IG5ldyBGaWxlKFt0aGVCbG9iXSwgZmlsZU5hbWUsIHsgdHlwZTogZmlsZVR5cGUgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmaWxlID0gbmV3IEJsb2IoW3RoZUJsb2JdLCB7IHR5cGU6IGZpbGVUeXBlIH0pO1xyXG4gICAgICBmaWxlID0gYmxvYlRvRmlsZShmaWxlLCBmaWxlTmFtZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmlsZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgdHJ1bmNhdGUodGV4dDogc3RyaW5nLCBtYXhMZW5ndGg6IG51bWJlciA9IDI1KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1pZENoYXIgPSAnLi4uJztcclxuICAgIGlmICghdGV4dCkgcmV0dXJuIG1pZENoYXI7XHJcbiAgICBpZiAodGV4dCAmJiB0ZXh0Lmxlbmd0aCA8PSBtYXhMZW5ndGgpIHJldHVybiB0ZXh0O1xyXG5cclxuICAgIGNvbnN0IGxlZnQgPSBNYXRoLmNlaWwobWF4TGVuZ3RoIC8gMik7XHJcbiAgICBjb25zdCByaWdodCA9IHRleHQubGVuZ3RoIC0gbGVmdCArIDE7XHJcblxyXG4gICAgcmV0dXJuIGAke3RleHQuc3Vic3RyKDAsIGxlZnQpfSAke21pZENoYXJ9ICR7dGV4dC5zdWJzdHJpbmcocmlnaHQpfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGlzTG9jYWxob3N0KCkge1xyXG4gICAgY29uc3QgeyBocmVmIH0gPSB3aW5kb3c/LmxvY2F0aW9uO1xyXG4gICAgaWYgKCFocmVmKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gaHJlZj8uc2VhcmNoKCdsb2NhbGhvc3QnKSA+PSAwO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBnZXRQaG9uZVJlZ2lvbnMoKSB7XHJcbiAgICByZXR1cm4gcGhvbmVVdGlsXHJcbiAgICAgIC5nZXRTdXBwb3J0ZWRSZWdpb25zKClcclxuICAgICAgLm1hcCgoY29kZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHBob25lVXRpbC5nZXRDb3VudHJ5Q29kZUZvclJlZ2lvbihjb2RlKTtcclxuICAgICAgfSlcclxuICAgICAgLmZpbHRlcigodiwgaSwgYSkgPT4gYS5pbmRleE9mKHYpID09PSBpKVxyXG4gICAgICAuc29ydCgoYSwgYikgPT4gKGEgPCBiID8gLTEgOiAxKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldFBob25lSGFuZGxlKGludGVybmF0aW9uYWxOdW1iZXIgPSA1NSkge1xyXG4gICAgbGV0IG1heExlbmd0aCA9IDE0O1xyXG4gICAgbGV0IG1hc2sgPSAnWFggWFhYWFgtWFhYWCc7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBjb3VudHJ5ID0gcGhvbmVVdGlsLmdldFJlZ2lvbkNvZGVGb3JDb3VudHJ5Q29kZShpbnRlcm5hdGlvbmFsTnVtYmVyKTtcclxuICAgICAgY29uc3QgZXhhbXBsZU51bWJlciA9IHBob25lVXRpbC5nZXRFeGFtcGxlTnVtYmVyKGNvdW50cnkpWyd2YWx1ZXNfJ11bJzInXTtcclxuXHJcbiAgICAgIGNvbnN0IG51bWJlciA9IHBob25lVXRpbC5wYXJzZShgJHtleGFtcGxlTnVtYmVyfWAsIGNvdW50cnkpO1xyXG4gICAgICBjb25zdCBmb3JtYXRlZCA9IHBob25lVXRpbC5mb3JtYXQobnVtYmVyLCBudWxsKTtcclxuICAgICAgaWYgKGZvcm1hdGVkKSB7XHJcbiAgICAgICAgbWF4TGVuZ3RoID0gYCR7Zm9ybWF0ZWR9YC5sZW5ndGg7XHJcbiAgICAgICAgbWFzayA9IGAke2Zvcm1hdGVkfWAucmVwbGFjZShuZXcgUmVnRXhwKC9bXjAtOV0vZyksICcwJyk7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy9ub3QgdG8gZG9cclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIG1heExlbmd0aCxcclxuICAgICAgbWFzayxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldFBob25lQ291bnRyeUNvZGUocGhvbmU6IHN0cmluZykge1xyXG4gICAgaWYgKCFwaG9uZSkgcmV0dXJuICcnO1xyXG4gICAgbGV0IGNjID0gYCR7dGhpcy5oYW5kbGVPbmx5TnVtYmVycyhwaG9uZSl9YD8uc3Vic3RyaW5nKDAsIDIpO1xyXG4gICAgbGV0IGNvZGU7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBudW1iZXIgPSBwaG9uZVV0aWwucGFyc2UocGhvbmUpO1xyXG4gICAgICBjb2RlID0gbnVtYmVyLmdldENvdW50cnlDb2RlT3JEZWZhdWx0KCk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vbm90IHRvIGRvXHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29kZSB8fCBjYztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0UGhvbmVOdW1iZXJGb3JtYXRlZChwaG9uZTogc3RyaW5nLCBpbnRlcm5hdGlvbmFsTnVtYmVyID0gNTUpIHtcclxuICAgIGlmICghcGhvbmUpIHJldHVybiAnJztcclxuICAgIHBob25lID0gcGhvbmUucmVwbGFjZShuZXcgUmVnRXhwKGBcXFxcKyR7aW50ZXJuYXRpb25hbE51bWJlcn1gLCdnJyksJycpO1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgY291bnRyeSA9IHBob25lVXRpbC5nZXRSZWdpb25Db2RlRm9yQ291bnRyeUNvZGUoaW50ZXJuYXRpb25hbE51bWJlcik7XHJcbiAgICAgIGNvbnN0IG51bWJlciA9IHBob25lVXRpbC5wYXJzZShwaG9uZSwgY291bnRyeSk7XHJcbiAgICAgIGlmIChwaG9uZVV0aWwuaXNQb3NzaWJsZU51bWJlcihudW1iZXIpKSB7XHJcbiAgICAgICAgcmV0dXJuIHBob25lVXRpbC5mb3JtYXQobnVtYmVyLCBudWxsKTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvL25vdCB0byBkb1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBob25lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBpc1Bob25lTnVtYmVyVmFsaWQocGhvbmU6IHN0cmluZywgaW50ZXJuYXRpb25hbE51bWJlciA9IDU1KSB7XHJcbiAgICBpZiAoIXBob25lKSByZXR1cm4gZmFsc2U7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBjb3VudHJ5ID0gcGhvbmVVdGlsLmdldFJlZ2lvbkNvZGVGb3JDb3VudHJ5Q29kZShpbnRlcm5hdGlvbmFsTnVtYmVyKTtcclxuICAgICAgY29uc3QgbnVtYmVyID0gcGhvbmVVdGlsLnBhcnNlKHBob25lLCBjb3VudHJ5KTtcclxuICAgICAgcmV0dXJuIHBob25lVXRpbC5pc1ZhbGlkTnVtYmVyRm9yUmVnaW9uKG51bWJlciwgY291bnRyeSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vbm90IHRvIGRvXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|