@libs-ui/utils 0.2.85 → 0.2.88
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/esm2022/cache.mjs +1 -1
- package/esm2022/pattern.mjs +21 -21
- package/fesm2022/libs-ui-utils.mjs +21 -21
- package/fesm2022/libs-ui-utils.mjs.map +1 -1
- package/package.json +1 -1
- package/pattern.d.ts +20 -20
package/esm2022/cache.mjs
CHANGED
|
@@ -377,4 +377,4 @@ export class UtilsCache {
|
|
|
377
377
|
});
|
|
378
378
|
}
|
|
379
379
|
}
|
|
380
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7QUFDOUMsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUc5QixNQUFNLE9BQU8sVUFBVTtJQUNkLE1BQU0sQ0FBVSx5QkFBeUIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ25ELE1BQU0sQ0FBVSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2QyxNQUFNLENBQVUsU0FBUyxHQUFHLElBQUksRUFBRSxDQUFDO0lBQ25DLE1BQU0sQ0FBQyx3QkFBd0IsR0FBRyxtQ0FBbUMsQ0FBQztJQUVyRSxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsd0JBQXdCLENBQUM7SUFDbkQsTUFBTSxDQUFDLHdCQUF3QixHQUFHLEtBQUssRUFBVSxDQUFDO0lBQ2xELE1BQU0sQ0FBQyxVQUFVLENBQVc7SUFDNUIsTUFBTSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQVMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckUsTUFBTSxDQUFDLE9BQU8sQ0FBNkI7SUFD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T0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hCLENBQUMsQ0FBQztZQUVGLE9BQU8sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRTtnQkFDakMsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUUsTUFBTSxDQUFFLEtBQUssQ0FBQyxNQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdDLENBQUMsQ0FBQztZQUVGLE9BQU8sQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFO2dCQUN2QixPQUFPLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7WUFDNUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYXN5bmMtcHJvbWlzZS1leGVjdXRvciAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuXG5pbXBvcnQgeyBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFV0aWxzQ29tbXVuaWNhdGVNaWNybyB9IGZyb20gJy4vY29tbXVuaWNhdGUtbWljcm8nO1xuaW1wb3J0IHsgZGVjcnlwdCwgZW5jcnlwdCwgbWQ1IH0gZnJvbSAnLi9jcnlwdG8nO1xuaW1wb3J0IHsgZ2V0UGxhdEZyb21Ccm93c2VyIH0gZnJvbSAnLi9kb20nO1xuaW1wb3J0IHsgaXNFbWJlZEZyYW1lIH0gZnJvbSAnLi9mdW5jdGlvbi1jaGVjay1lbWJlZC1mcmFtZSc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzIH0gZnJvbSAnLi9sYW5ndWFnZSc7XG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnLi91dWlkJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY2xhc3MgVXRpbHNDYWNoZSB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0FDSEVfRVhQSVJFX1RJTUVfREVGQVVMVCA9IDUgKiA2MDtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDQUNIRV9FWFBJUkVfTk9ORSA9IC0xO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGlkU2VydmljZSA9IHV1aWQoKTtcbiAgcHVibGljIHN0YXRpYyB0eXBlS2V5Q2xlYXJMb2NhbFN0b3JhZ2UgPSAnTElCU19VSV9DTEVBUl9MT0NBTF9TVE9SQUdFX0VWRU5UJztcblxuICBwcml2YXRlIHN0YXRpYyBsYW5ndWFnZUtleUNhY2hlID0gJ1NSM3hRS3hIZ2ZmaUNldlBRUnJhbGcnO1xuICBwcml2YXRlIHN0YXRpYyBsaXN0S2V5S2VlcFdoZW5DbGVhckFMbGwgPSBBcnJheTxzdHJpbmc+KCk7XG4gIHByaXZhdGUgc3RhdGljIGluaXRkRXZlbnQ/OiBib29sZWFuO1xuICBwcml2YXRlIHN0YXRpYyBsYW5ndWFnZSA9IHNpZ25hbDxzdHJpbmc+KFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuZGVmYXVsdExhbmcpO1xuICBwcml2YXRlIHN0YXRpYyBzdG9yYWdlOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfTtcbiAgcHJpdmF0ZSBzdGF0aWMgZGJOYW1lID0gJ2xpYnMtdWktY2FjaGUnO1xuICBwcml2YXRlIHN0YXRpYyBpdGVtSW5kZXhCeUtleSA9ICdrZXknO1xuICBwcml2YXRlIHN0YXRpYyBkYlZlcnNpb24gPSAxO1xuICBwcml2YXRlIHN0YXRpYyBkYjogSURCRGF0YWJhc2UgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgc3RhdGljIGluaXQoY29uZmlnOiB7IGluZGV4ZWREQk5hbWU/OiBzdHJpbmcsIGxhbmd1YWdlS2V5Q2FjaGU/OiBzdHJpbmcsIHR5cGVLZXlDbGVhckxvY2FsU3RvcmFnZT86IHN0cmluZywgbGlzdEtleUtlZXBXaGVuQ2xlYXJBbGw/OiBBcnJheTxzdHJpbmc+IH0pIHtcbiAgICBpZiAoVXRpbHNDYWNoZS5pbml0ZEV2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFV0aWxzQ2FjaGUuaW5pdGRFdmVudCA9IHRydWU7XG4gICAgaWYgKGNvbmZpZy5pbmRleGVkREJOYW1lKSB7XG4gICAgICBVdGlsc0NhY2hlLmRiTmFtZSA9IGNvbmZpZy5pbmRleGVkREJOYW1lO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLnR5cGVLZXlDbGVhckxvY2FsU3RvcmFnZSkge1xuICAgICAgVXRpbHNDYWNoZS50eXBlS2V5Q2xlYXJMb2NhbFN0b3JhZ2UgPSBjb25maWcudHlwZUtleUNsZWFyTG9jYWxTdG9yYWdlO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmxpc3RLZXlLZWVwV2hlbkNsZWFyQWxsKSB7XG4gICAgICBVdGlsc0NhY2hlLmxpc3RLZXlLZWVwV2hlbkNsZWFyQUxsbCA9IGNvbmZpZy5saXN0S2V5S2VlcFdoZW5DbGVhckFsbDtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5sYW5ndWFnZUtleUNhY2hlKSB7XG4gICAgICBVdGlsc0NhY2hlLmxhbmd1YWdlS2V5Q2FjaGUgPSBjb25maWcubGFuZ3VhZ2VLZXlDYWNoZTtcbiAgICB9XG4gICAgdGhpcy5sYW5ndWFnZS5zZXQoVXRpbHNDYWNoZS5HZXQoVXRpbHNDYWNoZS5sYW5ndWFnZUtleUNhY2hlLCBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLmRlZmF1bHRMYW5nKSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHNldExhbmcobGFuZzogc3RyaW5nKSB7XG4gICAgaWYgKGxhbmcgIT09IFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuVkkgJiYgbGFuZyAhPT0gVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5FTikge1xuICAgICAgdGhyb3cgRXJyb3IoJ0xhbmd1YWdlIHN1cHBvcnQgdmkgfCBlbicpO1xuICAgIH1cbiAgICBVdGlsc0NhY2hlLmxhbmd1YWdlLnNldChsYW5nKTtcbiAgICBVdGlsc0NhY2hlLlNldChVdGlsc0NhY2hlLmxhbmd1YWdlS2V5Q2FjaGUsIGxhbmcpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRMYW5nKCkge1xuICAgIHJldHVybiBVdGlsc0NhY2hlLmxhbmd1YWdlKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBvcGVuREIoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKFV0aWxzQ2FjaGUuZGJOYW1lLCBVdGlsc0NhY2hlLmRiVmVyc2lvbik7XG5cbiAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gKGV2ZW50OiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZGIgPSAoZXZlbnQudGFyZ2V0IGFzIElEQk9wZW5EQlJlcXVlc3QpLnJlc3VsdDtcblxuICAgICAgICBpZiAoIWRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoVXRpbHNDYWNoZS5kYk5hbWUpKSB7XG4gICAgICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShVdGlsc0NhY2hlLmRiTmFtZSwgeyBrZXlQYXRoOiBVdGlsc0NhY2hlLml0ZW1JbmRleEJ5S2V5LCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pO1xuXG4gICAgICAgICAgb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoVXRpbHNDYWNoZS5pdGVtSW5kZXhCeUtleSwgVXRpbHNDYWNoZS5pdGVtSW5kZXhCeUtleSwgeyB1bmlxdWU6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4ge1xuICAgICAgICBVdGlsc0NhY2hlLmRiID0gcmVxdWVzdC5yZXN1bHQ7XG4gICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igb3BlbmluZyBJbmRleGVkREI6JywgZXZlbnQpO1xuICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhc3luYyBnZXRPYmplY3RTdG9yZSgpIHtcbiAgICBpZiAoIVV0aWxzQ2FjaGUuZGIpIHtcbiAgICAgIGF3YWl0IFV0aWxzQ2FjaGUub3BlbkRCKCk7XG4gICAgfVxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gVXRpbHNDYWNoZS5kYj8udHJhbnNhY3Rpb24oW1V0aWxzQ2FjaGUuZGJOYW1lXSwgJ3JlYWR3cml0ZScpO1xuICAgIGlmICghdHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZShVdGlsc0NhY2hlLmRiTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXQgTG9jYWxTdG9yYWdlKCk6IGFueSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0eXBlb2Ygd2luZG93LmxvY2FsU3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29uc3QgT1MgPSBnZXRQbGF0RnJvbUJyb3dzZXIoKTtcblxuICAgICAgICBpZiAoT1MuaW5jbHVkZXMoJ1NhZmFyaScpICYmIHBhcnNlRmxvYXQoT1Muc3BsaXQoJyAnKS5wb3AoKSB8fCAnMCcpID49IDE2KSB7XG5cbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRMb2NhbFN0b3JhZ2VGYWtlT25TYWZhcmkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmdldExvY2FsU3RvcmFnZUZha2UoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TG9jYWxTdG9yYWdlRmFrZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldExvY2FsU3RvcmFnZUZha2VPblNhZmFyaSgpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdy5sb2NhbFN0b3JhZ2UgIT09ICd1bmRlZmluZWQnICYmICFVdGlsc0NhY2hlLnN0b3JhZ2UgJiYgT2JqZWN0LmtleXMobG9jYWxTdG9yYWdlKS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3RvcmFnZSA9IHsgLi4ubG9jYWxTdG9yYWdlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNldEl0ZW06IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlW2tleV0gPSB2YWx1ZTtcbiAgICAgIH0sXG4gICAgICBnZXRJdGVtOiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5zdG9yYWdlIHx8IGlzTmlsKHRoaXMuc3RvcmFnZVtrZXldKSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB0aGlzLnN0b3JhZ2Vba2V5XSBhcyBzdHJpbmcpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2U/LltrZXldO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZUl0ZW06IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBkZWxldGUgdGhpcy5zdG9yYWdlPy5ba2V5XTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgIH0sXG4gICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JhZ2UgPSB7fTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldExvY2FsU3RvcmFnZUZha2UoKSB7XG4gICAgaWYgKCFVdGlsc0NhY2hlLnN0b3JhZ2UpIHtcbiAgICAgIHRoaXMuc3RvcmFnZSA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzZXRJdGVtOiAoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmFnZVtrZXldID0gdmFsdWU7XG4gICAgICB9LFxuICAgICAgZ2V0SXRlbTogKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2U/LltrZXldO1xuICAgICAgfSxcbiAgICAgIHJlbW92ZUl0ZW06IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBkZWxldGUgdGhpcy5zdG9yYWdlPy5ba2V5XTtcbiAgICAgIH0sXG4gICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JhZ2UgPSB7fTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBHZXRBc3luYzxUID0gYW55PihrZXk6IHN0cmluZywgZGVmYXVsdF92YWx1ZT86IGFueSwgaXNLZXlNRDUgPSBmYWxzZSk6IFByb21pc2U8VD4ge1xuICAgIGtleSA9IGlzS2V5TUQ1ID8ga2V5IDogbWQ1KGtleSk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2U8VD4oYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBhd2FpdCBVdGlsc0NhY2hlLmdldE9iamVjdFN0b3JlKCk7XG5cbiAgICAgIGlmICghb2JqZWN0U3RvcmUpIHtcblxuICAgICAgICByZXR1cm4gcmVzb2x2ZShkZWZhdWx0X3ZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQoa2V5KTtcblxuICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgIGlmICghcmVxdWVzdC5yZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShkZWZhdWx0X3ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkZWNyeXB0KHJlcXVlc3QucmVzdWx0LnZhbHVlKSk7XG5cbiAgICAgICAgaWYgKGRhdGEuZXhwaXJlID09PSBVdGlsc0NhY2hlLkNBQ0hFX0VYUElSRV9OT05FKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoZGF0YS5qc29uKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50TWlsbGlzZWNvbmQgPSAobmV3IERhdGUoKS52YWx1ZU9mKCkgLyAxMDAwKTtcblxuICAgICAgICBpZiAoZGF0YS5leHBpcmUgPCBjdXJyZW50TWlsbGlzZWNvbmQpIHtcblxuICAgICAgICAgIHJldHVybiByZXNvbHZlKGRlZmF1bHRfdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc29sdmUoZGF0YS5qc29uKTtcbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgcmVqZWN0KHJlcXVlc3QuZXJyb3IpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgR2V0PFQgPSBhbnk+KGtleTogc3RyaW5nLCBkZWZhdWx0X3ZhbHVlPzogYW55KTogVCB7IC8vIHN1cHBvcnQgY2hvIG5o4buvbmcgZmlsZSBraMO0bmcgdGjhu4MgaW5qZWN0IFV0aWxzQ2FjaGVcbiAgICBpZiAoIWtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuR2V0RGVmYXVsdFZhbHVlQnlTcGVjaWZpY0tleShrZXksIGRlZmF1bHRfdmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBjYWNoZWREYXRhID0gdGhpcy5Mb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuXG4gICAgaWYgKCFjYWNoZWREYXRhKSB7XG4gICAgICByZXR1cm4gdGhpcy5HZXREZWZhdWx0VmFsdWVCeVNwZWNpZmljS2V5KGtleSwgZGVmYXVsdF92YWx1ZSk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkZWNyeXB0KGNhY2hlZERhdGEpKTtcblxuICAgICAgaWYgKGRhdGEuZXhwaXJlID09PSBVdGlsc0NhY2hlLkNBQ0hFX0VYUElSRV9OT05FKSB7XG4gICAgICAgIHJldHVybiBkYXRhLnZhbHVlID8/IGRlZmF1bHRfdmFsdWU7XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50TWlsbGlzZWNvbmQgPSAobmV3IERhdGUoKS52YWx1ZU9mKCkgLyAxMDAwKTtcblxuICAgICAgaWYgKGRhdGEuZXhwaXJlIDwgY3VycmVudE1pbGxpc2Vjb25kKSB7XG4gICAgICAgIHJldHVybiB0aGlzLkdldERlZmF1bHRWYWx1ZUJ5U3BlY2lmaWNLZXkoa2V5LCBkZWZhdWx0X3ZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRhdGEudmFsdWU7XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuXG4gICAgICByZXR1cm4gdGhpcy5HZXREZWZhdWx0VmFsdWVCeVNwZWNpZmljS2V5KGtleSwgZGVmYXVsdF92YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBHZXREZWZhdWx0VmFsdWVCeVNwZWNpZmljS2V5KGtleTogc3RyaW5nLCBkZWZhdWx0X3ZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTtcblxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBTZXRBc3luYzxUID0gYW55PihrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgZXhwaXJlVGltZUJ5U2Vjb25kID0gVXRpbHNDYWNoZS5DQUNIRV9FWFBJUkVfVElNRV9ERUZBVUxULCBpc0tleU1ENSA9IGZhbHNlKTogUHJvbWlzZTxUPiB7IC8vIHN1cHBvcnQgaW5qZWN0IFV0aWxzQ2FjaGVcbiAgICByZXR1cm4gbmV3IFByb21pc2U8VD4oYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBhd2FpdCBVdGlsc0NhY2hlLmdldE9iamVjdFN0b3JlKCk7XG5cbiAgICAgIGtleSA9IGlzS2V5TUQ1ID8ga2V5IDogbWQ1KGtleSk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjdXJyZW50TWlsbGlzZWNvbmQgPSBleHBpcmVUaW1lQnlTZWNvbmQgPT09IFV0aWxzQ2FjaGUuQ0FDSEVfRVhQSVJFX05PTkUgPyBVdGlsc0NhY2hlLkNBQ0hFX0VYUElSRV9OT05FIDogKG5ldyBEYXRlKCkudmFsdWVPZigpIC8gMTAwMCkgKyBleHBpcmVUaW1lQnlTZWNvbmQ7XG4gICAgICAgIGNvbnN0IGRhdGE6IGFueSA9IHtcbiAgICAgICAgICB2YWx1ZTogZW5jcnlwdChKU09OLnN0cmluZ2lmeSh7IGpzb246IHZhbHVlLCBleHBpcmU6IGN1cnJlbnRNaWxsaXNlY29uZCB9KSksXG4gICAgICAgIH07XG4gICAgICAgIGRhdGFbVXRpbHNDYWNoZS5pdGVtSW5kZXhCeUtleV0gPSBrZXk7XG5cbiAgICAgICAgaWYgKCFvYmplY3RTdG9yZSkge1xuICAgICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKCdDYW4gbm90IG9wZW4gb2JqZWN0IHN0b3JlJykpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBvYmplY3RTdG9yZT8ucHV0KGRhdGEpO1xuICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHJlcXVlc3QucmVzdWx0IGFzIGFueSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgICAgIHJlamVjdChyZXF1ZXN0LmVycm9yKTtcbiAgICAgICAgfTtcblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG5cbiAgc3RhdGljIFNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgZXhwaXJlVGltZUJ5U2Vjb25kID0gVXRpbHNDYWNoZS5DQUNIRV9FWFBJUkVfVElNRV9ERUZBVUxUKTogYm9vbGVhbiB7IC8vIHN1cHBvcnQgY2hvIG5o4buvbmcgZmlsZSBraMO0bmcgaW5qZWN0IFV0aWxzQ2FjaGVcbiAgICBjb25zdCBjdXJyZW50TWlsbGlzZWNvbmQgPSBleHBpcmVUaW1lQnlTZWNvbmQgPT09IFV0aWxzQ2FjaGUuQ0FDSEVfRVhQSVJFX05PTkUgPyBVdGlsc0NhY2hlLkNBQ0hFX0VYUElSRV9OT05FIDogKG5ldyBEYXRlKCkudmFsdWVPZigpIC8gMTAwMCkgKyBleHBpcmVUaW1lQnlTZWNvbmQ7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGV4cGlyZTogY3VycmVudE1pbGxpc2Vjb25kXG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLkxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgZW5jcnlwdChKU09OLnN0cmluZ2lmeShkYXRhKSkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFzeW5jIENsZWFyQXN5bmMoa2V5OiBzdHJpbmcsIGlzTUQ1ID0gZmFsc2UpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gYXdhaXQgVXRpbHNDYWNoZS5nZXRPYmplY3RTdG9yZSgpO1xuXG4gICAgICBpZiAoIW9iamVjdFN0b3JlKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZGVsZXRlKGlzTUQ1ID8ga2V5IDogbWQ1KGtleSkpO1xuXG4gICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfTtcbiAgICAgIHJlcXVlc3Qub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG5cbiAgc3RhdGljIENsZWFyKGtleTogc3RyaW5nKSB7XG4gICAgaWYgKGtleS5pbmNsdWRlcygna2MtY2FsbGJhY2stJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5Mb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBDbGVhckFsbEFzeW5jKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGF3YWl0IFV0aWxzQ2FjaGUuZ2V0T2JqZWN0U3RvcmUoKTtcblxuICAgICAgaWYgKCFvYmplY3RTdG9yZSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuY2xlYXIoKTtcbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnRGF0YWJhc2UgZGVsZXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfTtcblxuICAgICAgcmVxdWVzdC5vbmVycm9yID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkZWxldGluZyBkYXRhYmFzZTonLCAoZXZlbnQudGFyZ2V0IGFzIElEQlJlcXVlc3QpLmVycm9yKTtcbiAgICAgICAgcmVqZWN0KChldmVudC50YXJnZXQgYXMgSURCUmVxdWVzdCkuZXJyb3IpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBDbGVhckFsbCgpIHtcbiAgICBpZiAoaXNFbWJlZEZyYW1lKCkpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgIHR5cGU6IFV0aWxzQ2FjaGUudHlwZUtleUNsZWFyTG9jYWxTdG9yYWdlLFxuICAgICAgICByZXNwb25zZToge1xuICAgICAgICAgIGlkRXZlbnQ6IHRoaXMuaWRTZXJ2aWNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBVdGlsc0NvbW11bmljYXRlTWljcm8uUG9zdE1lc3NhZ2VUb1BhcmVudChkYXRhKTtcbiAgICB9XG4gICAgY29uc3Qga2V5cyA9IFsuLi5VdGlsc0NhY2hlLmxpc3RLZXlLZWVwV2hlbkNsZWFyQUxsbF07XG4gICAgT2JqZWN0LmtleXModGhpcy5Mb2NhbFN0b3JhZ2UpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ2tjLWNhbGxiYWNrLScpKSB7XG4gICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3RvcmVzID0gVXRpbHNDYWNoZS5HZXREYXRhQnlLZXlzKEFycmF5LmZyb20oa2V5cykpO1xuXG4gICAgdGhpcy5Mb2NhbFN0b3JhZ2UuY2xlYXIoKTtcblxuICAgIFV0aWxzQ2FjaGUuU2V0RGF0YUJ5S2V5KHN0b3Jlcyk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBHZXREYXRhQnlLZXlzKGtleXM6IEFycmF5PHN0cmluZz4pIHtcbiAgICBjb25zdCBzdG9yZXMgPSBuZXcgTWFwKCk7XG5cbiAgICBrZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoa2V5LmluY2x1ZGVzKCdrYy1jYWxsYmFjay0nKSkge1xuICAgICAgICBzdG9yZXMuc2V0KGtleSwgdGhpcy5Mb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzdG9yZXMuc2V0KGtleSwgVXRpbHNDYWNoZS5HZXQoa2V5KSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3RvcmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgU2V0RGF0YUJ5S2V5KHN0b3JlczogTWFwPHN0cmluZywgYW55Pikge1xuICAgIHN0b3Jlcy5mb3JFYWNoKCh2YWx1ZTogYW55LCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGtleS5pbmNsdWRlcygna2MtY2FsbGJhY2stJykpIHtcbiAgICAgICAgdGhpcy5Mb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoa2V5ID09PSBVdGlsc0NhY2hlLmxhbmd1YWdlS2V5Q2FjaGUpIHtcbiAgICAgICAgcmV0dXJuIFV0aWxzQ2FjaGUuc2V0TGFuZyh2YWx1ZSk7XG4gICAgICB9XG4gICAgICBVdGlsc0NhY2hlLlNldChrZXksIHZhbHVlLCBVdGlsc0NhY2hlLkNBQ0hFX0VYUElSRV9OT05FKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgRGVsZXRlS2V5U3RhcnRXaXRoQXN5bmMoa2V5Q2FjaGVTdGFydFdpdGg6IHN0cmluZywgaXNLZXlNRDUgPSBmYWxzZSkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBhd2FpdCBVdGlsc0NhY2hlLmdldE9iamVjdFN0b3JlKCk7XG5cbiAgICAgIGlmICghb2JqZWN0U3RvcmUpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoe30pO1xuICAgICAgfVxuXG4gICAgICAvLyBM4bqleSB04bqldCBj4bqjIGPDoWMga2V5cyB04burIGluZGV4XG4gICAgICBjb25zdCByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0QWxsKCk7XG5cbiAgICAgIGtleUNhY2hlU3RhcnRXaXRoID0gaXNLZXlNRDUgPyBrZXlDYWNoZVN0YXJ0V2l0aCA6IG1kNShrZXlDYWNoZVN0YXJ0V2l0aCk7XG5cblxuICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBlLnRhcmdldC5yZXN1bHQgYXMgQXJyYXk8YW55PjtcblxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh7fSk7XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhLmZvckVhY2gob2JqID0+IHtcbiAgICAgICAgICBpZiAob2JqW1V0aWxzQ2FjaGUuaXRlbUluZGV4QnlLZXldLnN0YXJ0c1dpdGgoa2V5Q2FjaGVTdGFydFdpdGgpKSB7XG4gICAgICAgICAgICBVdGlsc0NhY2hlLkNsZWFyQXN5bmMob2JqW1V0aWxzQ2FjaGUuaXRlbUluZGV4QnlLZXldLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXNvbHZlKHt9KTtcbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoe30pO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgRGVsZXRlS2V5U3RhcnRXaXRoKGtleUNhY2hlOiBzdHJpbmcsIGlzTUQ1ID0gZmFsc2UpIHtcbiAgICBrZXlDYWNoZSA9IGlzTUQ1ID8gbWQ1KGtleUNhY2hlKSA6IGtleUNhY2hlO1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhVdGlsc0NhY2hlLkxvY2FsU3RvcmFnZSk7XG5cbiAgICBpZiAoIWtleXMgfHwgIWtleXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoa2V5Q2FjaGUpKSB7XG4gICAgICAgIHRoaXMuQ2xlYXIoa2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgRGVsZXRlRGF0YWJhc2VJbmRleERCKGRiTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJOYW1lKTtcblxuICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdEYXRhYmFzZSBkZWxldGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgfTtcblxuICAgICAgcmVxdWVzdC5vbmVycm9yID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkZWxldGluZyBkYXRhYmFzZTonLCAoZXZlbnQudGFyZ2V0IGFzIElEQlJlcXVlc3QpLmVycm9yKTtcbiAgICAgICAgcmVqZWN0KChldmVudC50YXJnZXQgYXMgSURCUmVxdWVzdCkuZXJyb3IpO1xuICAgICAgfTtcblxuICAgICAgcmVxdWVzdC5vbmJsb2NrZWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUud2FybignRGVsZXRlIHJlcXVlc3QgaXMgYmxvY2tlZCcpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
380
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL3V0aWxzL3NyYy9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7QUFDOUMsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU5QixNQUFNLE9BQU8sVUFBVTtJQUNkLE1BQU0sQ0FBVSx5QkFBeUIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ25ELE1BQU0sQ0FBVSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2QyxNQUFNLENBQVUsU0FBUyxHQUFHLElBQUksRUFBRSxDQUFDO0lBQ25DLE1BQU0sQ0FBQyx3QkFBd0IsR0FBRyxtQ0FBbUMsQ0FBQztJQUVyRSxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsd0JBQXdCLENBQUM7SUFDbkQsTUFBTSxDQUFDLHdCQUF3QixHQUFHLEtBQUssRUFBVSxDQUFDO0lBQ2xELE1BQU0sQ0FBQyxVQUFVLENBQVc7SUFDNUIsTUFBTSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQVMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckUsTUFBTSxDQUFDLE9BQU8sQ0FBNkI7SUFD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T0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hCLENBQUMsQ0FBQztZQUVGLE9BQU8sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRTtnQkFDakMsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUUsTUFBTSxDQUFFLEtBQUssQ0FBQyxNQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdDLENBQUMsQ0FBQztZQUVGLE9BQU8sQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFO2dCQUN2QixPQUFPLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7WUFDNUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYXN5bmMtcHJvbWlzZS1leGVjdXRvciAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuXG5pbXBvcnQgeyBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFV0aWxzQ29tbXVuaWNhdGVNaWNybyB9IGZyb20gJy4vY29tbXVuaWNhdGUtbWljcm8nO1xuaW1wb3J0IHsgZGVjcnlwdCwgZW5jcnlwdCwgbWQ1IH0gZnJvbSAnLi9jcnlwdG8nO1xuaW1wb3J0IHsgZ2V0UGxhdEZyb21Ccm93c2VyIH0gZnJvbSAnLi9kb20nO1xuaW1wb3J0IHsgaXNFbWJlZEZyYW1lIH0gZnJvbSAnLi9mdW5jdGlvbi1jaGVjay1lbWJlZC1mcmFtZSc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzIH0gZnJvbSAnLi9sYW5ndWFnZSc7XG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnLi91dWlkJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzQ2FjaGUge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENBQ0hFX0VYUElSRV9USU1FX0RFRkFVTFQgPSA1ICogNjA7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0FDSEVfRVhQSVJFX05PTkUgPSAtMTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBpZFNlcnZpY2UgPSB1dWlkKCk7XG4gIHB1YmxpYyBzdGF0aWMgdHlwZUtleUNsZWFyTG9jYWxTdG9yYWdlID0gJ0xJQlNfVUlfQ0xFQVJfTE9DQUxfU1RPUkFHRV9FVkVOVCc7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbGFuZ3VhZ2VLZXlDYWNoZSA9ICdTUjN4UUt4SGdmZmlDZXZQUVJyYWxnJztcbiAgcHJpdmF0ZSBzdGF0aWMgbGlzdEtleUtlZXBXaGVuQ2xlYXJBTGxsID0gQXJyYXk8c3RyaW5nPigpO1xuICBwcml2YXRlIHN0YXRpYyBpbml0ZEV2ZW50PzogYm9vbGVhbjtcbiAgcHJpdmF0ZSBzdGF0aWMgbGFuZ3VhZ2UgPSBzaWduYWw8c3RyaW5nPihVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLmRlZmF1bHRMYW5nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgc3RvcmFnZTogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH07XG4gIHByaXZhdGUgc3RhdGljIGRiTmFtZSA9ICdsaWJzLXVpLWNhY2hlJztcbiAgcHJpdmF0ZSBzdGF0aWMgaXRlbUluZGV4QnlLZXkgPSAna2V5JztcbiAgcHJpdmF0ZSBzdGF0aWMgZGJWZXJzaW9uID0gMTtcbiAgcHJpdmF0ZSBzdGF0aWMgZGI6IElEQkRhdGFiYXNlIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIHN0YXRpYyBpbml0KGNvbmZpZzogeyBpbmRleGVkREJOYW1lPzogc3RyaW5nLCBsYW5ndWFnZUtleUNhY2hlPzogc3RyaW5nLCB0eXBlS2V5Q2xlYXJMb2NhbFN0b3JhZ2U/OiBzdHJpbmcsIGxpc3RLZXlLZWVwV2hlbkNsZWFyQWxsPzogQXJyYXk8c3RyaW5nPiB9KSB7XG4gICAgaWYgKFV0aWxzQ2FjaGUuaW5pdGRFdmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBVdGlsc0NhY2hlLmluaXRkRXZlbnQgPSB0cnVlO1xuICAgIGlmIChjb25maWcuaW5kZXhlZERCTmFtZSkge1xuICAgICAgVXRpbHNDYWNoZS5kYk5hbWUgPSBjb25maWcuaW5kZXhlZERCTmFtZTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy50eXBlS2V5Q2xlYXJMb2NhbFN0b3JhZ2UpIHtcbiAgICAgIFV0aWxzQ2FjaGUudHlwZUtleUNsZWFyTG9jYWxTdG9yYWdlID0gY29uZmlnLnR5cGVLZXlDbGVhckxvY2FsU3RvcmFnZTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5saXN0S2V5S2VlcFdoZW5DbGVhckFsbCkge1xuICAgICAgVXRpbHNDYWNoZS5saXN0S2V5S2VlcFdoZW5DbGVhckFMbGwgPSBjb25maWcubGlzdEtleUtlZXBXaGVuQ2xlYXJBbGw7XG4gICAgfVxuICAgIGlmIChjb25maWcubGFuZ3VhZ2VLZXlDYWNoZSkge1xuICAgICAgVXRpbHNDYWNoZS5sYW5ndWFnZUtleUNhY2hlID0gY29uZmlnLmxhbmd1YWdlS2V5Q2FjaGU7XG4gICAgfVxuICAgIHRoaXMubGFuZ3VhZ2Uuc2V0KFV0aWxzQ2FjaGUuR2V0KFV0aWxzQ2FjaGUubGFuZ3VhZ2VLZXlDYWNoZSwgVXRpbHNMYW5ndWFnZUNvbnN0YW50cy5kZWZhdWx0TGFuZykpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzZXRMYW5nKGxhbmc6IHN0cmluZykge1xuICAgIGlmIChsYW5nICE9PSBVdGlsc0xhbmd1YWdlQ29uc3RhbnRzLlZJICYmIGxhbmcgIT09IFV0aWxzTGFuZ3VhZ2VDb25zdGFudHMuRU4pIHtcbiAgICAgIHRocm93IEVycm9yKCdMYW5ndWFnZSBzdXBwb3J0IHZpIHwgZW4nKTtcbiAgICB9XG4gICAgVXRpbHNDYWNoZS5sYW5ndWFnZS5zZXQobGFuZyk7XG4gICAgVXRpbHNDYWNoZS5TZXQoVXRpbHNDYWNoZS5sYW5ndWFnZUtleUNhY2hlLCBsYW5nKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0TGFuZygpIHtcbiAgICByZXR1cm4gVXRpbHNDYWNoZS5sYW5ndWFnZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgb3BlbkRCKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihVdGlsc0NhY2hlLmRiTmFtZSwgVXRpbHNDYWNoZS5kYlZlcnNpb24pO1xuXG4gICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IChldmVudDogSURCVmVyc2lvbkNoYW5nZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGRiID0gKGV2ZW50LnRhcmdldCBhcyBJREJPcGVuREJSZXF1ZXN0KS5yZXN1bHQ7XG5cbiAgICAgICAgaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKFV0aWxzQ2FjaGUuZGJOYW1lKSkge1xuICAgICAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoVXRpbHNDYWNoZS5kYk5hbWUsIHsga2V5UGF0aDogVXRpbHNDYWNoZS5pdGVtSW5kZXhCeUtleSwgYXV0b0luY3JlbWVudDogdHJ1ZSB9KTtcblxuICAgICAgICAgIG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KFV0aWxzQ2FjaGUuaXRlbUluZGV4QnlLZXksIFV0aWxzQ2FjaGUuaXRlbUluZGV4QnlLZXksIHsgdW5pcXVlOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHtcbiAgICAgICAgVXRpbHNDYWNoZS5kYiA9IHJlcXVlc3QucmVzdWx0O1xuICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgfTtcblxuICAgICAgcmVxdWVzdC5vbmVycm9yID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9wZW5pbmcgSW5kZXhlZERCOicsIGV2ZW50KTtcbiAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgZ2V0T2JqZWN0U3RvcmUoKSB7XG4gICAgaWYgKCFVdGlsc0NhY2hlLmRiKSB7XG4gICAgICBhd2FpdCBVdGlsc0NhY2hlLm9wZW5EQigpO1xuICAgIH1cbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IFV0aWxzQ2FjaGUuZGI/LnRyYW5zYWN0aW9uKFtVdGlsc0NhY2hlLmRiTmFtZV0sICdyZWFkd3JpdGUnKTtcbiAgICBpZiAoIXRyYW5zYWN0aW9uKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoVXRpbHNDYWNoZS5kYk5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0IExvY2FsU3RvcmFnZSgpOiBhbnkge1xuICAgIHRyeSB7XG4gICAgICBpZiAodHlwZW9mIHdpbmRvdy5sb2NhbFN0b3JhZ2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnN0IE9TID0gZ2V0UGxhdEZyb21Ccm93c2VyKCk7XG5cbiAgICAgICAgaWYgKE9TLmluY2x1ZGVzKCdTYWZhcmknKSAmJiBwYXJzZUZsb2F0KE9TLnNwbGl0KCcgJykucG9wKCkgfHwgJzAnKSA+PSAxNikge1xuXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TG9jYWxTdG9yYWdlRmFrZU9uU2FmYXJpKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5nZXRMb2NhbFN0b3JhZ2VGYWtlKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgIHJldHVybiB0aGlzLmdldExvY2FsU3RvcmFnZUZha2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRMb2NhbFN0b3JhZ2VGYWtlT25TYWZhcmkoKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cubG9jYWxTdG9yYWdlICE9PSAndW5kZWZpbmVkJyAmJiAhVXRpbHNDYWNoZS5zdG9yYWdlICYmIE9iamVjdC5rZXlzKGxvY2FsU3RvcmFnZSkubGVuZ3RoKSB7XG4gICAgICB0aGlzLnN0b3JhZ2UgPSB7IC4uLmxvY2FsU3RvcmFnZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzZXRJdGVtOiAoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG4gICAgICAgIHRoaXMuc3RvcmFnZVtrZXldID0gdmFsdWU7XG4gICAgICB9LFxuICAgICAgZ2V0SXRlbTogKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcblxuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuc3RvcmFnZSB8fCBpc05pbCh0aGlzLnN0b3JhZ2Vba2V5XSkpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdGhpcy5zdG9yYWdlW2tleV0gYXMgc3RyaW5nKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlPy5ba2V5XTtcbiAgICAgIH0sXG4gICAgICByZW1vdmVJdGVtOiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgZGVsZXRlIHRoaXMuc3RvcmFnZT8uW2tleV07XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgICB9LFxuICAgICAgY2xlYXI6ICgpID0+IHtcbiAgICAgICAgdGhpcy5zdG9yYWdlID0ge307XG4gICAgICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRMb2NhbFN0b3JhZ2VGYWtlKCkge1xuICAgIGlmICghVXRpbHNDYWNoZS5zdG9yYWdlKSB7XG4gICAgICB0aGlzLnN0b3JhZ2UgPSB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2V0SXRlbTogKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgICAgICB0aGlzLnN0b3JhZ2Vba2V5XSA9IHZhbHVlO1xuICAgICAgfSxcbiAgICAgIGdldEl0ZW06IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlPy5ba2V5XTtcbiAgICAgIH0sXG4gICAgICByZW1vdmVJdGVtOiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgZGVsZXRlIHRoaXMuc3RvcmFnZT8uW2tleV07XG4gICAgICB9LFxuICAgICAgY2xlYXI6ICgpID0+IHtcbiAgICAgICAgdGhpcy5zdG9yYWdlID0ge307XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgR2V0QXN5bmM8VCA9IGFueT4oa2V5OiBzdHJpbmcsIGRlZmF1bHRfdmFsdWU/OiBhbnksIGlzS2V5TUQ1ID0gZmFsc2UpOiBQcm9taXNlPFQ+IHtcbiAgICBrZXkgPSBpc0tleU1ENSA/IGtleSA6IG1kNShrZXkpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gYXdhaXQgVXRpbHNDYWNoZS5nZXRPYmplY3RTdG9yZSgpO1xuXG4gICAgICBpZiAoIW9iamVjdFN0b3JlKSB7XG5cbiAgICAgICAgcmV0dXJuIHJlc29sdmUoZGVmYXVsdF92YWx1ZSk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuZ2V0KGtleSk7XG5cbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4ge1xuICAgICAgICBpZiAoIXJlcXVlc3QucmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoZGVmYXVsdF92YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGVjcnlwdChyZXF1ZXN0LnJlc3VsdC52YWx1ZSkpO1xuXG4gICAgICAgIGlmIChkYXRhLmV4cGlyZSA9PT0gVXRpbHNDYWNoZS5DQUNIRV9FWFBJUkVfTk9ORSkge1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKGRhdGEuanNvbik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudE1pbGxpc2Vjb25kID0gKG5ldyBEYXRlKCkudmFsdWVPZigpIC8gMTAwMCk7XG5cbiAgICAgICAgaWYgKGRhdGEuZXhwaXJlIDwgY3VycmVudE1pbGxpc2Vjb25kKSB7XG5cbiAgICAgICAgICByZXR1cm4gcmVzb2x2ZShkZWZhdWx0X3ZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXNvbHZlKGRhdGEuanNvbik7XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgIHJlamVjdChyZXF1ZXN0LmVycm9yKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIEdldDxUID0gYW55PihrZXk6IHN0cmluZywgZGVmYXVsdF92YWx1ZT86IGFueSk6IFQgeyAvLyBzdXBwb3J0IGNobyBuaOG7r25nIGZpbGUga2jDtG5nIHRo4buDIGluamVjdCBVdGlsc0NhY2hlXG4gICAgaWYgKCFrZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLkdldERlZmF1bHRWYWx1ZUJ5U3BlY2lmaWNLZXkoa2V5LCBkZWZhdWx0X3ZhbHVlKTtcbiAgICB9XG4gICAgY29uc3QgY2FjaGVkRGF0YSA9IHRoaXMuTG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcblxuICAgIGlmICghY2FjaGVkRGF0YSkge1xuICAgICAgcmV0dXJuIHRoaXMuR2V0RGVmYXVsdFZhbHVlQnlTcGVjaWZpY0tleShrZXksIGRlZmF1bHRfdmFsdWUpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGVjcnlwdChjYWNoZWREYXRhKSk7XG5cbiAgICAgIGlmIChkYXRhLmV4cGlyZSA9PT0gVXRpbHNDYWNoZS5DQUNIRV9FWFBJUkVfTk9ORSkge1xuICAgICAgICByZXR1cm4gZGF0YS52YWx1ZSA/PyBkZWZhdWx0X3ZhbHVlO1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudE1pbGxpc2Vjb25kID0gKG5ldyBEYXRlKCkudmFsdWVPZigpIC8gMTAwMCk7XG5cbiAgICAgIGlmIChkYXRhLmV4cGlyZSA8IGN1cnJlbnRNaWxsaXNlY29uZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5HZXREZWZhdWx0VmFsdWVCeVNwZWNpZmljS2V5KGtleSwgZGVmYXVsdF92YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYXRhLnZhbHVlO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcblxuICAgICAgcmV0dXJuIHRoaXMuR2V0RGVmYXVsdFZhbHVlQnlTcGVjaWZpY0tleShrZXksIGRlZmF1bHRfdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgR2V0RGVmYXVsdFZhbHVlQnlTcGVjaWZpY0tleShrZXk6IHN0cmluZywgZGVmYXVsdF92YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7XG5cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgU2V0QXN5bmM8VCA9IGFueT4oa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIGV4cGlyZVRpbWVCeVNlY29uZCA9IFV0aWxzQ2FjaGUuQ0FDSEVfRVhQSVJFX1RJTUVfREVGQVVMVCwgaXNLZXlNRDUgPSBmYWxzZSk6IFByb21pc2U8VD4geyAvLyBzdXBwb3J0IGluamVjdCBVdGlsc0NhY2hlXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFQ+KGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gYXdhaXQgVXRpbHNDYWNoZS5nZXRPYmplY3RTdG9yZSgpO1xuXG4gICAgICBrZXkgPSBpc0tleU1ENSA/IGtleSA6IG1kNShrZXkpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY3VycmVudE1pbGxpc2Vjb25kID0gZXhwaXJlVGltZUJ5U2Vjb25kID09PSBVdGlsc0NhY2hlLkNBQ0hFX0VYUElSRV9OT05FID8gVXRpbHNDYWNoZS5DQUNIRV9FWFBJUkVfTk9ORSA6IChuZXcgRGF0ZSgpLnZhbHVlT2YoKSAvIDEwMDApICsgZXhwaXJlVGltZUJ5U2Vjb25kO1xuICAgICAgICBjb25zdCBkYXRhOiBhbnkgPSB7XG4gICAgICAgICAgdmFsdWU6IGVuY3J5cHQoSlNPTi5zdHJpbmdpZnkoeyBqc29uOiB2YWx1ZSwgZXhwaXJlOiBjdXJyZW50TWlsbGlzZWNvbmQgfSkpLFxuICAgICAgICB9O1xuICAgICAgICBkYXRhW1V0aWxzQ2FjaGUuaXRlbUluZGV4QnlLZXldID0ga2V5O1xuXG4gICAgICAgIGlmICghb2JqZWN0U3RvcmUpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignQ2FuIG5vdCBvcGVuIG9iamVjdCBzdG9yZScpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXF1ZXN0ID0gb2JqZWN0U3RvcmU/LnB1dChkYXRhKTtcbiAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShyZXF1ZXN0LnJlc3VsdCBhcyBhbnkpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJlcXVlc3Qub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgICByZWplY3QocmVxdWVzdC5lcnJvcik7XG4gICAgICAgIH07XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIHN0YXRpYyBTZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIGV4cGlyZVRpbWVCeVNlY29uZCA9IFV0aWxzQ2FjaGUuQ0FDSEVfRVhQSVJFX1RJTUVfREVGQVVMVCk6IGJvb2xlYW4geyAvLyBzdXBwb3J0IGNobyBuaOG7r25nIGZpbGUga2jDtG5nIGluamVjdCBVdGlsc0NhY2hlXG4gICAgY29uc3QgY3VycmVudE1pbGxpc2Vjb25kID0gZXhwaXJlVGltZUJ5U2Vjb25kID09PSBVdGlsc0NhY2hlLkNBQ0hFX0VYUElSRV9OT05FID8gVXRpbHNDYWNoZS5DQUNIRV9FWFBJUkVfTk9ORSA6IChuZXcgRGF0ZSgpLnZhbHVlT2YoKSAvIDEwMDApICsgZXhwaXJlVGltZUJ5U2Vjb25kO1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBleHBpcmU6IGN1cnJlbnRNaWxsaXNlY29uZFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5Mb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIGVuY3J5cHQoSlNPTi5zdHJpbmdpZnkoZGF0YSkpKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBDbGVhckFzeW5jKGtleTogc3RyaW5nLCBpc01ENSA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KGFzeW5jIChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBvYmplY3RTdG9yZSA9IGF3YWl0IFV0aWxzQ2FjaGUuZ2V0T2JqZWN0U3RvcmUoKTtcblxuICAgICAgaWYgKCFvYmplY3RTdG9yZSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmRlbGV0ZShpc01ENSA/IGtleSA6IG1kNShrZXkpKTtcblxuICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH07XG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuXG4gIHN0YXRpYyBDbGVhcihrZXk6IHN0cmluZykge1xuICAgIGlmIChrZXkuaW5jbHVkZXMoJ2tjLWNhbGxiYWNrLScpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuTG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgQ2xlYXJBbGxBc3luYygpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgb2JqZWN0U3RvcmUgPSBhd2FpdCBVdGlsc0NhY2hlLmdldE9iamVjdFN0b3JlKCk7XG5cbiAgICAgIGlmICghb2JqZWN0U3RvcmUpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmNsZWFyKCk7XG4gICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ0RhdGFiYXNlIGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25lcnJvciA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZGVsZXRpbmcgZGF0YWJhc2U6JywgKGV2ZW50LnRhcmdldCBhcyBJREJSZXF1ZXN0KS5lcnJvcik7XG4gICAgICAgIHJlamVjdCgoZXZlbnQudGFyZ2V0IGFzIElEQlJlcXVlc3QpLmVycm9yKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgQ2xlYXJBbGwoKSB7XG4gICAgaWYgKGlzRW1iZWRGcmFtZSgpKSB7XG4gICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICB0eXBlOiBVdGlsc0NhY2hlLnR5cGVLZXlDbGVhckxvY2FsU3RvcmFnZSxcbiAgICAgICAgcmVzcG9uc2U6IHtcbiAgICAgICAgICBpZEV2ZW50OiB0aGlzLmlkU2VydmljZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgVXRpbHNDb21tdW5pY2F0ZU1pY3JvLlBvc3RNZXNzYWdlVG9QYXJlbnQoZGF0YSk7XG4gICAgfVxuICAgIGNvbnN0IGtleXMgPSBbLi4uVXRpbHNDYWNoZS5saXN0S2V5S2VlcFdoZW5DbGVhckFMbGxdO1xuICAgIE9iamVjdC5rZXlzKHRoaXMuTG9jYWxTdG9yYWdlKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoa2V5LmluY2x1ZGVzKCdrYy1jYWxsYmFjay0nKSkge1xuICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHN0b3JlcyA9IFV0aWxzQ2FjaGUuR2V0RGF0YUJ5S2V5cyhBcnJheS5mcm9tKGtleXMpKTtcblxuICAgIHRoaXMuTG9jYWxTdG9yYWdlLmNsZWFyKCk7XG5cbiAgICBVdGlsc0NhY2hlLlNldERhdGFCeUtleShzdG9yZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgR2V0RGF0YUJ5S2V5cyhrZXlzOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgY29uc3Qgc3RvcmVzID0gbmV3IE1hcCgpO1xuXG4gICAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGtleS5pbmNsdWRlcygna2MtY2FsbGJhY2stJykpIHtcbiAgICAgICAgc3RvcmVzLnNldChrZXksIHRoaXMuTG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3RvcmVzLnNldChrZXksIFV0aWxzQ2FjaGUuR2V0KGtleSkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN0b3JlcztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIFNldERhdGFCeUtleShzdG9yZXM6IE1hcDxzdHJpbmcsIGFueT4pIHtcbiAgICBzdG9yZXMuZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ2tjLWNhbGxiYWNrLScpKSB7XG4gICAgICAgIHRoaXMuTG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGtleSA9PT0gVXRpbHNDYWNoZS5sYW5ndWFnZUtleUNhY2hlKSB7XG4gICAgICAgIHJldHVybiBVdGlsc0NhY2hlLnNldExhbmcodmFsdWUpO1xuICAgICAgfVxuICAgICAgVXRpbHNDYWNoZS5TZXQoa2V5LCB2YWx1ZSwgVXRpbHNDYWNoZS5DQUNIRV9FWFBJUkVfTk9ORSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIERlbGV0ZUtleVN0YXJ0V2l0aEFzeW5jKGtleUNhY2hlU3RhcnRXaXRoOiBzdHJpbmcsIGlzS2V5TUQ1ID0gZmFsc2UpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IG9iamVjdFN0b3JlID0gYXdhaXQgVXRpbHNDYWNoZS5nZXRPYmplY3RTdG9yZSgpO1xuXG4gICAgICBpZiAoIW9iamVjdFN0b3JlKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKHt9KTtcbiAgICAgIH1cblxuICAgICAgLy8gTOG6pXkgdOG6pXQgY+G6oyBjw6FjIGtleXMgdOG7qyBpbmRleFxuICAgICAgY29uc3QgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmdldEFsbCgpO1xuXG4gICAgICBrZXlDYWNoZVN0YXJ0V2l0aCA9IGlzS2V5TUQ1ID8ga2V5Q2FjaGVTdGFydFdpdGggOiBtZDUoa2V5Q2FjaGVTdGFydFdpdGgpO1xuXG5cbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKGU6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gZS50YXJnZXQucmVzdWx0IGFzIEFycmF5PGFueT47XG5cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoe30pO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YS5mb3JFYWNoKG9iaiA9PiB7XG4gICAgICAgICAgaWYgKG9ialtVdGlsc0NhY2hlLml0ZW1JbmRleEJ5S2V5XS5zdGFydHNXaXRoKGtleUNhY2hlU3RhcnRXaXRoKSkge1xuICAgICAgICAgICAgVXRpbHNDYWNoZS5DbGVhckFzeW5jKG9ialtVdGlsc0NhY2hlLml0ZW1JbmRleEJ5S2V5XSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzb2x2ZSh7fSk7XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKHt9KTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIERlbGV0ZUtleVN0YXJ0V2l0aChrZXlDYWNoZTogc3RyaW5nLCBpc01ENSA9IGZhbHNlKSB7XG4gICAga2V5Q2FjaGUgPSBpc01ENSA/IG1kNShrZXlDYWNoZSkgOiBrZXlDYWNoZTtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoVXRpbHNDYWNoZS5Mb2NhbFN0b3JhZ2UpO1xuXG4gICAgaWYgKCFrZXlzIHx8ICFrZXlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKGtleS5zdGFydHNXaXRoKGtleUNhY2hlKSkge1xuICAgICAgICB0aGlzLkNsZWFyKGtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIERlbGV0ZURhdGFiYXNlSW5kZXhEQihkYk5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRiTmFtZSk7XG5cbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnRGF0YWJhc2UgZGVsZXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25lcnJvciA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZGVsZXRpbmcgZGF0YWJhc2U6JywgKGV2ZW50LnRhcmdldCBhcyBJREJSZXF1ZXN0KS5lcnJvcik7XG4gICAgICAgIHJlamVjdCgoZXZlbnQudGFyZ2V0IGFzIElEQlJlcXVlc3QpLmVycm9yKTtcbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25ibG9ja2VkID0gKCkgPT4ge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0RlbGV0ZSByZXF1ZXN0IGlzIGJsb2NrZWQnKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
package/esm2022/pattern.mjs
CHANGED
|
@@ -1,62 +1,62 @@
|
|
|
1
1
|
/* eslint-disable no-useless-escape */
|
|
2
|
-
export const
|
|
2
|
+
export const patternEmail = () => {
|
|
3
3
|
return /^[A-z0-9]+[A-z0-9\_\.\+\-]*[A-z0-9]@[A-z0-9]+[A-z0-9\_\.\+\-]*[A-z0-9]\.[A-z0-9]+[A-z0-9\_\.\+\-]*[A-z0-9]$/;
|
|
4
4
|
};
|
|
5
|
-
export const
|
|
5
|
+
export const patternUrl = () => {
|
|
6
6
|
return /^(http|https|ftp):(\/){2}[^\s]+[.]{1}[^\s]+$/;
|
|
7
7
|
};
|
|
8
|
-
export const
|
|
8
|
+
export const patternHostUrl = () => {
|
|
9
9
|
return /^((https|http|ftp):[/]{2}[^/\s]+)/;
|
|
10
10
|
};
|
|
11
|
-
export const
|
|
11
|
+
export const patternDomain = () => {
|
|
12
12
|
return /^([a-zA-Z0-9])(([a-z0-9-]{1,61})?[a-z0-9]{1})?(\.[a-z0-9](([a-z0-9-]{1,61})?[a-z0-9]{1})?)?(\.[a-zA-Z]{2,4})+$/;
|
|
13
13
|
};
|
|
14
|
-
export const
|
|
14
|
+
export const patternMobilePhone = () => {
|
|
15
15
|
return /^(\+?84|0|84)([0-9]{9})$/;
|
|
16
16
|
};
|
|
17
|
-
export const
|
|
17
|
+
export const patternPhone = () => {
|
|
18
18
|
return /^(\+?84|[0-9]|84)([0-9]{2,9})$/;
|
|
19
19
|
};
|
|
20
|
-
export const
|
|
20
|
+
export const patternPhoneNormal = () => {
|
|
21
21
|
return /^(\+?84|[0-9]|84)([0-9]{9,10})$/;
|
|
22
22
|
};
|
|
23
|
-
export const
|
|
23
|
+
export const patternNumber = () => {
|
|
24
24
|
return /\d+/g;
|
|
25
25
|
};
|
|
26
|
-
export const
|
|
26
|
+
export const patternEncodeUri = () => {
|
|
27
27
|
return /%([0-9A-F]{2})/g;
|
|
28
28
|
};
|
|
29
|
-
export const
|
|
29
|
+
export const patternName = () => {
|
|
30
30
|
return /^\w+[A-Za-z\s\d]+$/;
|
|
31
31
|
};
|
|
32
|
-
export const
|
|
32
|
+
export const patternNameUtf8 = () => {
|
|
33
33
|
return /^[ àáảãạăắằẵặẳâầấậẫẩđèéẻẽẹêềếểễệìíỉĩịòóỏõọôồốổỗộơờớởỡợùúủũụưừứửữựỳýỷỹÀÁẢÃẠĂẮẰẴẶẲÂẦẤẬẪẨĐÈÉẺẼẸÊỀẾỂỄỆÌÍỈĨỊÒÓỎÕỌÔỒỐỔỖỘƠỜỚỞỠỢÙÚỦŨỤƯỪỨỬỮỰỲÝỶỸA-Za-z0-9]+$/;
|
|
34
34
|
};
|
|
35
|
-
export const
|
|
35
|
+
export const patternNameSpecial = () => {
|
|
36
36
|
return /[~!@#$%^&*()-+=<>,?\/\\:;"']/;
|
|
37
37
|
};
|
|
38
|
-
export const
|
|
38
|
+
export const patternNameProfile = () => {
|
|
39
39
|
return /([\w\W\d\s]+)+/;
|
|
40
40
|
};
|
|
41
|
-
export const
|
|
41
|
+
export const patternEmoji = () => {
|
|
42
42
|
return /(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/g;
|
|
43
43
|
};
|
|
44
|
-
export const
|
|
44
|
+
export const patternRuleFieldReplace = () => {
|
|
45
45
|
return /[{]{2}[a-zA-Z_-]+[}]{2}/g;
|
|
46
46
|
};
|
|
47
|
-
export const
|
|
47
|
+
export const patternGetFieldByRuleFieldReplace = () => {
|
|
48
48
|
return /[a-zA-Z_-]+/g;
|
|
49
49
|
};
|
|
50
|
-
export const
|
|
50
|
+
export const patternPem = () => {
|
|
51
51
|
return /^(0|1):([0-9]{1,2}):(\{\{path-api\}\}):([a-zA-Z0-9\/]+)$/g;
|
|
52
52
|
};
|
|
53
|
-
export const
|
|
53
|
+
export const patternTax = () => {
|
|
54
54
|
return /^([0-9]){10}(-[0-9]{3})?$/;
|
|
55
55
|
};
|
|
56
|
-
export const
|
|
56
|
+
export const patternKey = () => {
|
|
57
57
|
return /^([0-9]){10}(-[0-9]{3})?$/;
|
|
58
58
|
};
|
|
59
|
-
export const
|
|
59
|
+
export const patternAccount = () => {
|
|
60
60
|
return /^(?=.*@)[a-z0-9@._-]{2,63}$/;
|
|
61
61
|
};
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvdXRpbHMvc3JjL3BhdHRlcm4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0NBQXNDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxHQUFHLEVBQUU7SUFDN0IsT0FBTyw2R0FBNkcsQ0FBQztBQUN6SCxDQUFDLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFO0lBQzNCLE9BQU8sOENBQThDLENBQUM7QUFDMUQsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQUcsRUFBRTtJQUMvQixPQUFPLG1DQUFtQyxDQUFDO0FBQy9DLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDOUIsT0FBTyxnSEFBZ0gsQ0FBQztBQUM1SCxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLEVBQUU7SUFDbkMsT0FBTywwQkFBMEIsQ0FBQztBQUN0QyxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFO0lBQzdCLE9BQU8sZ0NBQWdDLENBQUM7QUFDNUMsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxFQUFFO0lBQ25DLE9BQU8saUNBQWlDLENBQUM7QUFDN0MsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtJQUM5QixPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUU7SUFDakMsT0FBTyxpQkFBaUIsQ0FBQztBQUM3QixDQUFDLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFO0lBQzVCLE9BQU8sb0JBQW9CLENBQUM7QUFDaEMsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRTtJQUNoQyxPQUFPLHFKQUFxSixDQUFDO0FBQ2pLLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEdBQUcsRUFBRTtJQUNuQyxPQUFPLDhCQUE4QixDQUFDO0FBQzFDLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEdBQUcsRUFBRTtJQUNuQyxPQUFPLGdCQUFnQixDQUFDO0FBQzVCLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxHQUFHLEVBQUU7SUFDN0IsT0FBTyxvR0FBb0csQ0FBQztBQUNoSCxDQUFDLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLEVBQUU7SUFDeEMsT0FBTywwQkFBMEIsQ0FBQztBQUN0QyxDQUFDLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRyxHQUFHLEVBQUU7SUFDbEQsT0FBTyxjQUFjLENBQUM7QUFDMUIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEdBQUcsRUFBRTtJQUMzQixPQUFPLDJEQUEyRCxDQUFDO0FBQ3ZFLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxHQUFHLEVBQUU7SUFDM0IsT0FBTywyQkFBMkIsQ0FBQztBQUN2QyxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFO0lBQzNCLE9BQU8sMkJBQTJCLENBQUM7QUFDdkMsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQUcsRUFBRTtJQUMvQixPQUFPLDZCQUE2QixDQUFDO0FBQ3pDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVzZWxlc3MtZXNjYXBlICovXG5leHBvcnQgY29uc3QgcGF0dGVybkVtYWlsID0gKCkgPT4ge1xuICAgIHJldHVybiAvXltBLXowLTldK1tBLXowLTlcXF9cXC5cXCtcXC1dKltBLXowLTldQFtBLXowLTldK1tBLXowLTlcXF9cXC5cXCtcXC1dKltBLXowLTldXFwuW0EtejAtOV0rW0EtejAtOVxcX1xcLlxcK1xcLV0qW0EtejAtOV0kLztcbn1cbmV4cG9ydCBjb25zdCBwYXR0ZXJuVXJsID0gKCkgPT4ge1xuICAgIHJldHVybiAvXihodHRwfGh0dHBzfGZ0cCk6KFxcLyl7Mn1bXlxcc10rWy5dezF9W15cXHNdKyQvO1xufVxuXG5leHBvcnQgY29uc3QgcGF0dGVybkhvc3RVcmwgPSAoKSA9PiB7XG4gICAgcmV0dXJuIC9eKChodHRwc3xodHRwfGZ0cCk6Wy9dezJ9W14vXFxzXSspLztcbn1cblxuZXhwb3J0IGNvbnN0IHBhdHRlcm5Eb21haW4gPSAoKSA9PiB7XG4gICAgcmV0dXJuIC9eKFthLXpBLVowLTldKSgoW2EtejAtOS1dezEsNjF9KT9bYS16MC05XXsxfSk/KFxcLlthLXowLTldKChbYS16MC05LV17MSw2MX0pP1thLXowLTldezF9KT8pPyhcXC5bYS16QS1aXXsyLDR9KSskLztcbn1cblxuZXhwb3J0IGNvbnN0IHBhdHRlcm5Nb2JpbGVQaG9uZSA9ICgpID0+IHtcbiAgICByZXR1cm4gL14oXFwrPzg0fDB8ODQpKFswLTldezl9KSQvO1xufVxuXG5leHBvcnQgY29uc3QgcGF0dGVyblBob25lID0gKCkgPT4ge1xuICAgIHJldHVybiAvXihcXCs/ODR8WzAtOV18ODQpKFswLTldezIsOX0pJC87XG59XG5cbmV4cG9ydCBjb25zdCBwYXR0ZXJuUGhvbmVOb3JtYWwgPSAoKSA9PiB7XG4gICAgcmV0dXJuIC9eKFxcKz84NHxbMC05XXw4NCkoWzAtOV17OSwxMH0pJC87XG59XG5cbmV4cG9ydCBjb25zdCBwYXR0ZXJuTnVtYmVyID0gKCkgPT4ge1xuICAgIHJldHVybiAvXFxkKy9nO1xufVxuZXhwb3J0IGNvbnN0IHBhdHRlcm5FbmNvZGVVcmkgPSAoKSA9PiB7XG4gICAgcmV0dXJuIC8lKFswLTlBLUZdezJ9KS9nO1xufVxuZXhwb3J0IGNvbnN0IHBhdHRlcm5OYW1lID0gKCkgPT4ge1xuICAgIHJldHVybiAvXlxcdytbQS1aYS16XFxzXFxkXSskLztcbn1cbmV4cG9ydCBjb25zdCBwYXR0ZXJuTmFtZVV0ZjggPSAoKSA9PiB7XG4gICAgcmV0dXJuIC9eWyDDoMOh4bqjw6PhuqHEg+G6r+G6seG6teG6t+G6s8Oi4bqn4bql4bqt4bqr4bqpxJHDqMOp4bq74bq94bq5w6rhu4Hhur/hu4Phu4Xhu4fDrMOt4buJxKnhu4vDssOz4buPw7Xhu43DtOG7k+G7keG7leG7l+G7mcah4bud4bub4buf4buh4bujw7nDuuG7p8Wp4bulxrDhu6vhu6nhu63hu6/hu7Hhu7PDveG7t+G7ucOAw4HhuqLDg+G6oMSC4bqu4bqw4bq04bq24bqyw4LhuqbhuqThuqzhuqrhuqjEkMOIw4nhurrhurzhurjDiuG7gOG6vuG7guG7hOG7hsOMw43hu4jEqOG7isOSw5Phu47DleG7jMOU4buS4buQ4buU4buW4buYxqDhu5zhu5rhu57hu6Dhu6LDmcOa4bumxajhu6TGr+G7quG7qOG7rOG7ruG7sOG7ssOd4bu24bu4QS1aYS16MC05XSskLztcbn1cbmV4cG9ydCBjb25zdCBwYXR0ZXJuTmFtZVNwZWNpYWwgPSAoKSA9PiB7XG4gICAgcmV0dXJuIC9bfiFAIyQlXiYqKCktKz08Piw/XFwvXFxcXDo7XCInXS87XG59XG5leHBvcnQgY29uc3QgcGF0dGVybk5hbWVQcm9maWxlID0gKCkgPT4ge1xuICAgIHJldHVybiAvKFtcXHdcXFdcXGRcXHNdKykrLztcbn1cbmV4cG9ydCBjb25zdCBwYXR0ZXJuRW1vamkgPSAoKSA9PiB7XG4gICAgcmV0dXJuIC8oXFx1MDBhOXxcXHUwMGFlfFtcXHUyMDAwLVxcdTMzMDBdfFxcdWQ4M2NbXFx1ZDAwMC1cXHVkZmZmXXxcXHVkODNkW1xcdWQwMDAtXFx1ZGZmZl18XFx1ZDgzZVtcXHVkMDAwLVxcdWRmZmZdKS9nO1xufVxuZXhwb3J0IGNvbnN0IHBhdHRlcm5SdWxlRmllbGRSZXBsYWNlID0gKCkgPT4ge1xuICAgIHJldHVybiAvW3tdezJ9W2EtekEtWl8tXStbfV17Mn0vZztcbn1cbmV4cG9ydCBjb25zdCBwYXR0ZXJuR2V0RmllbGRCeVJ1bGVGaWVsZFJlcGxhY2UgPSAoKSA9PiB7XG4gICAgcmV0dXJuIC9bYS16QS1aXy1dKy9nO1xufVxuXG5leHBvcnQgY29uc3QgcGF0dGVyblBlbSA9ICgpID0+IHtcbiAgICByZXR1cm4gL14oMHwxKTooWzAtOV17MSwyfSk6KFxce1xce3BhdGgtYXBpXFx9XFx9KTooW2EtekEtWjAtOVxcL10rKSQvZztcbn1cblxuZXhwb3J0IGNvbnN0IHBhdHRlcm5UYXggPSAoKSA9PiB7XG4gICAgcmV0dXJuIC9eKFswLTldKXsxMH0oLVswLTldezN9KT8kLztcbn1cblxuZXhwb3J0IGNvbnN0IHBhdHRlcm5LZXkgPSAoKSA9PiB7XG4gICAgcmV0dXJuIC9eKFswLTldKXsxMH0oLVswLTldezN9KT8kLztcbn1cblxuZXhwb3J0IGNvbnN0IHBhdHRlcm5BY2NvdW50ID0gKCkgPT4ge1xuICAgIHJldHVybiAvXig/PS4qQClbYS16MC05QC5fLV17Miw2M30kLztcbn1cbiJdfQ==
|
|
@@ -1457,64 +1457,64 @@ const CHARACTER_DATA_EMPTY = '__';
|
|
|
1457
1457
|
const DEFAULT_START_PAGE_0 = 'defaultStartPage0';
|
|
1458
1458
|
|
|
1459
1459
|
/* eslint-disable no-useless-escape */
|
|
1460
|
-
const
|
|
1460
|
+
const patternEmail = () => {
|
|
1461
1461
|
return /^[A-z0-9]+[A-z0-9\_\.\+\-]*[A-z0-9]@[A-z0-9]+[A-z0-9\_\.\+\-]*[A-z0-9]\.[A-z0-9]+[A-z0-9\_\.\+\-]*[A-z0-9]$/;
|
|
1462
1462
|
};
|
|
1463
|
-
const
|
|
1463
|
+
const patternUrl = () => {
|
|
1464
1464
|
return /^(http|https|ftp):(\/){2}[^\s]+[.]{1}[^\s]+$/;
|
|
1465
1465
|
};
|
|
1466
|
-
const
|
|
1466
|
+
const patternHostUrl = () => {
|
|
1467
1467
|
return /^((https|http|ftp):[/]{2}[^/\s]+)/;
|
|
1468
1468
|
};
|
|
1469
|
-
const
|
|
1469
|
+
const patternDomain = () => {
|
|
1470
1470
|
return /^([a-zA-Z0-9])(([a-z0-9-]{1,61})?[a-z0-9]{1})?(\.[a-z0-9](([a-z0-9-]{1,61})?[a-z0-9]{1})?)?(\.[a-zA-Z]{2,4})+$/;
|
|
1471
1471
|
};
|
|
1472
|
-
const
|
|
1472
|
+
const patternMobilePhone = () => {
|
|
1473
1473
|
return /^(\+?84|0|84)([0-9]{9})$/;
|
|
1474
1474
|
};
|
|
1475
|
-
const
|
|
1475
|
+
const patternPhone = () => {
|
|
1476
1476
|
return /^(\+?84|[0-9]|84)([0-9]{2,9})$/;
|
|
1477
1477
|
};
|
|
1478
|
-
const
|
|
1478
|
+
const patternPhoneNormal = () => {
|
|
1479
1479
|
return /^(\+?84|[0-9]|84)([0-9]{9,10})$/;
|
|
1480
1480
|
};
|
|
1481
|
-
const
|
|
1481
|
+
const patternNumber = () => {
|
|
1482
1482
|
return /\d+/g;
|
|
1483
1483
|
};
|
|
1484
|
-
const
|
|
1484
|
+
const patternEncodeUri = () => {
|
|
1485
1485
|
return /%([0-9A-F]{2})/g;
|
|
1486
1486
|
};
|
|
1487
|
-
const
|
|
1487
|
+
const patternName = () => {
|
|
1488
1488
|
return /^\w+[A-Za-z\s\d]+$/;
|
|
1489
1489
|
};
|
|
1490
|
-
const
|
|
1490
|
+
const patternNameUtf8 = () => {
|
|
1491
1491
|
return /^[ àáảãạăắằẵặẳâầấậẫẩđèéẻẽẹêềếểễệìíỉĩịòóỏõọôồốổỗộơờớởỡợùúủũụưừứửữựỳýỷỹÀÁẢÃẠĂẮẰẴẶẲÂẦẤẬẪẨĐÈÉẺẼẸÊỀẾỂỄỆÌÍỈĨỊÒÓỎÕỌÔỒỐỔỖỘƠỜỚỞỠỢÙÚỦŨỤƯỪỨỬỮỰỲÝỶỸA-Za-z0-9]+$/;
|
|
1492
1492
|
};
|
|
1493
|
-
const
|
|
1493
|
+
const patternNameSpecial = () => {
|
|
1494
1494
|
return /[~!@#$%^&*()-+=<>,?\/\\:;"']/;
|
|
1495
1495
|
};
|
|
1496
|
-
const
|
|
1496
|
+
const patternNameProfile = () => {
|
|
1497
1497
|
return /([\w\W\d\s]+)+/;
|
|
1498
1498
|
};
|
|
1499
|
-
const
|
|
1499
|
+
const patternEmoji = () => {
|
|
1500
1500
|
return /(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/g;
|
|
1501
1501
|
};
|
|
1502
|
-
const
|
|
1502
|
+
const patternRuleFieldReplace = () => {
|
|
1503
1503
|
return /[{]{2}[a-zA-Z_-]+[}]{2}/g;
|
|
1504
1504
|
};
|
|
1505
|
-
const
|
|
1505
|
+
const patternGetFieldByRuleFieldReplace = () => {
|
|
1506
1506
|
return /[a-zA-Z_-]+/g;
|
|
1507
1507
|
};
|
|
1508
|
-
const
|
|
1508
|
+
const patternPem = () => {
|
|
1509
1509
|
return /^(0|1):([0-9]{1,2}):(\{\{path-api\}\}):([a-zA-Z0-9\/]+)$/g;
|
|
1510
1510
|
};
|
|
1511
|
-
const
|
|
1511
|
+
const patternTax = () => {
|
|
1512
1512
|
return /^([0-9]){10}(-[0-9]{3})?$/;
|
|
1513
1513
|
};
|
|
1514
|
-
const
|
|
1514
|
+
const patternKey = () => {
|
|
1515
1515
|
return /^([0-9]){10}(-[0-9]{3})?$/;
|
|
1516
1516
|
};
|
|
1517
|
-
const
|
|
1517
|
+
const patternAccount = () => {
|
|
1518
1518
|
return /^(?=.*@)[a-z0-9@._-]{2,63}$/;
|
|
1519
1519
|
};
|
|
1520
1520
|
|
|
@@ -1615,5 +1615,5 @@ const convertFileToBase64 = (file) => {
|
|
|
1615
1615
|
* Generated bundle index. Do not edit.
|
|
1616
1616
|
*/
|
|
1617
1617
|
|
|
1618
|
-
export { CHARACTER_DATA_EMPTY, DEFAULT_START_PAGE_0, ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MAX_LENGTH, ERROR_MESSAGE_MAX_VALID, ERROR_MESSAGE_MIN_LENGTH, ERROR_MESSAGE_MIN_VALID, ERROR_MESSAGE_PATTEN_VALID, GetColorById,
|
|
1618
|
+
export { CHARACTER_DATA_EMPTY, DEFAULT_START_PAGE_0, ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MAX_LENGTH, ERROR_MESSAGE_MAX_VALID, ERROR_MESSAGE_MIN_LENGTH, ERROR_MESSAGE_MIN_VALID, ERROR_MESSAGE_PATTEN_VALID, GetColorById, UtilsCache, UtilsCommunicateMicro, UtilsCommunicateMicroKeyGlobal, UtilsHttpParamsRequest, UtilsHttpParamsRequestInstance, UtilsKeyCodeConstant, UtilsLanguageConstants, UtilsUrlSearchParams, checkMouseOverInContainer, checkViewInScreen, cloneDeep, cloneIBoundingClientRect, colorContrastFromOrigin, colorStepContrastFromOrigin, convertFileToBase64, convertObjectToSignal, convertSignalToObject, decrypt, decrypt3rd, deleteUnicode, emojiPattern, encrypt, encrypt3rd, endCodeUrl, escapeHtml, formatDate, formatNumber, generateInterface, get, getColorById, getKeyCacheByArrayObject, getPlatFromBrowser, getViewport, groupBy, isEmbedFrame, isEmpty, isEqual, isNil, keyBy, listColorDefine$1 as listColorDefine, md5, omitBy, patternAccount, patternDomain, patternEmail, patternEmoji, patternEncodeUri, patternGetFieldByRuleFieldReplace, patternHostUrl, patternKey, patternMobilePhone, patternName, patternNameProfile, patternNameSpecial, patternNameUtf8, patternNumber, patternPem, patternPhone, patternPhoneNormal, patternRuleFieldReplace, patternTax, patternUrl, range, removeEmoji, rgbToHex, set, setCaretPosition, setKeyCrypto, setKeyCrypto3rd, setStyles, uniqBy, updateFunctionCheckEmbedFrame, updateFunctionFormatDate, updateFunctionXssFilter, uuid, viewDataNumberByLanguage, xssFilter };
|
|
1619
1619
|
//# sourceMappingURL=libs-ui-utils.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libs-ui-utils.mjs","sources":["../../../../libs-ui/utils/src/dom.ts","../../../../libs-ui/utils/src/url-search-params.ts","../../../../libs-ui/utils/src/crypto.ts","../../../../libs-ui/utils/src/uuid.ts","../../../../libs-ui/utils/src/helpers.ts","../../../../libs-ui/utils/src/color.ts","../../../../libs-ui/utils/src/crypto-3rd.ts","../../../../libs-ui/utils/src/key-code.ts","../../../../libs-ui/utils/src/http-params.ts","../../../../libs-ui/utils/src/language.ts","../../../../libs-ui/utils/src/key-cache.ts","../../../../libs-ui/utils/src/function-check-embed-frame.ts","../../../../libs-ui/utils/src/communicate-micro.ts","../../../../libs-ui/utils/src/cache.ts","../../../../libs-ui/utils/src/format-number.ts","../../../../libs-ui/utils/src/remove-emoji.ts","../../../../libs-ui/utils/src/escape-html.ts","../../../../libs-ui/utils/src/delete-unicode.ts","../../../../libs-ui/utils/src/get-color-by-id.ts","../../../../libs-ui/utils/src/constants.ts","../../../../libs-ui/utils/src/pattern.ts","../../../../libs-ui/utils/src/xss-filter.ts","../../../../libs-ui/utils/src/two-way-signal-object.ts","../../../../libs-ui/utils/src/format-date.ts","../../../../libs-ui/utils/src/encode-url.define.ts","../../../../libs-ui/utils/src/file.ts","../../../../libs-ui/utils/src/libs-ui-utils.ts"],"sourcesContent":["import { Renderer2 } from \"@angular/core\";\nimport { IBoundingClientRect } from \"@libs-ui/interfaces-types\";\n\nexport const getPlatFromBrowser = ()=> {\n const userAgent = navigator.userAgent;\n let tem;\n let match = userAgent.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n\n if (/trident/i.test(match[1])) {\n tem = /\\brv[ :]+(\\d+)/g.exec(userAgent) || [];\n\n return 'IE ' + (tem[1] || '');\n }\n if (match[1] === 'Chrome') {\n tem = userAgent.match(/\\b(OPR|Edge)\\/(\\d+)/);\n if (tem !== null) {\n return tem.slice(1).join(' ').replace('OPR', 'Opera');\n }\n\n }\n match = match[2] ? [match[1], match[2]] : [navigator.appName, navigator.appVersion, '-?'];\n if ((tem = userAgent.match(/version\\/(\\d+)/i)) !== null) {\n match.splice(1, 1, tem[1]);\n }\n\n return match.join(' ');\n}\n\nexport const cloneIBoundingClientRect = (rect: IBoundingClientRect): IBoundingClientRect => {\n return {\n top: rect['top'],\n left: rect['left'],\n width: rect['width'],\n height: rect['height'],\n bottom: rect['bottom']\n };\n}\n\nexport const setStyles = (el: HTMLElement, styles: Record<string, string>, render2: Renderer2): void => {\n Object.keys(styles).forEach((key: string) => render2.setStyle(el, key, styles[key]));\n}\n\nexport const getViewport = (win: Window = window): { width: number; height: number } => {\n const doc = win.document.documentElement,\n body = win.document.getElementsByTagName('body')[0],\n w = win.innerWidth || doc.clientWidth || body.clientWidth,\n h = win.innerHeight || doc.clientHeight || body.clientHeight;\n\n return { width: w, height: h };\n}\n\nexport const setCaretPosition = (element: HTMLTextAreaElement | HTMLInputElement, position: number): void => {\n if (!element || !element.setSelectionRange) {\n return;\n }\n element.focus();\n element.setSelectionRange(position, position);\n}\n\nexport const checkViewInScreen = (container: HTMLElement, element: HTMLElement, elementScroll?: HTMLElement, maxTopLeft?: { top?: number, left?: number }): boolean => {\n if (!container || !element) {\n return false;\n }\n\n const rectContainer = cloneIBoundingClientRect(container.getBoundingClientRect());\n\n if (elementScroll) {\n const rectElementScroll = elementScroll.getBoundingClientRect();\n\n rectContainer['left'] = rectElementScroll.left;\n rectContainer['top'] = rectElementScroll.top;\n\n }\n\n const rectElement = element.getBoundingClientRect();\n const { left, top } = rectElement;\n const topContainer = rectContainer['top'];\n const leftContainer = rectContainer['left'];\n const widthContainer = rectContainer['width'];\n const heightContainer = rectContainer['height'];\n const scrollTopContainer = container.scrollTop;\n const scrollLeftContainer = container.scrollLeft;\n const limitTop = topContainer + scrollTopContainer + heightContainer;\n const limitLeft = leftContainer + scrollLeftContainer + widthContainer;\n\n const maxTopItem = top + (maxTopLeft?.top || 0);\n const maxLeftItem = left + (maxTopLeft?.left || 0);\n\n if (topContainer <= maxTopItem && maxTopItem <= limitTop && leftContainer <= maxLeftItem && maxLeftItem <= limitLeft) {\n return true;\n }\n\n return false;\n};\n\nexport const checkMouseOverInContainer = (mousePosition: { clientX: number; clientY: number }, element?: HTMLElement, rect?: DOMRect): boolean => {\n if (!element && !rect) {\n return false;\n }\n const rectElement = rect || element?.getBoundingClientRect() || {} as DOMRect;\n const { left, top, width, height } = rectElement;\n const limitLeft = left + width;\n const limitTop = top + height;\n const { clientX, clientY } = mousePosition;\n\n if (left <= clientX && clientX <= limitLeft && top <= clientY && clientY <= limitTop) {\n return true;\n }\n\n return false;\n};","export class UtilsUrlSearchParams {\n private static instance: UtilsUrlSearchParams;\n private params: Array<{ key: string, value: string }>;\n constructor(paramString: string) {\n this.params = new Array<{ key: string, value: string }>();\n this.params.length = 0;\n this.params.push(...this.buildParams(paramString));\n }\n\n static getInstance() {\n if (!this.instance) {\n this.instance = new UtilsUrlSearchParams('');\n }\n\n return this.instance;\n }\n\n public static toStringParamObject(params: { [key in string]: string }) {\n const paramsArr: Array<{ key: string, value: string }> = Object.keys(params).map(key => {\n return {\n key,\n value: params[key]\n };\n });\n\n return UtilsUrlSearchParams.ToString(paramsArr);\n }\n\n public static ToString(params: Array<{ key: string, value: string }>) {\n let paramsStr = '';\n\n params.sort((item1, item2) => item1.key.localeCompare(item2.key)).forEach((item) => {\n const { key, value } = item;\n\n paramsStr = `${paramsStr}${paramsStr ? '&' : ''}${key}=${value}`;\n });\n\n return paramsStr;\n }\n\n private buildParams(paramString: string): Array<{ key: string, value: string }> {\n const paramsBuild = new Array<{ key: string, value: string }>();\n\n if (!paramString) {\n return paramsBuild;\n }\n\n const paramsError = paramString.split('?');\n\n if (paramsError.length > 2) {\n paramString = `${paramsError[0]}?${paramsError[1]}&${paramsError.slice(2).join('&')}`;\n }\n\n const params = paramString.replace(/\\S+[?]/g, '').split('&');\n\n if (params) {\n params.forEach(param => {\n if (param.indexOf('=') < 0) {\n return;\n }\n let [key, value] = param.split('=');\n\n key = key.replace(/[?&]+/g, '');\n value = decodeURIComponent(value.replace(/\\+/g, ' '));\n if (!paramsBuild.some(param => param.key === key)) {\n paramsBuild.push({ key, value });\n }\n });\n }\n\n return paramsBuild;\n }\n\n public set(key: string, value: string) {\n const paramByKey = this.params.find(param => param.key === key) as Record<string, string>;\n\n if (!paramByKey) {\n this.params.push({ key, value: decodeURIComponent(value.replace(/\\+/g, ' ')) });\n\n return;\n }\n\n paramByKey['value'] = value;\n }\n\n public get(key: string) {\n return this.params.find(param => param.key === key)?.value;\n }\n\n public has(key: string) {\n return this.params.some(param => param.key === key);\n }\n\n public delete(key: string) {\n const index = this.params.findIndex(param => param.key === key);\n\n if (index >= 0) {\n this.params.splice(index, 1);\n }\n }\n\n public length() {\n return this.params.length;\n }\n\n public toString(params?: Array<{ key: string, value: string }>) {\n params = params || this.params;\n\n return UtilsUrlSearchParams.ToString(params);\n }\n\n public getParamObject() {\n const params = {} as Record<string, string>;\n\n this.params.forEach(item => {\n params[item.key] = item.value;\n });\n\n return params;\n }\n\n public compareParams(param1: string, param2: string) {\n const params1 = this.toString(this.buildParams(param1));\n const params2 = this.toString(this.buildParams(param2));\n\n return params1 === params2;\n }\n\n}\n","\nimport CryptoES from 'crypto-es';\n\nlet key = '12~@#loqwsxacva(3rdhaq12';\n\nexport const setKeyCrypto = (value: string) => {\n if (value.length !== 24 && value.length !== 32) {\n throw Error(`key.length = ${value.length}; Key phải là 1 chuỗi dài 24 hoặc 32 ký tự`);\n }\n key = value;\n};\n\nconst keyStore = () => {\n return key;\n}\n\nexport const encrypt = (plainData: string): string => {\n if (!keyStore()) {\n throw Error(\"lỗi chưa setup key mã hóa\");\n }\n const key = CryptoES.enc.Hex.parse(keyStore());\n const iv = CryptoES.enc.Hex.parse(keyStore());\n const mode = CryptoES.mode.CBC;\n const padding = CryptoES.pad.Pkcs7;\n const options = { iv: iv, mode: mode, padding: padding };\n\n return CryptoES.AES.encrypt(plainData, key, options).toString();\n};\n\nexport const decrypt = (encryptedData: string): string => {\n if (!keyStore()) {\n throw Error(\"lỗi chưa setup key mã hóa\");\n }\n const key = CryptoES.enc.Hex.parse(keyStore());\n const iv = CryptoES.enc.Hex.parse(keyStore());\n const mode = CryptoES.mode.CBC;\n const padding = CryptoES.pad.Pkcs7;\n const options = { iv: iv, mode: mode, padding: padding };\n\n return CryptoES.AES.decrypt(encryptedData, key, options).toString(CryptoES.enc.Utf8);\n};\n\nexport const md5 = (plainData: string) => {\n return CryptoES.MD5(plainData).toString();\n};\n\n","import { md5 } from \"./crypto\";\n\nexport const uuid = (): string => {\n const timestamp = performance.now() * 1000;\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+-=[]{}|;:,.<>?/~';\n let randomString = '';\n\n for (let i = 0; i < 5; i++) {\n randomString += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n const baseString = `${Math.floor(timestamp)}-${randomString}`;\n const charArray = baseString.split('');\n\n for (let i = charArray.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n\n [charArray[i], charArray[j]] = [charArray[j], charArray[i]];\n }\n\n const shuffledString = charArray.join('');\n\n return md5(shuffledString);\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ElementRef, TemplateRef, isSignal } from \"@angular/core\";\nimport { TYPE_OBJECT } from \"@libs-ui/interfaces-types\";\n\n/**Các hàm tương tự thư viện lodash */\nexport const isNil = (value: unknown): value is null | undefined => {\n return value === null || value === undefined;\n};\n\nexport const isEmpty = (value: unknown) => {\n return value === null || value === '' || value === undefined || (typeof value === 'object' && (JSON.stringify(value) === '{}' || JSON.stringify(value) === '[]'));\n};\n\nexport const omitBy = <T>(objData: Record<string, any>, predicate: (val: any) => boolean): T => {\n if (!objData || typeof objData !== 'object' || Array.isArray(objData)) {\n return objData as T;\n }\n const newObj = {} as T;\n\n Object.keys(objData).forEach(key => {\n const valueOfKey = get(objData, key);\n if (!predicate(valueOfKey)) {\n set(newObj, key, valueOfKey)\n }\n })\n return newObj;\n};\n\nexport const get = <T = any>(obj: any, path: string | string[], defaultValue: any = undefined): T => {\n if (obj == null) {\n return defaultValue;\n }\n if (isSignal(obj)) {\n obj = obj();\n }\n const paths = Array.isArray(path) ? path : path.replace(/\\[(\\d+)]/g, '.$1').split('.');\n for (let i = 0; i < paths.length; i++) {\n if (obj == null || !Object.prototype.hasOwnProperty.call(obj, paths[i])) {\n return defaultValue;\n }\n const val = isSignal(obj[paths[i]]) ? obj[paths[i]]() : obj[paths[i]];\n\n obj = val;\n }\n\n return obj;\n};\n\nexport const set = <T = any>(obj: any, path: string | string[], value: any): T => {\n if (!obj || (typeof obj !== \"object\" && !isSignal(obj)) || (isSignal(obj) && typeof obj() !== \"object\")) {\n throw new Error(\"The first argument must be an object\");\n }\n\n const pathArray = Array.isArray(path) ? path : path.replace(/\\[(\\d+)]/g, '.[$1]').split('.');\n\n let current: any = isSignal(obj) ? obj() : obj;\n\n let lastIsSignal = false;\n pathArray.forEach((key, index) => {\n if (index < pathArray.length - 1) {\n if (!(key in current) || typeof current[key] !== \"object\") {\n const nextKey = pathArray[index + 1];\n\n key = key.replace(/\\[(\\d+)]/g, '$1');\n current[key] = /\\[(\\d+)]/g.test(nextKey) ? [] : {};\n }\n current = key ? current[key] : current;\n lastIsSignal = isSignal(current);\n current = lastIsSignal ? current() : current;\n return;\n }\n\n // Gán giá trị ở cuối đường dẫn\n key = key.replace(/\\[(\\d+)]/g, '$1');\n if (lastIsSignal) {\n current.update((data: any) => {\n data[key] = value;\n return { ...data };\n });\n return;\n }\n current[key] = value;\n });\n\n return obj;\n};\n\nexport const cloneDeep = <T = any>(data: any): T => {\n if (data === null || typeof data !== 'object') {\n return data;\n }\n\n if (data instanceof Date) {\n return new Date(data.getTime()) as T;\n }\n\n if (data instanceof RegExp) {\n return new RegExp(data.source, data.flags) as T;\n }\n\n if (data instanceof Map) {\n const mapCopy = new Map();\n data.forEach((val, key) => {\n mapCopy.set(cloneDeep(key), cloneDeep(val));\n });\n return mapCopy as T;\n }\n\n if (data instanceof Set) {\n const setCopy = new Set();\n data.forEach(val => {\n setCopy.add(cloneDeep(val));\n });\n return setCopy as T;\n }\n\n if (Array.isArray(data)) {\n return data.map(item => cloneDeep(item)) as T;\n }\n\n if (isSignal(data)) {\n return cloneDeep(data());\n }\n\n const result: Record<string, any> = {};\n for (const key in data) {\n const value = data[key];\n if (value instanceof TemplateRef || value instanceof ElementRef || value instanceof Element) {\n result[key] = value;\n continue;\n }\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n result[key] = cloneDeep(value);\n }\n }\n\n return result as T;\n};\n\nexport const keyBy = (data: Array<TYPE_OBJECT>, key: string): TYPE_OBJECT => {\n if (!data || !data.length || !key) {\n return {};\n }\n return data.reduce((dir, nextItem) => {\n const valueOfKey = nextItem[key];\n if (typeof valueOfKey !== 'string' && typeof valueOfKey !== 'number') {\n return dir;\n }\n dir[valueOfKey] = nextItem;\n return dir;\n }, {});\n};\n\nexport const groupBy = (data: Array<TYPE_OBJECT>, key: string): TYPE_OBJECT => {\n if (!data || !Object.keys(data).length || !key) {\n return {};\n }\n return data.reduce((dir, nextItem) => {\n const valueOfKey = nextItem[key];\n if (typeof valueOfKey !== 'string' && typeof valueOfKey !== 'number') {\n return dir;\n }\n if (!dir[valueOfKey]) {\n dir[valueOfKey] = [];\n }\n dir[valueOfKey].push(nextItem);\n return dir;\n }, {});\n};\n\nexport const range = (start: number, end?: number, step?: number): Array<number> => {\n if (end === undefined || end === null) {\n end = start;\n start = 0;\n }\n\n if (!step) {\n step = end < 0 ? -1 : 1;\n }\n\n if (end < start && step > 0) {\n step *= -1;\n }\n\n const valueStartByStep = step + start;\n const direction = start < end ? 'asc' : 'desc';\n if ((direction === 'asc' && (valueStartByStep < start || valueStartByStep > end)) || (direction === 'desc' && (valueStartByStep > start || valueStartByStep < end))) {\n return [start];\n }\n\n const arr = new Array<number>();\n\n for (let index = 0; index < Math.abs(end - start); index++) {\n let value = start + index * step;\n if (index === 0) {\n value = start;\n }\n\n if ((direction === 'asc' && (value < start || value > end)) || (direction === 'desc' && (value > start || value < end))) {\n return arr;\n }\n\n arr.push(value);\n }\n\n return arr;\n}\n\nexport const isEqual = (value1: any, value2: any): boolean => {\n if (value1 === value2 || (value1 === null && value2 === null) || (value1 === undefined && value2 === undefined)) {\n return true;\n }\n if (typeof value1 !== 'object' || typeof value2 !== 'object' || (Array.isArray(value1) && !Array.isArray(value2))) {\n return false;\n }\n\n if (Array.isArray(value1)) {\n if (value1.length !== value2.length) {\n return false\n }\n\n return !value1.some((item, index) => !isEqual(item, value2[index]));\n }\n\n if (Object.keys(value1).length !== Object.keys(value2).length) {\n return false;\n }\n return !Object.keys(value1).some((key) => !isEqual(value1[key], value2[key]));\n}\n\nexport const uniqBy = <T>(data: Array<T>, key?: string): Array<T> => {\n if (!key || !data || !data.length || typeof data[0] !== 'object') {\n return Array.from(new Set(data));\n }\n\n const dataUnique = keyBy(data as Array<Record<string, any>>, key);\n\n return Object.keys(dataUnique).map(key => dataUnique[key]);\n}\n\nexport const generateInterface = (obj: any, interfaceName: string): string => {\n const generateType = (value: any): string => {\n if (value === null) {\n return 'null';\n }\n const type = typeof value;\n\n if (type === 'string') {\n return 'string';\n }\n if (type === 'number') {\n return 'number';\n }\n if (type === 'boolean') {\n return 'boolean';\n }\n if (type === 'undefined') {\n return 'any';\n }\n\n if (value instanceof Date) {\n return 'Date';\n }\n\n if (value instanceof RegExp) {\n return 'RegExp';\n }\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return 'Array<any>';\n }\n return `Array<${generateType(value[0])}>`;\n }\n\n if (type === 'object') {\n let interfaceStr = '{\\n';\n for (const key in value) {\n if (Object.prototype.hasOwnProperty.call(value, key)) {\n const valueType = generateType(value[key]);\n interfaceStr += ` ${key}: ${valueType};\\n`;\n }\n }\n interfaceStr += '}';\n return interfaceStr;\n }\n\n return 'any';\n };\n\n const interfaceStr = `interface ${interfaceName} ${generateType(obj)}`;\n return interfaceStr;\n};","\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport interface IColorContrastFromOrigin {\n step: number;\n label: string,\n light: string;\n dark: string\n};\nconst step = 20;\nconst percent = 0.05;\n\nexport const colorStepContrastFromOrigin = (color: string, stepNumber: number) => {\n return colorContrastFromOrigin(color).find(item => item.step === stepNumber);\n};\n\nexport const colorContrastFromOrigin = (color: string): Array<IColorContrastFromOrigin> => {\n const parsedColorsArray = parseColorValues(color);\n const colors: any = [];\n let calculatedShades: Array<string> = [];\n let calculatedTints: Array<string> = [];\n\n if (parsedColorsArray !== null) {\n for (let i = 0; i < parsedColorsArray.length; i++) {\n calculatedShades = calculateShades(parsedColorsArray[i]);\n calculatedTints = calculateTints(parsedColorsArray[i]);\n }\n\n for (let i = 0; i <= step; i++) {\n colors.push({ step: i * 5, label: `${i * 5}%`, dark: `#${calculatedShades[i]}`, light: `#${calculatedTints[i]}` });\n }\n }\n\n return colors;\n};\n\nconst parseColorValues = (colorValues: any) => {\n let colorValuesArray = colorValues.match(/\\b[0-9A-Fa-f]{3}\\b|[0-9A-Fa-f]{6}\\b/g);\n\n if (colorValuesArray) {\n colorValuesArray = colorValuesArray.map((item: any) => {\n if (item.length === 3) {\n let newItem = item.toString().split('');\n\n newItem = newItem.reduce((acc: any, it: any) => {\n return acc + it + it;\n }, '');\n\n return newItem;\n }\n\n return item;\n });\n }\n\n return colorValuesArray;\n};\n\nconst calculateShades = (colorValue: any) => {\n return calculate(colorValue, rgbShade).concat(\"000000\");\n};\n\nconst calculateTints = (colorValue: any) => {\n return calculate(colorValue, rgbTint).concat(\"ffffff\");\n};\n\nconst calculate = (colorValue: any, shadeOrTint: any) => {\n const color = hexToRGB(colorValue);\n const shadeValues: Array<string> = [];\n\n for (let i = 0; i < step; i++) {\n shadeValues[i] = rgbToHex(shadeOrTint(color, i));\n }\n\n return shadeValues;\n};\n\nconst rgbShade = (rgb: any, i: any) => { return { red: rgb.red * (1 - percent * i), green: rgb.green * (1 - percent * i), blue: rgb.blue * (1 - percent * i) } };\nconst rgbTint = (rgb: any, i: any) => { return { red: rgb.red + (255 - rgb.red) * i * percent, green: rgb.green + (255 - rgb.green) * i * percent, blue: rgb.blue + (255 - rgb.blue) * i * percent } };\n\n\nexport const rgbToHex = (rgb: any) => { return intToHex(rgb.red) + intToHex(rgb.green) + intToHex(rgb.blue) };\nconst hexToRGB = (colorValue: any) => { return { red: parseInt(colorValue.substr(0, 2), 16), green: parseInt(colorValue.substr(2, 2), 16), blue: parseInt(colorValue.substr(4, 2), 16) } };\nconst intToHex = (rgbint: any) => { return pad(Math.min(Math.max(Math.round(rgbint), 0), 255).toString(16), 2) };\n\nconst pad = (number: any, length: any) => {\n let str = '' + number;\n\n while (str.length < length) { str = '0' + str }\n\n return str;\n};\n\nexport const listColorDefine: Array<string> = ['#E62222', '#B81B1B', '#EB4E4E', '#F97316', '#C75C12', '#FA8F45', '#FFB700', '#CC9200', '#FFC533', '#84CC16', '#6AA312', '#9dd645', '#00BC62', '#00A757', '#33DA8A', '#06B6D4', '#1B59C4', '#4E8CF7', '#0EA5E9',\n '#1B59C4', '#4E8CF7', '#226FF5', '#1B59C4', '#4E8CF7', '#6366F1', '#4F52C1', '#8285F4', '#5B04B3', '#49038F', '#7C36C2', '#D946EF', '#AE38BF', '#E16BF2', '#EC4899', '#BD3A7A', '#F06DAD', '#F43F5E', '#C3324B', '#F6657E', '#757380', '#5E5C66', '#918F99',\n '#202020', '#1A1A1A', '#4D4D4D'\n];\n\nexport const GetColorById = (str: string): string => {\n let hashString = 0;\n\n if (!str) {\n return '';\n }\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n\n hashString = ((hashString << 5) - hashString) + char;\n hashString = hashString & hashString;\n }\n\n return listColorDefine[Math.abs(hashString) % listColorDefine.length];\n};\n\n\n","\nimport CryptoES from 'crypto-es';\n\nlet key = '12~@#loqwsxacva(3rdhaq12';\n\nexport const setKeyCrypto3rd = (value: string) => {\n if (value.length !== 24 && value.length !== 32) {\n throw Error(`key.length = ${value.length}; Key phải là 1 chuỗi dài 24 hoặc 32 ký tự`);\n }\n key = value;\n};\n\n\nconst keyStore = () => {\n return key;\n}\n\nexport const encrypt3rd = (plainData: string): string => {\n if (!keyStore()) {\n throw Error(\"lỗi chưa setup key mã hóa\");\n }\n const key = CryptoES.enc.Hex.parse(keyStore());\n const iv = CryptoES.enc.Hex.parse(keyStore());\n const mode = CryptoES.mode.CBC;\n const padding = CryptoES.pad.Pkcs7;\n const options = { iv: iv, mode: mode, padding: padding };\n\n return CryptoES.AES.encrypt(plainData, key, options).toString();\n};\n\nexport const decrypt3rd = (encryptedData: string): string => {\n if (!keyStore()) {\n throw Error(\"lỗi chưa setup key mã hóa\");\n }\n const key = CryptoES.enc.Hex.parse(keyStore());\n const iv = CryptoES.enc.Hex.parse(keyStore());\n const mode = CryptoES.mode.CBC;\n const padding = CryptoES.pad.Pkcs7;\n const options = { iv: iv, mode: mode, padding: padding };\n\n return CryptoES.AES.decrypt(encryptedData, key, options).toString(CryptoES.enc.Utf8);\n};","export abstract class UtilsKeyCodeConstant {\n static readonly MAC_ENTER = 3;\n static readonly BACKSPACE = 8;\n static readonly TAB = 9;\n static readonly NUM_CENTER = 12;\n static readonly ENTER = 13;\n static readonly SHIFT = 16;\n static readonly CONTROL = 17;\n static readonly ALT = 18;\n static readonly PAUSE = 19;\n static readonly CAPS_LOCK = 20;\n static readonly ESCAPE = 27;\n static readonly SPACE = 32;\n static readonly PAGE_UP = 33;\n static readonly PAGE_DOWN = 34;\n static readonly END = 35;\n static readonly HOME = 36;\n static readonly LEFT_ARROW = 37;\n static readonly UP_ARROW = 38;\n static readonly RIGHT_ARROW = 39;\n static readonly DOWN_ARROW = 40;\n static readonly PLUS_SIGN = 43;\n static readonly PRINT_SCREEN = 44;\n static readonly INSERT = 45;\n static readonly DELETE = 46;\n static readonly ZERO = 48;\n static readonly ONE = 49;\n static readonly TWO = 50;\n static readonly THREE = 51;\n static readonly FOUR = 52;\n static readonly FIVE = 53;\n static readonly SIX = 54;\n static readonly SEVEN = 55;\n static readonly EIGHT = 56;\n static readonly NINE = 57;\n static readonly FF_SEMICOLON = 59; // Firefox (Gecko) fires this for semicolon instead of 186\n static readonly FF_EQUALS = 61; // Firefox (Gecko) fires this for equals instead of 187\n static readonly QUESTION_MARK = 63;\n static readonly AT_SIGN = 64;\n static readonly A = 65;\n static readonly B = 66;\n static readonly C = 67;\n static readonly D = 68;\n static readonly E = 69;\n static readonly F = 70;\n static readonly G = 71;\n static readonly H = 72;\n static readonly I = 73;\n static readonly J = 74;\n static readonly K = 75;\n static readonly L = 76;\n static readonly M = 77;\n static readonly N = 78;\n static readonly O = 79;\n static readonly P = 80;\n static readonly Q = 81;\n static readonly R = 82;\n static readonly S = 83;\n static readonly T = 84;\n static readonly U = 85;\n static readonly V = 86;\n static readonly W = 87;\n static readonly X = 88;\n static readonly Y = 89;\n static readonly Z = 90;\n static readonly META = 91; // WIN_KEY_LEFT\n static readonly MAC_WK_CMD_LEFT = 91;\n static readonly MAC_WK_CMD_RIGHT = 93;\n static readonly CONTEXT_MENU = 93;\n static readonly NUMPAD_ZERO = 96;\n static readonly NUMPAD_ONE = 97;\n static readonly NUMPAD_TWO = 98;\n static readonly NUMPAD_THREE = 99;\n static readonly NUMPAD_FOUR = 100;\n static readonly NUMPAD_FIVE = 101;\n static readonly NUMPAD_SIX = 102;\n static readonly NUMPAD_SEVEN = 103;\n static readonly NUMPAD_EIGHT = 104;\n static readonly NUMPAD_NINE = 105;\n static readonly NUMPAD_MULTIPLY = 106;\n static readonly NUMPAD_PLUS = 107;\n static readonly NUMPAD_MINUS = 109;\n static readonly NUMPAD_PERIOD = 110;\n static readonly NUMPAD_DIVIDE = 111;\n static readonly F1 = 112;\n static readonly F2 = 113;\n static readonly F3 = 114;\n static readonly F4 = 115;\n static readonly F5 = 116;\n static readonly F6 = 117;\n static readonly F7 = 118;\n static readonly F8 = 119;\n static readonly F9 = 120;\n static readonly F10 = 121;\n static readonly F11 = 122;\n static readonly F12 = 123;\n static readonly NUM_LOCK = 144;\n static readonly SCROLL_LOCK = 145;\n static readonly FIRST_MEDIA = 166;\n static readonly FF_MINUS = 173;\n static readonly MUTE = 173; // Firefox (Gecko) fires 181 for MUTE\n static readonly VOLUME_DOWN = 174; // Firefox (Gecko) fires 182 for VOLUME_DOWN\n static readonly VOLUME_UP = 175; // Firefox (Gecko) fires 183 for VOLUME_UP\n static readonly FF_MUTE = 181;\n static readonly FF_VOLUME_DOWN = 182;\n static readonly LAST_MEDIA = 183;\n static readonly FF_VOLUME_UP = 183;\n static readonly SEMICOLON = 186; // Firefox (Gecko) fires 59 for SEMICOLON\n static readonly EQUALS = 187; // Firefox (Gecko) fires 61 for EQUALS\n static readonly COMMA = 188;\n static readonly DASH = 189; // Firefox (Gecko) fires 173 for DASH/MINUS\n static readonly PERIOD = 190;\n static readonly SLASH = 191;\n static readonly APOSTROPHE = 192;\n static readonly TILDE = 192;\n static readonly OPEN_SQUARE_BRACKET = 219;\n static readonly BACKSLASH = 220;\n static readonly CLOSE_SQUARE_BRACKET = 221;\n static readonly SINGLE_QUOTE = 222;\n static readonly MAC_META = 224;\n }\n ","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpParameterCodec, HttpParams } from \"@angular/common/http\";\n\nexport const UtilsHttpParamsRequestInstance = <Type>(options?: HttpParamsOptions<Type>, instance?: HttpParams): UtilsHttpParamsRequest<Type> => {\n return new UtilsHttpParamsRequest<Type>(options, instance);\n};\n\nexport class UtilsHttpParamsRequest<Type = { pem: string }> extends HttpParams {\n private params!: HttpParams;\n\n constructor(options?: HttpParamsOptions<Type>, instance?: HttpParams) {\n super(options as any);\n\n if (!instance) {\n this.params = new HttpParams(options);\n\n return;\n }\n\n if (instance instanceof UtilsHttpParamsRequest) {\n this.params = instance.getInstance();\n\n return;\n }\n\n if (instance instanceof HttpParams) {\n this.params = instance;\n\n return;\n }\n }\n\n getInstance(): HttpParams {\n return this.params;\n }\n\n setInstance(instance: HttpParams) {\n if (instance instanceof UtilsHttpParamsRequest) {\n this.params = instance.getInstance();\n\n return;\n }\n\n if (instance instanceof HttpParams) {\n this.params = instance;\n\n return;\n }\n }\n\n override set(param: string, value: string | number | boolean): UtilsHttpParamsRequest {\n this.params = this.params.set(param, value);\n\n return this as UtilsHttpParamsRequest;\n }\n\n override has(param: string): boolean {\n return this.params.has(param);\n }\n\n override get(param: string): string | null {\n return this.params.get(param);\n }\n\n override getAll(param: string): string[] | null {\n return this.params.getAll(param);\n }\n\n override keys(): string[] {\n return this.params.keys();\n }\n\n override append(param: string, value: string | number | boolean): HttpParams {\n this.params = this.params.append(param, value);\n\n return this as HttpParams;\n }\n\n override appendAll(params: { [param: string]: string | number | boolean | ReadonlyArray<string | number | boolean> }): HttpParams {\n this.params = this.params.appendAll(params);\n\n return this as HttpParams;\n }\n\n override delete(param: string, value?: string | number | boolean): UtilsHttpParamsRequest {\n this.params = this.params.delete(param, value);\n\n return this as UtilsHttpParamsRequest;\n }\n\n override toString(): string {\n return this.params.toString();\n }\n}\n\nexport declare interface HttpParamsOptions<Type> {\n fromString?: string;\n fromObject?: TYPE_FROM_OBJECT<Type>;\n encoder?: HttpParameterCodec;\n}\nexport type GET_PATH_VARIABLE<TypePath, TypeOther = unknown> = {\n [Property in keyof TypePath as `pathVariable-${Lowercase<string & Property>}`]: TypePath[Property];\n} & TypeOther;\n\ntype TYPE_FROM_OBJECT<Type> = Type extends undefined | null ? { pem: string } : { pem?: string } & {\n [Property in keyof Type]?: Type[Property];\n};","\nexport class UtilsLanguageConstants {\n public static VI = 'vi';\n public static EN = 'en';\n public static defaultLang = UtilsLanguageConstants.VI;\n};","import { HttpParams } from \"@angular/common/http\";\nimport { md5 } from \"./crypto\";\n\nexport const getKeyCacheByArrayObject = (keyCache: string, argumentsValue?: Array<unknown>): string =>{\n if (!keyCache || !argumentsValue) {\n return '';\n }\n let keyBuild = `${JSON.stringify(argumentsValue.slice(1))}-key-cache-plus`;\n\n if (argumentsValue && argumentsValue[0] instanceof HttpParams) {\n const httpParams = argumentsValue[0];\n const keys = argumentsValue[0].keys().sort((str1, str2) => str1.localeCompare(str2));\n\t\t\tkeys.forEach(key => {\n\t\t\t\t\tkeyBuild = `${keyBuild}${JSON.stringify(httpParams.get(key))}`;\n\t\t\t});\n }\n const keyCachePlus = md5(keyBuild);\n const keyCacheMD5 = md5(keyCache);\n\n return `${keyCacheMD5}-${md5(`${keyCacheMD5}-${keyCachePlus}`)}`;\n}\n\n ","let functionCheck = () => {\n return window.parent !== window.top;\n}\nexport const updateFunctionCheckEmbedFrame = (functionCustom: () => boolean) => {\n functionCheck = functionCustom;\n}\n\nexport const isEmbedFrame = (): boolean => {\n return functionCheck();\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Subject, filter, fromEvent, takeUntil } from \"rxjs\";\nimport { decrypt, encrypt } from \"./crypto\";\nimport { decrypt3rd, encrypt3rd } from \"./crypto-3rd\";\nimport { isEmbedFrame } from \"./function-check-embed-frame\";\nimport { UtilsCache } from \"./cache\";\nexport class UtilsCommunicateMicroKeyGlobal {\n public static KEY_MESSAGE_MODAL = 'LIBS_UI_MODEL_EVENT';\n}\n\nexport class UtilsCommunicateMicro {\n public static readonly PREFIX_TYPE = '3RD_INTEGRATE_MICRO_SITE_';\n private static readonly KEY_GET_ALL_MESSAGE = 'MICRO_SITES_ALL_MESSAGE';\n private static initdEvent?: boolean;\n private static subs: Map<string, Subject<MessageEvent>> = new Map();\n private static allMessageSub: Subject<MessageEvent> = new Subject();\n\n public static initEvent(currentWindow: Window, onDestroy: Subject<void>) {\n if (this.initdEvent) {\n return;\n }\n this.initdEvent = true;\n if (!this.subs.get(UtilsCommunicateMicro.KEY_GET_ALL_MESSAGE)) {\n this.subs.set(UtilsCommunicateMicro.KEY_GET_ALL_MESSAGE, UtilsCommunicateMicro.allMessageSub);\n }\n\n fromEvent<MessageEvent>(currentWindow, 'message').pipe(takeUntil(onDestroy)).subscribe(e => {\n const event = { data: { ...e.data } } as MessageEvent;\n\n const data = event.data;\n const type = data.type;\n\n if (!type) {\n return this.allMessageSub.next(event);\n }\n const sub = UtilsCommunicateMicro.GetMessage(type);\n\n if (!type || !data.response) {\n return;\n }\n try {\n if (type.includes(UtilsCommunicateMicro.PREFIX_TYPE)) {\n\n data.response = JSON.parse(decrypt3rd(data.response));\n sub.next(event);\n this.allMessageSub.next(event);\n\n return;\n }\n data.response = JSON.parse(decrypt(data.response));\n sub.next(event);\n this.allMessageSub.next(event);\n } catch (error) {\n console.log(error);\n sub.next(event);\n this.allMessageSub.next(event);\n }\n });\n\n UtilsCommunicateMicro.GetMessage(UtilsCache.typeKeyClearLocalStorage).pipe(filter(e => e.data.response !== UtilsCache.idService), takeUntil(onDestroy)).subscribe(() => {\n console.log('clear all cache by event');\n UtilsCache.ClearAll();\n });\n }\n\n static PostMessageToParent(data: any) {\n data = this.convertData(data);\n try {\n if (isEmbedFrame()) {\n window?.parent?.postMessage(data, \"*\");\n\n return;\n }\n\n window?.top?.postMessage(data, \"*\");\n } catch (error) {\n console.log(error);\n }\n }\n\n static PostMessageToChildren(data: any) {\n data = this.convertData(data);\n const iframes = document.querySelectorAll(\"iframe\");\n\n Array.from(iframes).forEach(iframe => {\n iframe?.contentWindow?.postMessage(data, '*');\n });\n\n }\n\n static PostMessageToOpener(data: any) {\n if (!window.opener) {\n return;\n }\n data = this.convertData(data);\n\n window.opener.postMessage(data, '*');\n }\n\n private static convertData(data: any) {\n if (!data || !data.type || !data.response) {\n return data;\n }\n data = { ...data };\n const type = data.type;\n\n if (type.includes(this.PREFIX_TYPE)) {\n try {\n JSON.parse(decrypt3rd(data.response));\n\n return data;\n } catch (_) {\n data.response = encrypt3rd(JSON.stringify(data.response));\n\n return data;\n }\n\n }\n try {\n JSON.parse(decrypt(data.response));\n\n return data;\n } catch (_) {\n data.response = encrypt(JSON.stringify(data.response));\n\n return data;\n }\n }\n\n static GetMessage(messageType: string | Array<string>): Subject<MessageEvent> {\n if (!this.initdEvent) {\n throw Error(\"chưa khơi tạo hàm lắng nghe sự kiện, gọi UtilsCommunicateMicro.initEvent(window) tại root component\")\n }\n if (typeof messageType === 'string') {\n let sub = this.subs.get(messageType);\n\n if (!sub) {\n sub = new Subject();\n this.subs.set(messageType, sub);\n\n return sub;\n }\n\n return sub;\n }\n if (!Array.isArray(messageType) || !messageType.length) {\n throw new Error('message type empty');\n }\n const types = messageType.sort().join(';');\n\n let sub = this.subs.get(types);\n\n if (sub) {\n return sub;\n }\n\n sub = new Subject();\n this.subs.set(types, sub);\n this.initSubject(sub, messageType);\n\n return sub;\n }\n\n private static initSubject(subRoot: Subject<MessageEvent>, messageType: Array<string>) {\n messageType.forEach(key => {\n this.GetMessage(key).subscribe(e => {\n subRoot.next(e);\n });\n });\n }\n}\n","/* eslint-disable no-async-promise-executor */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { signal } from '@angular/core';\nimport { UtilsCommunicateMicro } from './communicate-micro';\nimport { decrypt, encrypt, md5 } from './crypto';\nimport { getPlatFromBrowser } from './dom';\nimport { isEmbedFrame } from './function-check-embed-frame';\nimport { isNil } from './helpers';\nimport { UtilsLanguageConstants } from './language';\nimport { uuid } from './uuid';\nimport { filter } from 'rxjs';\n\nexport class UtilsCache {\n public static readonly CACHE_EXPIRE_TIME_DEFAULT = 5 * 60;\n public static readonly CACHE_EXPIRE_NONE = -1;\n public static readonly idService = uuid();\n public static typeKeyClearLocalStorage = 'LIBS_UI_CLEAR_LOCAL_STORAGE_EVENT';\n\n private static languageKeyCache = 'SR3xQKxHgffiCevPQRralg';\n private static listKeyKeepWhenClearALll = Array<string>();\n private static initdEvent?: boolean;\n private static language = signal<string>(UtilsLanguageConstants.defaultLang);\n private static storage: { [key: string]: unknown };\n private static dbName = 'libs-ui-cache';\n private static itemIndexByKey = 'key';\n private static dbVersion = 1;\n private static db: IDBDatabase | null = null;\n\n public static init(config: { indexedDBName?: string, languageKeyCache?: string, typeKeyClearLocalStorage?: string, listKeyKeepWhenClearAll?: Array<string> }) {\n if (UtilsCache.initdEvent) {\n return;\n }\n UtilsCache.initdEvent = true;\n if (config.indexedDBName) {\n UtilsCache.dbName = config.indexedDBName;\n }\n if (config.typeKeyClearLocalStorage) {\n UtilsCache.typeKeyClearLocalStorage = config.typeKeyClearLocalStorage;\n }\n if (config.listKeyKeepWhenClearAll) {\n UtilsCache.listKeyKeepWhenClearALll = config.listKeyKeepWhenClearAll;\n }\n if (config.languageKeyCache) {\n UtilsCache.languageKeyCache = config.languageKeyCache;\n }\n this.language.set(UtilsCache.Get(UtilsCache.languageKeyCache, UtilsLanguageConstants.defaultLang));\n }\n\n public static setLang(lang: string) {\n if (lang !== UtilsLanguageConstants.VI && lang !== UtilsLanguageConstants.EN) {\n throw Error('Language support vi | en');\n }\n UtilsCache.language.set(lang);\n UtilsCache.Set(UtilsCache.languageKeyCache, lang);\n }\n\n public static getLang() {\n return UtilsCache.language();\n }\n\n private static openDB() {\n return new Promise(resolve => {\n const request = indexedDB.open(UtilsCache.dbName, UtilsCache.dbVersion);\n\n request.onupgradeneeded = (event: IDBVersionChangeEvent) => {\n const db = (event.target as IDBOpenDBRequest).result;\n\n if (!db.objectStoreNames.contains(UtilsCache.dbName)) {\n const objectStore = db.createObjectStore(UtilsCache.dbName, { keyPath: UtilsCache.itemIndexByKey, autoIncrement: true });\n\n objectStore.createIndex(UtilsCache.itemIndexByKey, UtilsCache.itemIndexByKey, { unique: true });\n }\n };\n\n request.onsuccess = () => {\n UtilsCache.db = request.result;\n resolve(true);\n };\n\n request.onerror = (event) => {\n console.error('Error opening IndexedDB:', event);\n resolve(false);\n };\n });\n }\n\n private static async getObjectStore() {\n if (!UtilsCache.db) {\n await UtilsCache.openDB();\n }\n const transaction = UtilsCache.db?.transaction([UtilsCache.dbName], 'readwrite');\n if (!transaction) {\n return null;\n }\n\n return transaction.objectStore(UtilsCache.dbName);\n }\n\n private static get LocalStorage(): any {\n try {\n if (typeof window.localStorage !== 'undefined') {\n const OS = getPlatFromBrowser();\n\n if (OS.includes('Safari') && parseFloat(OS.split(' ').pop() || '0') >= 16) {\n\n return this.getLocalStorageFakeOnSafari();\n }\n\n return localStorage;\n }\n\n return this.getLocalStorageFake();\n } catch (error) {\n console.log(error);\n return this.getLocalStorageFake();\n }\n }\n\n private static getLocalStorageFakeOnSafari() {\n if (typeof window.localStorage !== 'undefined' && !UtilsCache.storage && Object.keys(localStorage).length) {\n this.storage = { ...localStorage };\n }\n\n return {\n setItem: (key: string, value: string) => {\n localStorage.setItem(key, value);\n this.storage[key] = value;\n },\n getItem: (key: string) => {\n const value = localStorage.getItem(key);\n\n if (value) {\n return value;\n }\n\n if (!this.storage || isNil(this.storage[key])) {\n return null;\n }\n\n localStorage.setItem(key, this.storage[key] as string);\n\n return this.storage?.[key];\n },\n removeItem: (key: string) => {\n delete this.storage?.[key];\n localStorage.removeItem(key);\n },\n clear: () => {\n this.storage = {};\n localStorage.clear();\n }\n };\n }\n\n private static getLocalStorageFake() {\n if (!UtilsCache.storage) {\n this.storage = {};\n }\n\n return {\n setItem: (key: string, value: unknown) => {\n this.storage[key] = value;\n },\n getItem: (key: string) => {\n return this.storage?.[key];\n },\n removeItem: (key: string) => {\n delete this.storage?.[key];\n },\n clear: () => {\n this.storage = {};\n }\n };\n }\n\n public static async GetAsync<T = any>(key: string, default_value?: any, isKeyMD5 = false): Promise<T> {\n key = isKeyMD5 ? key : md5(key);\n\n return new Promise<T>(async (resolve, reject) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n if (!objectStore) {\n\n return resolve(default_value);\n }\n const request = objectStore.get(key);\n\n request.onsuccess = () => {\n if (!request.result) {\n return resolve(default_value);\n }\n const data = JSON.parse(decrypt(request.result.value));\n\n if (data.expire === UtilsCache.CACHE_EXPIRE_NONE) {\n return resolve(data.json);\n }\n const currentMillisecond = (new Date().valueOf() / 1000);\n\n if (data.expire < currentMillisecond) {\n\n return resolve(default_value);\n }\n\n return resolve(data.json);\n };\n\n request.onerror = () => {\n reject(request.error);\n };\n });\n }\n\n public static Get<T = any>(key: string, default_value?: any): T { // support cho những file không thể inject UtilsCache\n if (!key) {\n return this.GetDefaultValueBySpecificKey(key, default_value);\n }\n const cachedData = this.LocalStorage.getItem(key);\n\n if (!cachedData) {\n return this.GetDefaultValueBySpecificKey(key, default_value);\n }\n try {\n const data = JSON.parse(decrypt(cachedData));\n\n if (data.expire === UtilsCache.CACHE_EXPIRE_NONE) {\n return data.value ?? default_value;\n }\n const currentMillisecond = (new Date().valueOf() / 1000);\n\n if (data.expire < currentMillisecond) {\n return this.GetDefaultValueBySpecificKey(key, default_value);\n }\n\n return data.value;\n\n } catch (error) {\n console.log(error);\n\n return this.GetDefaultValueBySpecificKey(key, default_value);\n }\n }\n\n public static GetDefaultValueBySpecificKey(key: string, default_value: any) {\n return default_value;\n\n }\n\n public static async SetAsync<T = any>(key: string, value: any, expireTimeBySecond = UtilsCache.CACHE_EXPIRE_TIME_DEFAULT, isKeyMD5 = false): Promise<T> { // support inject UtilsCache\n return new Promise<T>(async (resolve, reject) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n key = isKeyMD5 ? key : md5(key);\n try {\n const currentMillisecond = expireTimeBySecond === UtilsCache.CACHE_EXPIRE_NONE ? UtilsCache.CACHE_EXPIRE_NONE : (new Date().valueOf() / 1000) + expireTimeBySecond;\n const data: any = {\n value: encrypt(JSON.stringify({ json: value, expire: currentMillisecond })),\n };\n data[UtilsCache.itemIndexByKey] = key;\n\n if (!objectStore) {\n return reject(new Error('Can not open object store'));\n }\n const request = objectStore?.put(data);\n request.onsuccess = () => {\n resolve(request.result as any);\n };\n\n request.onerror = () => {\n reject(request.error);\n };\n\n } catch (error) {\n reject(error);\n }\n });\n }\n\n\n static Set(key: string, value: any, expireTimeBySecond = UtilsCache.CACHE_EXPIRE_TIME_DEFAULT): boolean { // support cho những file không inject UtilsCache\n const currentMillisecond = expireTimeBySecond === UtilsCache.CACHE_EXPIRE_NONE ? UtilsCache.CACHE_EXPIRE_NONE : (new Date().valueOf() / 1000) + expireTimeBySecond;\n const data = {\n value: value,\n expire: currentMillisecond\n };\n\n try {\n this.LocalStorage.setItem(key, encrypt(JSON.stringify(data)));\n return true;\n } catch (error) {\n console.log(error);\n return false;\n }\n }\n\n public static async ClearAsync(key: string, isMD5 = false) {\n return new Promise<void>(async (resolve) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n if (!objectStore) {\n return resolve();\n }\n const request = objectStore.delete(isMD5 ? key : md5(key));\n\n request.onsuccess = () => {\n resolve();\n };\n request.onerror = () => {\n resolve();\n };\n });\n }\n\n\n static Clear(key: string) {\n if (key.includes('kc-callback-')) {\n return;\n }\n this.LocalStorage.removeItem(key);\n }\n\n public static ClearAllAsync() {\n return new Promise<void>(async (resolve, reject) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n if (!objectStore) {\n return resolve();\n }\n\n const request = objectStore.clear();\n request.onsuccess = () => {\n console.log('Database deleted successfully');\n resolve();\n };\n\n request.onerror = (event: Event) => {\n console.error('Error deleting database:', (event.target as IDBRequest).error);\n reject((event.target as IDBRequest).error);\n };\n });\n }\n\n static ClearAll() {\n if (isEmbedFrame()) {\n const data = {\n type: UtilsCache.typeKeyClearLocalStorage,\n response: {\n idEvent: this.idService\n }\n };\n UtilsCommunicateMicro.PostMessageToParent(data);\n }\n const keys = [...UtilsCache.listKeyKeepWhenClearALll];\n Object.keys(this.LocalStorage).forEach(key => {\n if (key.includes('kc-callback-')) {\n keys.push(key);\n }\n });\n\n const stores = UtilsCache.GetDataByKeys(Array.from(keys));\n\n this.LocalStorage.clear();\n\n UtilsCache.SetDataByKey(stores);\n }\n\n private static GetDataByKeys(keys: Array<string>) {\n const stores = new Map();\n\n keys.forEach((key: string) => {\n if (key.includes('kc-callback-')) {\n stores.set(key, this.LocalStorage.getItem(key));\n\n return;\n }\n stores.set(key, UtilsCache.Get(key));\n });\n\n return stores;\n }\n\n private static SetDataByKey(stores: Map<string, any>) {\n stores.forEach((value: any, key: string) => {\n if (key.includes('kc-callback-')) {\n this.LocalStorage.setItem(key, value);\n\n return;\n }\n if (key === UtilsCache.languageKeyCache) {\n return UtilsCache.setLang(value);\n }\n UtilsCache.Set(key, value, UtilsCache.CACHE_EXPIRE_NONE);\n });\n }\n\n public static DeleteKeyStartWithAsync(keyCacheStartWith: string, isKeyMD5 = false) {\n return new Promise(async (resolve) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n if (!objectStore) {\n return resolve({});\n }\n\n // Lấy tất cả các keys từ index\n const request = objectStore.getAll();\n\n keyCacheStartWith = isKeyMD5 ? keyCacheStartWith : md5(keyCacheStartWith);\n\n\n request.onsuccess = (e: any) => {\n const data = e.target.result as Array<any>;\n\n if (!Array.isArray(data)) {\n return resolve({});\n }\n\n data.forEach(obj => {\n if (obj[UtilsCache.itemIndexByKey].startsWith(keyCacheStartWith)) {\n UtilsCache.ClearAsync(obj[UtilsCache.itemIndexByKey], true);\n }\n });\n\n return resolve({});\n };\n\n request.onerror = () => {\n return resolve({});\n };\n });\n }\n\n public static DeleteKeyStartWith(keyCache: string, isMD5 = false) {\n keyCache = isMD5 ? md5(keyCache) : keyCache;\n const keys = Object.keys(UtilsCache.LocalStorage);\n\n if (!keys || !keys.length) {\n return;\n }\n\n keys.forEach(key => {\n if (key.startsWith(keyCache)) {\n this.Clear(key);\n }\n });\n }\n\n public static DeleteDatabaseIndexDB(dbName: string) {\n return new Promise((resolve, reject) => {\n const request = indexedDB.deleteDatabase(dbName);\n\n request.onsuccess = () => {\n console.log('Database deleted successfully');\n resolve(true);\n };\n\n request.onerror = (event: Event) => {\n console.error('Error deleting database:', (event.target as IDBRequest).error);\n reject((event.target as IDBRequest).error);\n };\n\n request.onblocked = () => {\n console.warn('Delete request is blocked');\n };\n });\n }\n}\n","import { UtilsCache } from \"./cache\";\nimport { isNil } from \"./helpers\";\nimport { UtilsLanguageConstants } from \"./language\";\n\n\nexport const formatNumber = (value: string | number): string => {\n const lang = UtilsCache.getLang();\n\n if (lang === UtilsLanguageConstants.EN) {\n return `${value}`.replace(/[,]/g, '');\n }\n\n return `${value}`.replace(/[.]/g, '').replace(/[,]/g, '.');\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const viewDataNumberByLanguage = (value: string | number, acceptNegativeValue: boolean | undefined, parseFixed = 1, ignoreFormatSeparator = false, ignoreParseFloat = false): any => {\n const lang = UtilsCache.getLang()\n\n if (!`${value}`.trim()) {\n return '';\n }\n if (isNil(value) || (!acceptNegativeValue && +value <= 0)) {\n return 0;\n }\n if (typeof value === 'string' && !ignoreFormatSeparator) {\n value = formatNumber(value);\n }\n\n const isFloat = value.toString().includes('.');\n const [intStr, floatStr] = value.toString().split('.');\n\n if (!floatStr?.length) {\n parseFixed = 0;\n }\n const round = (value: number, parseFixed: number) => {\n const fixed = Math.pow(10, parseFixed);\n\n return Math.round(value * fixed) / fixed;\n };\n\n if (parseFixed > (floatStr?.length || 0)) {\n const maxParseFixed = (acceptNegativeValue && +value < 0) ? 17 : 16;\n const fixed = maxParseFixed - (intStr?.length || 0);\n\n parseFixed = parseFixed < fixed ? parseFixed : fixed;\n }\n\n if (isFloat && !ignoreParseFloat) {\n value = parseFloat(round(+value, parseFixed).toFixed(parseFixed));\n }\n\n // Xử lý không format dữ liệu phần thập phân\n const valueString = value.toString();\n const index = valueString.indexOf('.');\n\n if (index !== -1 && (parseFixed > 3 || ignoreParseFloat)) {\n let decimalPart = valueString.substring(index + 1, valueString.length);\n let int = valueString.substring(0, index + 1);\n\n if (ignoreParseFloat) {\n decimalPart = decimalPart.substring(0, parseFixed);\n }\n if (lang === UtilsLanguageConstants.EN) {\n int = int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n\n return `${int}${decimalPart}`;\n }\n int = int.replace('.', ',').replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n\n return `${int}${decimalPart}`;\n }\n if (index === -1 || parseFixed <= 3) {\n if (lang === UtilsLanguageConstants.EN) {\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n }\n\n return value.toString().replace('.', ',').replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n }\n};","export const emojiPattern = ()=> {\n return /(\\u00a9|\\u00ae|[\\u2000-\\u3300]|\\ud83c[\\ud000-\\udfff]|\\ud83d[\\ud000-\\udfff]|\\ud83e[\\ud000-\\udfff])/g;\n}\nexport const removeEmoji = (text: string) => {\n if (!text || !text.trim()) {\n return text;\n }\n \n return text.replace(emojiPattern(), '');\n};","export const escapeHtml = (data: string): string => {\n if (!data || typeof data !== 'string') {\n return data;\n }\n\n return data\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\n};\n","export const deleteUnicode = (str: string) => {\n str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, 'a');\n str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ|ễ/g, 'e');\n str = str.replace(/ì|í|ị|ỉ|ĩ/g, 'i');\n str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, 'o');\n str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, 'u');\n str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, 'y');\n str = str.replace(/đ/g, 'd');\n str = str.replace(/À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ|Ặ|Ẳ|Ẵ/g, 'A');\n str = str.replace(/È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ/g, 'E');\n str = str.replace(/Ì|Í|Ị|Ỉ|Ĩ/g, 'I');\n str = str.replace(/Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ/g, 'O');\n str = str.replace(/Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ/g, 'U');\n str = str.replace(/Ỳ|Ý|Ỵ|Ỷ|Ỹ/g, 'Y');\n str = str.replace(/Đ/g, 'D');\n\n str = str.replace(/\\u0300|\\u0301|\\u0303|\\u0309|\\u0323/g, \"\"); // ̀ ́ ̃ ̉ ̣ huyền, sắc, ngã, hỏi, nặng\n str = str.replace(/\\u02C6|\\u0306|\\u031B/g, \"\"); // ˆ ̆ ̛ Â, Ê, Ă, Ơ, Ư\n\n return str.normalize();\n};","const listColorDefine: Array<string> = ['#E62222', '#B81B1B', '#EB4E4E', '#F97316', '#C75C12', '#FA8F45', '#FFB700', '#CC9200', '#FFC533', '#84CC16', '#6AA312', '#9dd645', '#00BC62', '#00A757', '#33DA8A', '#06B6D4', '#1B59C4', '#4E8CF7', '#0EA5E9',\n '#1B59C4', '#4E8CF7', '#226FF5', '#1B59C4', '#4E8CF7', '#6366F1', '#4F52C1', '#8285F4', '#5B04B3', '#49038F', '#7C36C2', '#D946EF', '#AE38BF', '#E16BF2', '#EC4899', '#BD3A7A', '#F06DAD', '#F43F5E', '#C3324B', '#F6657E', '#757380', '#5E5C66', '#918F99',\n '#202020', '#1A1A1A', '#4D4D4D'\n];\n\nexport const getColorById = (str: string): string => {\n let hashString = 0;\n\n if (!str) {\n return '';\n }\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n\n hashString = ((hashString << 5) - hashString) + char;\n hashString = hashString & hashString;\n }\n\n return listColorDefine[Math.abs(hashString) % listColorDefine.length];\n};\n\n","export const ERROR_MESSAGE_EMPTY_VALID = 'i18n_valid_empty_message';\nexport const ERROR_MESSAGE_PATTEN_VALID = 'i18n_valid_pattern_message';\nexport const ERROR_MESSAGE_MIN_VALID = 'i18n_message_error_input_min_value';\nexport const ERROR_MESSAGE_MAX_VALID = 'i18n_message_error_input_max_value';\nexport const ERROR_MESSAGE_MIN_LENGTH = 'i18n_message_error_input_min_length';\nexport const ERROR_MESSAGE_MAX_LENGTH = 'i18n_message_error_input_max_length';\nexport const CHARACTER_DATA_EMPTY = '__';\nexport const DEFAULT_START_PAGE_0 = 'defaultStartPage0';","/* eslint-disable no-useless-escape */\nexport const PATTERN_EMAIL = () => {\n return /^[A-z0-9]+[A-z0-9\\_\\.\\+\\-]*[A-z0-9]@[A-z0-9]+[A-z0-9\\_\\.\\+\\-]*[A-z0-9]\\.[A-z0-9]+[A-z0-9\\_\\.\\+\\-]*[A-z0-9]$/;\n}\nexport const PATTERN_URL = () => {\n return /^(http|https|ftp):(\\/){2}[^\\s]+[.]{1}[^\\s]+$/;\n}\n\nexport const PATTERN_HOST_URL = () => {\n return /^((https|http|ftp):[/]{2}[^/\\s]+)/;\n}\n\nexport const PATTERN_DOMAIN = () => {\n return /^([a-zA-Z0-9])(([a-z0-9-]{1,61})?[a-z0-9]{1})?(\\.[a-z0-9](([a-z0-9-]{1,61})?[a-z0-9]{1})?)?(\\.[a-zA-Z]{2,4})+$/;\n}\n\nexport const PATTERN_MOBILE_PHONE = () => {\n return /^(\\+?84|0|84)([0-9]{9})$/;\n}\n\nexport const PATTERN_PHONE = () => {\n return /^(\\+?84|[0-9]|84)([0-9]{2,9})$/;\n}\n\nexport const PATTERN_PHONE_NORMAL = () => {\n return /^(\\+?84|[0-9]|84)([0-9]{9,10})$/;\n}\n\nexport const PATTERN_NUMBER = () => {\n return /\\d+/g;\n}\nexport const PATTERN_ENCODE_URI = () => {\n return /%([0-9A-F]{2})/g;\n}\nexport const PATTERN_NAME = () => {\n return /^\\w+[A-Za-z\\s\\d]+$/;\n}\nexport const PATTERN_NAME_UTF8 = () => {\n return /^[ àáảãạăắằẵặẳâầấậẫẩđèéẻẽẹêềếểễệìíỉĩịòóỏõọôồốổỗộơờớởỡợùúủũụưừứửữựỳýỷỹÀÁẢÃẠĂẮẰẴẶẲÂẦẤẬẪẨĐÈÉẺẼẸÊỀẾỂỄỆÌÍỈĨỊÒÓỎÕỌÔỒỐỔỖỘƠỜỚỞỠỢÙÚỦŨỤƯỪỨỬỮỰỲÝỶỸA-Za-z0-9]+$/;\n}\nexport const PATTERN_NAME_SPECIAL = () => {\n return /[~!@#$%^&*()-+=<>,?\\/\\\\:;\"']/;\n}\nexport const PATTERN_NAME_PROFILE = () => {\n return /([\\w\\W\\d\\s]+)+/;\n}\nexport const PATTERN_EMOJI = () => {\n return /(\\u00a9|\\u00ae|[\\u2000-\\u3300]|\\ud83c[\\ud000-\\udfff]|\\ud83d[\\ud000-\\udfff]|\\ud83e[\\ud000-\\udfff])/g;\n}\nexport const PATTERN_RULE_FIELD_REPLACE = () => {\n return /[{]{2}[a-zA-Z_-]+[}]{2}/g;\n}\nexport const PATTERN_GET_FIELD_BY_RULE_FIELD_REPLACE = () => {\n return /[a-zA-Z_-]+/g;\n}\n\nexport const PATTERN_PEM = () => {\n return /^(0|1):([0-9]{1,2}):(\\{\\{path-api\\}\\}):([a-zA-Z0-9\\/]+)$/g;\n}\n\nexport const PATTERN_TAX = () => {\n return /^([0-9]){10}(-[0-9]{3})?$/;\n}\n\nexport const PATTERN_KEY = () => {\n return /^([0-9]){10}(-[0-9]{3})?$/;\n}\n\nexport const PATTERN_ACCOUNT = () => {\n return /^(?=.*@)[a-z0-9@._-]{2,63}$/;\n}\n","export type TYPE_FUNCTION_XSS = (data: string) => Promise<string>;\nlet functionXssFilter: TYPE_FUNCTION_XSS = async (value: string): Promise<string> => {\n return value;\n}\n\nexport const updateFunctionXssFilter = (functionCustom: TYPE_FUNCTION_XSS) => {\n functionXssFilter = functionCustom;\n}\n\nexport const xssFilter: TYPE_FUNCTION_XSS = async (data: string) => {\n return await functionXssFilter(data);\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { signal, TemplateRef, ElementRef, WritableSignal, isSignal } from \"@angular/core\";\nimport { cloneDeep } from \"./helpers\";\n\nexport const convertObjectToSignal = <T = any>(data: any, isCloneDeep = true): T => {\n if (data === null || typeof data !== 'object' || isSignal(data)) {\n return data;\n }\n if (Array.isArray(data)) {\n return signal(data.map(item => convertObjectToSignal(item, isCloneDeep))) as T;\n }\n\n if (data instanceof Map) {\n const mapCopy = new Map();\n Array.from(data.keys()).forEach(key => {\n mapCopy.set(key, convertObjectToSignal(data.get(key), isCloneDeep));\n });\n return signal(mapCopy) as T;\n }\n\n data = signal(isCloneDeep ? { ...data } : data);\n\n for (const key in data()) {\n const value = data()[key];\n if (value instanceof TemplateRef || value instanceof ElementRef || value instanceof Element || value instanceof Date || value instanceof RegExp || value instanceof Set || value instanceof Map) {\n continue;\n }\n if (Object.prototype.hasOwnProperty.call(data(), key)) {\n data()[key] = convertObjectToSignal(value, isCloneDeep);\n }\n }\n\n return data as T;\n};\n\nexport const convertSignalToObject = <T = any>(data: any, isCloneDeep = true): T => {\n if (data === null || (typeof data !== 'function' && typeof data !== 'object')) {\n return data;\n }\n if (isSignal(data)) {\n data = (data as WritableSignal<unknown>)();\n }\n\n\n if (Array.isArray(data)) {\n if (!isSignal(data[0])) {\n return data as T;\n }\n return data.map(item => convertSignalToObject(isCloneDeep ? cloneDeep(item) : item, isCloneDeep)) as T;\n }\n\n\n if (data instanceof Map) {\n const mapCopy = new Map();\n Array.from(data.keys()).forEach(key => {\n mapCopy.set(key, convertSignalToObject(isCloneDeep ? cloneDeep(data.get(key)) : data.get(key), isCloneDeep));\n });\n return mapCopy as T;\n }\n const result: Record<string, any> = isCloneDeep ? {} : data;\n for (const key in data) {\n const value = data[key];\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n result[key] = convertSignalToObject(isCloneDeep ? cloneDeep(value) : value, isCloneDeep);\n }\n }\n\n return result as T;\n};\n","import * as dayjs from 'dayjs';\nexport type TYPE_FUNCTION_FORMAT_DATE = (time: string | number | dayjs.Dayjs | undefined | null, format: string, lang?: string) => string;\nlet functionFormatDate: TYPE_FUNCTION_FORMAT_DATE | undefined = undefined;\n\n\nexport const updateFunctionFormatDate = (functionCustom: TYPE_FUNCTION_FORMAT_DATE) => {\n functionFormatDate = functionCustom;\n}\n\nexport const formatDate = () => functionFormatDate;","import { isNil, omitBy } from './helpers';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const endCodeUrl = (objectData: any, isBody: boolean): string => {\n objectData = omitBy(objectData, param => param === '' || isNil(param));\n let res = '';\n\n for (const p in objectData) {\n res += `&${p}=${encodeURIComponent(objectData[p])}`;\n }\n\n return res === '' ? '' : `${isBody ? '' : '?'}${res.substring(1)}`;\n};","export const convertFileToBase64 = (file: File): Promise<string | ArrayBuffer> => {\n return new Promise((resolve) => {\n const reader = new FileReader();\n\n reader.readAsDataURL(file);\n reader.onload = (event) => {\n resolve(event.target?.result ?? '');\n };\n });\n};","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["key","keyStore","listColorDefine"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"libs-ui-utils.mjs","sources":["../../../../libs-ui/utils/src/dom.ts","../../../../libs-ui/utils/src/url-search-params.ts","../../../../libs-ui/utils/src/crypto.ts","../../../../libs-ui/utils/src/uuid.ts","../../../../libs-ui/utils/src/helpers.ts","../../../../libs-ui/utils/src/color.ts","../../../../libs-ui/utils/src/crypto-3rd.ts","../../../../libs-ui/utils/src/key-code.ts","../../../../libs-ui/utils/src/http-params.ts","../../../../libs-ui/utils/src/language.ts","../../../../libs-ui/utils/src/key-cache.ts","../../../../libs-ui/utils/src/function-check-embed-frame.ts","../../../../libs-ui/utils/src/communicate-micro.ts","../../../../libs-ui/utils/src/cache.ts","../../../../libs-ui/utils/src/format-number.ts","../../../../libs-ui/utils/src/remove-emoji.ts","../../../../libs-ui/utils/src/escape-html.ts","../../../../libs-ui/utils/src/delete-unicode.ts","../../../../libs-ui/utils/src/get-color-by-id.ts","../../../../libs-ui/utils/src/constants.ts","../../../../libs-ui/utils/src/pattern.ts","../../../../libs-ui/utils/src/xss-filter.ts","../../../../libs-ui/utils/src/two-way-signal-object.ts","../../../../libs-ui/utils/src/format-date.ts","../../../../libs-ui/utils/src/encode-url.define.ts","../../../../libs-ui/utils/src/file.ts","../../../../libs-ui/utils/src/libs-ui-utils.ts"],"sourcesContent":["import { Renderer2 } from \"@angular/core\";\nimport { IBoundingClientRect } from \"@libs-ui/interfaces-types\";\n\nexport const getPlatFromBrowser = ()=> {\n const userAgent = navigator.userAgent;\n let tem;\n let match = userAgent.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n\n if (/trident/i.test(match[1])) {\n tem = /\\brv[ :]+(\\d+)/g.exec(userAgent) || [];\n\n return 'IE ' + (tem[1] || '');\n }\n if (match[1] === 'Chrome') {\n tem = userAgent.match(/\\b(OPR|Edge)\\/(\\d+)/);\n if (tem !== null) {\n return tem.slice(1).join(' ').replace('OPR', 'Opera');\n }\n\n }\n match = match[2] ? [match[1], match[2]] : [navigator.appName, navigator.appVersion, '-?'];\n if ((tem = userAgent.match(/version\\/(\\d+)/i)) !== null) {\n match.splice(1, 1, tem[1]);\n }\n\n return match.join(' ');\n}\n\nexport const cloneIBoundingClientRect = (rect: IBoundingClientRect): IBoundingClientRect => {\n return {\n top: rect['top'],\n left: rect['left'],\n width: rect['width'],\n height: rect['height'],\n bottom: rect['bottom']\n };\n}\n\nexport const setStyles = (el: HTMLElement, styles: Record<string, string>, render2: Renderer2): void => {\n Object.keys(styles).forEach((key: string) => render2.setStyle(el, key, styles[key]));\n}\n\nexport const getViewport = (win: Window = window): { width: number; height: number } => {\n const doc = win.document.documentElement,\n body = win.document.getElementsByTagName('body')[0],\n w = win.innerWidth || doc.clientWidth || body.clientWidth,\n h = win.innerHeight || doc.clientHeight || body.clientHeight;\n\n return { width: w, height: h };\n}\n\nexport const setCaretPosition = (element: HTMLTextAreaElement | HTMLInputElement, position: number): void => {\n if (!element || !element.setSelectionRange) {\n return;\n }\n element.focus();\n element.setSelectionRange(position, position);\n}\n\nexport const checkViewInScreen = (container: HTMLElement, element: HTMLElement, elementScroll?: HTMLElement, maxTopLeft?: { top?: number, left?: number }): boolean => {\n if (!container || !element) {\n return false;\n }\n\n const rectContainer = cloneIBoundingClientRect(container.getBoundingClientRect());\n\n if (elementScroll) {\n const rectElementScroll = elementScroll.getBoundingClientRect();\n\n rectContainer['left'] = rectElementScroll.left;\n rectContainer['top'] = rectElementScroll.top;\n\n }\n\n const rectElement = element.getBoundingClientRect();\n const { left, top } = rectElement;\n const topContainer = rectContainer['top'];\n const leftContainer = rectContainer['left'];\n const widthContainer = rectContainer['width'];\n const heightContainer = rectContainer['height'];\n const scrollTopContainer = container.scrollTop;\n const scrollLeftContainer = container.scrollLeft;\n const limitTop = topContainer + scrollTopContainer + heightContainer;\n const limitLeft = leftContainer + scrollLeftContainer + widthContainer;\n\n const maxTopItem = top + (maxTopLeft?.top || 0);\n const maxLeftItem = left + (maxTopLeft?.left || 0);\n\n if (topContainer <= maxTopItem && maxTopItem <= limitTop && leftContainer <= maxLeftItem && maxLeftItem <= limitLeft) {\n return true;\n }\n\n return false;\n};\n\nexport const checkMouseOverInContainer = (mousePosition: { clientX: number; clientY: number }, element?: HTMLElement, rect?: DOMRect): boolean => {\n if (!element && !rect) {\n return false;\n }\n const rectElement = rect || element?.getBoundingClientRect() || {} as DOMRect;\n const { left, top, width, height } = rectElement;\n const limitLeft = left + width;\n const limitTop = top + height;\n const { clientX, clientY } = mousePosition;\n\n if (left <= clientX && clientX <= limitLeft && top <= clientY && clientY <= limitTop) {\n return true;\n }\n\n return false;\n};","export class UtilsUrlSearchParams {\n private static instance: UtilsUrlSearchParams;\n private params: Array<{ key: string, value: string }>;\n constructor(paramString: string) {\n this.params = new Array<{ key: string, value: string }>();\n this.params.length = 0;\n this.params.push(...this.buildParams(paramString));\n }\n\n static getInstance() {\n if (!this.instance) {\n this.instance = new UtilsUrlSearchParams('');\n }\n\n return this.instance;\n }\n\n public static toStringParamObject(params: { [key in string]: string }) {\n const paramsArr: Array<{ key: string, value: string }> = Object.keys(params).map(key => {\n return {\n key,\n value: params[key]\n };\n });\n\n return UtilsUrlSearchParams.ToString(paramsArr);\n }\n\n public static ToString(params: Array<{ key: string, value: string }>) {\n let paramsStr = '';\n\n params.sort((item1, item2) => item1.key.localeCompare(item2.key)).forEach((item) => {\n const { key, value } = item;\n\n paramsStr = `${paramsStr}${paramsStr ? '&' : ''}${key}=${value}`;\n });\n\n return paramsStr;\n }\n\n private buildParams(paramString: string): Array<{ key: string, value: string }> {\n const paramsBuild = new Array<{ key: string, value: string }>();\n\n if (!paramString) {\n return paramsBuild;\n }\n\n const paramsError = paramString.split('?');\n\n if (paramsError.length > 2) {\n paramString = `${paramsError[0]}?${paramsError[1]}&${paramsError.slice(2).join('&')}`;\n }\n\n const params = paramString.replace(/\\S+[?]/g, '').split('&');\n\n if (params) {\n params.forEach(param => {\n if (param.indexOf('=') < 0) {\n return;\n }\n let [key, value] = param.split('=');\n\n key = key.replace(/[?&]+/g, '');\n value = decodeURIComponent(value.replace(/\\+/g, ' '));\n if (!paramsBuild.some(param => param.key === key)) {\n paramsBuild.push({ key, value });\n }\n });\n }\n\n return paramsBuild;\n }\n\n public set(key: string, value: string) {\n const paramByKey = this.params.find(param => param.key === key) as Record<string, string>;\n\n if (!paramByKey) {\n this.params.push({ key, value: decodeURIComponent(value.replace(/\\+/g, ' ')) });\n\n return;\n }\n\n paramByKey['value'] = value;\n }\n\n public get(key: string) {\n return this.params.find(param => param.key === key)?.value;\n }\n\n public has(key: string) {\n return this.params.some(param => param.key === key);\n }\n\n public delete(key: string) {\n const index = this.params.findIndex(param => param.key === key);\n\n if (index >= 0) {\n this.params.splice(index, 1);\n }\n }\n\n public length() {\n return this.params.length;\n }\n\n public toString(params?: Array<{ key: string, value: string }>) {\n params = params || this.params;\n\n return UtilsUrlSearchParams.ToString(params);\n }\n\n public getParamObject() {\n const params = {} as Record<string, string>;\n\n this.params.forEach(item => {\n params[item.key] = item.value;\n });\n\n return params;\n }\n\n public compareParams(param1: string, param2: string) {\n const params1 = this.toString(this.buildParams(param1));\n const params2 = this.toString(this.buildParams(param2));\n\n return params1 === params2;\n }\n\n}\n","\nimport CryptoES from 'crypto-es';\n\nlet key = '12~@#loqwsxacva(3rdhaq12';\n\nexport const setKeyCrypto = (value: string) => {\n if (value.length !== 24 && value.length !== 32) {\n throw Error(`key.length = ${value.length}; Key phải là 1 chuỗi dài 24 hoặc 32 ký tự`);\n }\n key = value;\n};\n\nconst keyStore = () => {\n return key;\n}\n\nexport const encrypt = (plainData: string): string => {\n if (!keyStore()) {\n throw Error(\"lỗi chưa setup key mã hóa\");\n }\n const key = CryptoES.enc.Hex.parse(keyStore());\n const iv = CryptoES.enc.Hex.parse(keyStore());\n const mode = CryptoES.mode.CBC;\n const padding = CryptoES.pad.Pkcs7;\n const options = { iv: iv, mode: mode, padding: padding };\n\n return CryptoES.AES.encrypt(plainData, key, options).toString();\n};\n\nexport const decrypt = (encryptedData: string): string => {\n if (!keyStore()) {\n throw Error(\"lỗi chưa setup key mã hóa\");\n }\n const key = CryptoES.enc.Hex.parse(keyStore());\n const iv = CryptoES.enc.Hex.parse(keyStore());\n const mode = CryptoES.mode.CBC;\n const padding = CryptoES.pad.Pkcs7;\n const options = { iv: iv, mode: mode, padding: padding };\n\n return CryptoES.AES.decrypt(encryptedData, key, options).toString(CryptoES.enc.Utf8);\n};\n\nexport const md5 = (plainData: string) => {\n return CryptoES.MD5(plainData).toString();\n};\n\n","import { md5 } from \"./crypto\";\n\nexport const uuid = (): string => {\n const timestamp = performance.now() * 1000;\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+-=[]{}|;:,.<>?/~';\n let randomString = '';\n\n for (let i = 0; i < 5; i++) {\n randomString += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n const baseString = `${Math.floor(timestamp)}-${randomString}`;\n const charArray = baseString.split('');\n\n for (let i = charArray.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n\n [charArray[i], charArray[j]] = [charArray[j], charArray[i]];\n }\n\n const shuffledString = charArray.join('');\n\n return md5(shuffledString);\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ElementRef, TemplateRef, isSignal } from \"@angular/core\";\nimport { TYPE_OBJECT } from \"@libs-ui/interfaces-types\";\n\n/**Các hàm tương tự thư viện lodash */\nexport const isNil = (value: unknown): value is null | undefined => {\n return value === null || value === undefined;\n};\n\nexport const isEmpty = (value: unknown) => {\n return value === null || value === '' || value === undefined || (typeof value === 'object' && (JSON.stringify(value) === '{}' || JSON.stringify(value) === '[]'));\n};\n\nexport const omitBy = <T>(objData: Record<string, any>, predicate: (val: any) => boolean): T => {\n if (!objData || typeof objData !== 'object' || Array.isArray(objData)) {\n return objData as T;\n }\n const newObj = {} as T;\n\n Object.keys(objData).forEach(key => {\n const valueOfKey = get(objData, key);\n if (!predicate(valueOfKey)) {\n set(newObj, key, valueOfKey)\n }\n })\n return newObj;\n};\n\nexport const get = <T = any>(obj: any, path: string | string[], defaultValue: any = undefined): T => {\n if (obj == null) {\n return defaultValue;\n }\n if (isSignal(obj)) {\n obj = obj();\n }\n const paths = Array.isArray(path) ? path : path.replace(/\\[(\\d+)]/g, '.$1').split('.');\n for (let i = 0; i < paths.length; i++) {\n if (obj == null || !Object.prototype.hasOwnProperty.call(obj, paths[i])) {\n return defaultValue;\n }\n const val = isSignal(obj[paths[i]]) ? obj[paths[i]]() : obj[paths[i]];\n\n obj = val;\n }\n\n return obj;\n};\n\nexport const set = <T = any>(obj: any, path: string | string[], value: any): T => {\n if (!obj || (typeof obj !== \"object\" && !isSignal(obj)) || (isSignal(obj) && typeof obj() !== \"object\")) {\n throw new Error(\"The first argument must be an object\");\n }\n\n const pathArray = Array.isArray(path) ? path : path.replace(/\\[(\\d+)]/g, '.[$1]').split('.');\n\n let current: any = isSignal(obj) ? obj() : obj;\n\n let lastIsSignal = false;\n pathArray.forEach((key, index) => {\n if (index < pathArray.length - 1) {\n if (!(key in current) || typeof current[key] !== \"object\") {\n const nextKey = pathArray[index + 1];\n\n key = key.replace(/\\[(\\d+)]/g, '$1');\n current[key] = /\\[(\\d+)]/g.test(nextKey) ? [] : {};\n }\n current = key ? current[key] : current;\n lastIsSignal = isSignal(current);\n current = lastIsSignal ? current() : current;\n return;\n }\n\n // Gán giá trị ở cuối đường dẫn\n key = key.replace(/\\[(\\d+)]/g, '$1');\n if (lastIsSignal) {\n current.update((data: any) => {\n data[key] = value;\n return { ...data };\n });\n return;\n }\n current[key] = value;\n });\n\n return obj;\n};\n\nexport const cloneDeep = <T = any>(data: any): T => {\n if (data === null || typeof data !== 'object') {\n return data;\n }\n\n if (data instanceof Date) {\n return new Date(data.getTime()) as T;\n }\n\n if (data instanceof RegExp) {\n return new RegExp(data.source, data.flags) as T;\n }\n\n if (data instanceof Map) {\n const mapCopy = new Map();\n data.forEach((val, key) => {\n mapCopy.set(cloneDeep(key), cloneDeep(val));\n });\n return mapCopy as T;\n }\n\n if (data instanceof Set) {\n const setCopy = new Set();\n data.forEach(val => {\n setCopy.add(cloneDeep(val));\n });\n return setCopy as T;\n }\n\n if (Array.isArray(data)) {\n return data.map(item => cloneDeep(item)) as T;\n }\n\n if (isSignal(data)) {\n return cloneDeep(data());\n }\n\n const result: Record<string, any> = {};\n for (const key in data) {\n const value = data[key];\n if (value instanceof TemplateRef || value instanceof ElementRef || value instanceof Element) {\n result[key] = value;\n continue;\n }\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n result[key] = cloneDeep(value);\n }\n }\n\n return result as T;\n};\n\nexport const keyBy = (data: Array<TYPE_OBJECT>, key: string): TYPE_OBJECT => {\n if (!data || !data.length || !key) {\n return {};\n }\n return data.reduce((dir, nextItem) => {\n const valueOfKey = nextItem[key];\n if (typeof valueOfKey !== 'string' && typeof valueOfKey !== 'number') {\n return dir;\n }\n dir[valueOfKey] = nextItem;\n return dir;\n }, {});\n};\n\nexport const groupBy = (data: Array<TYPE_OBJECT>, key: string): TYPE_OBJECT => {\n if (!data || !Object.keys(data).length || !key) {\n return {};\n }\n return data.reduce((dir, nextItem) => {\n const valueOfKey = nextItem[key];\n if (typeof valueOfKey !== 'string' && typeof valueOfKey !== 'number') {\n return dir;\n }\n if (!dir[valueOfKey]) {\n dir[valueOfKey] = [];\n }\n dir[valueOfKey].push(nextItem);\n return dir;\n }, {});\n};\n\nexport const range = (start: number, end?: number, step?: number): Array<number> => {\n if (end === undefined || end === null) {\n end = start;\n start = 0;\n }\n\n if (!step) {\n step = end < 0 ? -1 : 1;\n }\n\n if (end < start && step > 0) {\n step *= -1;\n }\n\n const valueStartByStep = step + start;\n const direction = start < end ? 'asc' : 'desc';\n if ((direction === 'asc' && (valueStartByStep < start || valueStartByStep > end)) || (direction === 'desc' && (valueStartByStep > start || valueStartByStep < end))) {\n return [start];\n }\n\n const arr = new Array<number>();\n\n for (let index = 0; index < Math.abs(end - start); index++) {\n let value = start + index * step;\n if (index === 0) {\n value = start;\n }\n\n if ((direction === 'asc' && (value < start || value > end)) || (direction === 'desc' && (value > start || value < end))) {\n return arr;\n }\n\n arr.push(value);\n }\n\n return arr;\n}\n\nexport const isEqual = (value1: any, value2: any): boolean => {\n if (value1 === value2 || (value1 === null && value2 === null) || (value1 === undefined && value2 === undefined)) {\n return true;\n }\n if (typeof value1 !== 'object' || typeof value2 !== 'object' || (Array.isArray(value1) && !Array.isArray(value2))) {\n return false;\n }\n\n if (Array.isArray(value1)) {\n if (value1.length !== value2.length) {\n return false\n }\n\n return !value1.some((item, index) => !isEqual(item, value2[index]));\n }\n\n if (Object.keys(value1).length !== Object.keys(value2).length) {\n return false;\n }\n return !Object.keys(value1).some((key) => !isEqual(value1[key], value2[key]));\n}\n\nexport const uniqBy = <T>(data: Array<T>, key?: string): Array<T> => {\n if (!key || !data || !data.length || typeof data[0] !== 'object') {\n return Array.from(new Set(data));\n }\n\n const dataUnique = keyBy(data as Array<Record<string, any>>, key);\n\n return Object.keys(dataUnique).map(key => dataUnique[key]);\n}\n\nexport const generateInterface = (obj: any, interfaceName: string): string => {\n const generateType = (value: any): string => {\n if (value === null) {\n return 'null';\n }\n const type = typeof value;\n\n if (type === 'string') {\n return 'string';\n }\n if (type === 'number') {\n return 'number';\n }\n if (type === 'boolean') {\n return 'boolean';\n }\n if (type === 'undefined') {\n return 'any';\n }\n\n if (value instanceof Date) {\n return 'Date';\n }\n\n if (value instanceof RegExp) {\n return 'RegExp';\n }\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return 'Array<any>';\n }\n return `Array<${generateType(value[0])}>`;\n }\n\n if (type === 'object') {\n let interfaceStr = '{\\n';\n for (const key in value) {\n if (Object.prototype.hasOwnProperty.call(value, key)) {\n const valueType = generateType(value[key]);\n interfaceStr += ` ${key}: ${valueType};\\n`;\n }\n }\n interfaceStr += '}';\n return interfaceStr;\n }\n\n return 'any';\n };\n\n const interfaceStr = `interface ${interfaceName} ${generateType(obj)}`;\n return interfaceStr;\n};","\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport interface IColorContrastFromOrigin {\n step: number;\n label: string,\n light: string;\n dark: string\n};\nconst step = 20;\nconst percent = 0.05;\n\nexport const colorStepContrastFromOrigin = (color: string, stepNumber: number) => {\n return colorContrastFromOrigin(color).find(item => item.step === stepNumber);\n};\n\nexport const colorContrastFromOrigin = (color: string): Array<IColorContrastFromOrigin> => {\n const parsedColorsArray = parseColorValues(color);\n const colors: any = [];\n let calculatedShades: Array<string> = [];\n let calculatedTints: Array<string> = [];\n\n if (parsedColorsArray !== null) {\n for (let i = 0; i < parsedColorsArray.length; i++) {\n calculatedShades = calculateShades(parsedColorsArray[i]);\n calculatedTints = calculateTints(parsedColorsArray[i]);\n }\n\n for (let i = 0; i <= step; i++) {\n colors.push({ step: i * 5, label: `${i * 5}%`, dark: `#${calculatedShades[i]}`, light: `#${calculatedTints[i]}` });\n }\n }\n\n return colors;\n};\n\nconst parseColorValues = (colorValues: any) => {\n let colorValuesArray = colorValues.match(/\\b[0-9A-Fa-f]{3}\\b|[0-9A-Fa-f]{6}\\b/g);\n\n if (colorValuesArray) {\n colorValuesArray = colorValuesArray.map((item: any) => {\n if (item.length === 3) {\n let newItem = item.toString().split('');\n\n newItem = newItem.reduce((acc: any, it: any) => {\n return acc + it + it;\n }, '');\n\n return newItem;\n }\n\n return item;\n });\n }\n\n return colorValuesArray;\n};\n\nconst calculateShades = (colorValue: any) => {\n return calculate(colorValue, rgbShade).concat(\"000000\");\n};\n\nconst calculateTints = (colorValue: any) => {\n return calculate(colorValue, rgbTint).concat(\"ffffff\");\n};\n\nconst calculate = (colorValue: any, shadeOrTint: any) => {\n const color = hexToRGB(colorValue);\n const shadeValues: Array<string> = [];\n\n for (let i = 0; i < step; i++) {\n shadeValues[i] = rgbToHex(shadeOrTint(color, i));\n }\n\n return shadeValues;\n};\n\nconst rgbShade = (rgb: any, i: any) => { return { red: rgb.red * (1 - percent * i), green: rgb.green * (1 - percent * i), blue: rgb.blue * (1 - percent * i) } };\nconst rgbTint = (rgb: any, i: any) => { return { red: rgb.red + (255 - rgb.red) * i * percent, green: rgb.green + (255 - rgb.green) * i * percent, blue: rgb.blue + (255 - rgb.blue) * i * percent } };\n\n\nexport const rgbToHex = (rgb: any) => { return intToHex(rgb.red) + intToHex(rgb.green) + intToHex(rgb.blue) };\nconst hexToRGB = (colorValue: any) => { return { red: parseInt(colorValue.substr(0, 2), 16), green: parseInt(colorValue.substr(2, 2), 16), blue: parseInt(colorValue.substr(4, 2), 16) } };\nconst intToHex = (rgbint: any) => { return pad(Math.min(Math.max(Math.round(rgbint), 0), 255).toString(16), 2) };\n\nconst pad = (number: any, length: any) => {\n let str = '' + number;\n\n while (str.length < length) { str = '0' + str }\n\n return str;\n};\n\nexport const listColorDefine: Array<string> = ['#E62222', '#B81B1B', '#EB4E4E', '#F97316', '#C75C12', '#FA8F45', '#FFB700', '#CC9200', '#FFC533', '#84CC16', '#6AA312', '#9dd645', '#00BC62', '#00A757', '#33DA8A', '#06B6D4', '#1B59C4', '#4E8CF7', '#0EA5E9',\n '#1B59C4', '#4E8CF7', '#226FF5', '#1B59C4', '#4E8CF7', '#6366F1', '#4F52C1', '#8285F4', '#5B04B3', '#49038F', '#7C36C2', '#D946EF', '#AE38BF', '#E16BF2', '#EC4899', '#BD3A7A', '#F06DAD', '#F43F5E', '#C3324B', '#F6657E', '#757380', '#5E5C66', '#918F99',\n '#202020', '#1A1A1A', '#4D4D4D'\n];\n\nexport const GetColorById = (str: string): string => {\n let hashString = 0;\n\n if (!str) {\n return '';\n }\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n\n hashString = ((hashString << 5) - hashString) + char;\n hashString = hashString & hashString;\n }\n\n return listColorDefine[Math.abs(hashString) % listColorDefine.length];\n};\n\n\n","\nimport CryptoES from 'crypto-es';\n\nlet key = '12~@#loqwsxacva(3rdhaq12';\n\nexport const setKeyCrypto3rd = (value: string) => {\n if (value.length !== 24 && value.length !== 32) {\n throw Error(`key.length = ${value.length}; Key phải là 1 chuỗi dài 24 hoặc 32 ký tự`);\n }\n key = value;\n};\n\n\nconst keyStore = () => {\n return key;\n}\n\nexport const encrypt3rd = (plainData: string): string => {\n if (!keyStore()) {\n throw Error(\"lỗi chưa setup key mã hóa\");\n }\n const key = CryptoES.enc.Hex.parse(keyStore());\n const iv = CryptoES.enc.Hex.parse(keyStore());\n const mode = CryptoES.mode.CBC;\n const padding = CryptoES.pad.Pkcs7;\n const options = { iv: iv, mode: mode, padding: padding };\n\n return CryptoES.AES.encrypt(plainData, key, options).toString();\n};\n\nexport const decrypt3rd = (encryptedData: string): string => {\n if (!keyStore()) {\n throw Error(\"lỗi chưa setup key mã hóa\");\n }\n const key = CryptoES.enc.Hex.parse(keyStore());\n const iv = CryptoES.enc.Hex.parse(keyStore());\n const mode = CryptoES.mode.CBC;\n const padding = CryptoES.pad.Pkcs7;\n const options = { iv: iv, mode: mode, padding: padding };\n\n return CryptoES.AES.decrypt(encryptedData, key, options).toString(CryptoES.enc.Utf8);\n};","export abstract class UtilsKeyCodeConstant {\n static readonly MAC_ENTER = 3;\n static readonly BACKSPACE = 8;\n static readonly TAB = 9;\n static readonly NUM_CENTER = 12;\n static readonly ENTER = 13;\n static readonly SHIFT = 16;\n static readonly CONTROL = 17;\n static readonly ALT = 18;\n static readonly PAUSE = 19;\n static readonly CAPS_LOCK = 20;\n static readonly ESCAPE = 27;\n static readonly SPACE = 32;\n static readonly PAGE_UP = 33;\n static readonly PAGE_DOWN = 34;\n static readonly END = 35;\n static readonly HOME = 36;\n static readonly LEFT_ARROW = 37;\n static readonly UP_ARROW = 38;\n static readonly RIGHT_ARROW = 39;\n static readonly DOWN_ARROW = 40;\n static readonly PLUS_SIGN = 43;\n static readonly PRINT_SCREEN = 44;\n static readonly INSERT = 45;\n static readonly DELETE = 46;\n static readonly ZERO = 48;\n static readonly ONE = 49;\n static readonly TWO = 50;\n static readonly THREE = 51;\n static readonly FOUR = 52;\n static readonly FIVE = 53;\n static readonly SIX = 54;\n static readonly SEVEN = 55;\n static readonly EIGHT = 56;\n static readonly NINE = 57;\n static readonly FF_SEMICOLON = 59; // Firefox (Gecko) fires this for semicolon instead of 186\n static readonly FF_EQUALS = 61; // Firefox (Gecko) fires this for equals instead of 187\n static readonly QUESTION_MARK = 63;\n static readonly AT_SIGN = 64;\n static readonly A = 65;\n static readonly B = 66;\n static readonly C = 67;\n static readonly D = 68;\n static readonly E = 69;\n static readonly F = 70;\n static readonly G = 71;\n static readonly H = 72;\n static readonly I = 73;\n static readonly J = 74;\n static readonly K = 75;\n static readonly L = 76;\n static readonly M = 77;\n static readonly N = 78;\n static readonly O = 79;\n static readonly P = 80;\n static readonly Q = 81;\n static readonly R = 82;\n static readonly S = 83;\n static readonly T = 84;\n static readonly U = 85;\n static readonly V = 86;\n static readonly W = 87;\n static readonly X = 88;\n static readonly Y = 89;\n static readonly Z = 90;\n static readonly META = 91; // WIN_KEY_LEFT\n static readonly MAC_WK_CMD_LEFT = 91;\n static readonly MAC_WK_CMD_RIGHT = 93;\n static readonly CONTEXT_MENU = 93;\n static readonly NUMPAD_ZERO = 96;\n static readonly NUMPAD_ONE = 97;\n static readonly NUMPAD_TWO = 98;\n static readonly NUMPAD_THREE = 99;\n static readonly NUMPAD_FOUR = 100;\n static readonly NUMPAD_FIVE = 101;\n static readonly NUMPAD_SIX = 102;\n static readonly NUMPAD_SEVEN = 103;\n static readonly NUMPAD_EIGHT = 104;\n static readonly NUMPAD_NINE = 105;\n static readonly NUMPAD_MULTIPLY = 106;\n static readonly NUMPAD_PLUS = 107;\n static readonly NUMPAD_MINUS = 109;\n static readonly NUMPAD_PERIOD = 110;\n static readonly NUMPAD_DIVIDE = 111;\n static readonly F1 = 112;\n static readonly F2 = 113;\n static readonly F3 = 114;\n static readonly F4 = 115;\n static readonly F5 = 116;\n static readonly F6 = 117;\n static readonly F7 = 118;\n static readonly F8 = 119;\n static readonly F9 = 120;\n static readonly F10 = 121;\n static readonly F11 = 122;\n static readonly F12 = 123;\n static readonly NUM_LOCK = 144;\n static readonly SCROLL_LOCK = 145;\n static readonly FIRST_MEDIA = 166;\n static readonly FF_MINUS = 173;\n static readonly MUTE = 173; // Firefox (Gecko) fires 181 for MUTE\n static readonly VOLUME_DOWN = 174; // Firefox (Gecko) fires 182 for VOLUME_DOWN\n static readonly VOLUME_UP = 175; // Firefox (Gecko) fires 183 for VOLUME_UP\n static readonly FF_MUTE = 181;\n static readonly FF_VOLUME_DOWN = 182;\n static readonly LAST_MEDIA = 183;\n static readonly FF_VOLUME_UP = 183;\n static readonly SEMICOLON = 186; // Firefox (Gecko) fires 59 for SEMICOLON\n static readonly EQUALS = 187; // Firefox (Gecko) fires 61 for EQUALS\n static readonly COMMA = 188;\n static readonly DASH = 189; // Firefox (Gecko) fires 173 for DASH/MINUS\n static readonly PERIOD = 190;\n static readonly SLASH = 191;\n static readonly APOSTROPHE = 192;\n static readonly TILDE = 192;\n static readonly OPEN_SQUARE_BRACKET = 219;\n static readonly BACKSLASH = 220;\n static readonly CLOSE_SQUARE_BRACKET = 221;\n static readonly SINGLE_QUOTE = 222;\n static readonly MAC_META = 224;\n }\n ","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpParameterCodec, HttpParams } from \"@angular/common/http\";\n\nexport const UtilsHttpParamsRequestInstance = <Type>(options?: HttpParamsOptions<Type>, instance?: HttpParams): UtilsHttpParamsRequest<Type> => {\n return new UtilsHttpParamsRequest<Type>(options, instance);\n};\n\nexport class UtilsHttpParamsRequest<Type = { pem: string }> extends HttpParams {\n private params!: HttpParams;\n\n constructor(options?: HttpParamsOptions<Type>, instance?: HttpParams) {\n super(options as any);\n\n if (!instance) {\n this.params = new HttpParams(options);\n\n return;\n }\n\n if (instance instanceof UtilsHttpParamsRequest) {\n this.params = instance.getInstance();\n\n return;\n }\n\n if (instance instanceof HttpParams) {\n this.params = instance;\n\n return;\n }\n }\n\n getInstance(): HttpParams {\n return this.params;\n }\n\n setInstance(instance: HttpParams) {\n if (instance instanceof UtilsHttpParamsRequest) {\n this.params = instance.getInstance();\n\n return;\n }\n\n if (instance instanceof HttpParams) {\n this.params = instance;\n\n return;\n }\n }\n\n override set(param: string, value: string | number | boolean): UtilsHttpParamsRequest {\n this.params = this.params.set(param, value);\n\n return this as UtilsHttpParamsRequest;\n }\n\n override has(param: string): boolean {\n return this.params.has(param);\n }\n\n override get(param: string): string | null {\n return this.params.get(param);\n }\n\n override getAll(param: string): string[] | null {\n return this.params.getAll(param);\n }\n\n override keys(): string[] {\n return this.params.keys();\n }\n\n override append(param: string, value: string | number | boolean): HttpParams {\n this.params = this.params.append(param, value);\n\n return this as HttpParams;\n }\n\n override appendAll(params: { [param: string]: string | number | boolean | ReadonlyArray<string | number | boolean> }): HttpParams {\n this.params = this.params.appendAll(params);\n\n return this as HttpParams;\n }\n\n override delete(param: string, value?: string | number | boolean): UtilsHttpParamsRequest {\n this.params = this.params.delete(param, value);\n\n return this as UtilsHttpParamsRequest;\n }\n\n override toString(): string {\n return this.params.toString();\n }\n}\n\nexport declare interface HttpParamsOptions<Type> {\n fromString?: string;\n fromObject?: TYPE_FROM_OBJECT<Type>;\n encoder?: HttpParameterCodec;\n}\nexport type GET_PATH_VARIABLE<TypePath, TypeOther = unknown> = {\n [Property in keyof TypePath as `pathVariable-${Lowercase<string & Property>}`]: TypePath[Property];\n} & TypeOther;\n\ntype TYPE_FROM_OBJECT<Type> = Type extends undefined | null ? { pem: string } : { pem?: string } & {\n [Property in keyof Type]?: Type[Property];\n};","\nexport class UtilsLanguageConstants {\n public static VI = 'vi';\n public static EN = 'en';\n public static defaultLang = UtilsLanguageConstants.VI;\n};","import { HttpParams } from \"@angular/common/http\";\nimport { md5 } from \"./crypto\";\n\nexport const getKeyCacheByArrayObject = (keyCache: string, argumentsValue?: Array<unknown>): string =>{\n if (!keyCache || !argumentsValue) {\n return '';\n }\n let keyBuild = `${JSON.stringify(argumentsValue.slice(1))}-key-cache-plus`;\n\n if (argumentsValue && argumentsValue[0] instanceof HttpParams) {\n const httpParams = argumentsValue[0];\n const keys = argumentsValue[0].keys().sort((str1, str2) => str1.localeCompare(str2));\n\t\t\tkeys.forEach(key => {\n\t\t\t\t\tkeyBuild = `${keyBuild}${JSON.stringify(httpParams.get(key))}`;\n\t\t\t});\n }\n const keyCachePlus = md5(keyBuild);\n const keyCacheMD5 = md5(keyCache);\n\n return `${keyCacheMD5}-${md5(`${keyCacheMD5}-${keyCachePlus}`)}`;\n}\n\n ","let functionCheck = () => {\n return window.parent !== window.top;\n}\nexport const updateFunctionCheckEmbedFrame = (functionCustom: () => boolean) => {\n functionCheck = functionCustom;\n}\n\nexport const isEmbedFrame = (): boolean => {\n return functionCheck();\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Subject, filter, fromEvent, takeUntil } from \"rxjs\";\nimport { decrypt, encrypt } from \"./crypto\";\nimport { decrypt3rd, encrypt3rd } from \"./crypto-3rd\";\nimport { isEmbedFrame } from \"./function-check-embed-frame\";\nimport { UtilsCache } from \"./cache\";\nexport class UtilsCommunicateMicroKeyGlobal {\n public static KEY_MESSAGE_MODAL = 'LIBS_UI_MODEL_EVENT';\n}\n\nexport class UtilsCommunicateMicro {\n public static readonly PREFIX_TYPE = '3RD_INTEGRATE_MICRO_SITE_';\n private static readonly KEY_GET_ALL_MESSAGE = 'MICRO_SITES_ALL_MESSAGE';\n private static initdEvent?: boolean;\n private static subs: Map<string, Subject<MessageEvent>> = new Map();\n private static allMessageSub: Subject<MessageEvent> = new Subject();\n\n public static initEvent(currentWindow: Window, onDestroy: Subject<void>) {\n if (this.initdEvent) {\n return;\n }\n this.initdEvent = true;\n if (!this.subs.get(UtilsCommunicateMicro.KEY_GET_ALL_MESSAGE)) {\n this.subs.set(UtilsCommunicateMicro.KEY_GET_ALL_MESSAGE, UtilsCommunicateMicro.allMessageSub);\n }\n\n fromEvent<MessageEvent>(currentWindow, 'message').pipe(takeUntil(onDestroy)).subscribe(e => {\n const event = { data: { ...e.data } } as MessageEvent;\n\n const data = event.data;\n const type = data.type;\n\n if (!type) {\n return this.allMessageSub.next(event);\n }\n const sub = UtilsCommunicateMicro.GetMessage(type);\n\n if (!type || !data.response) {\n return;\n }\n try {\n if (type.includes(UtilsCommunicateMicro.PREFIX_TYPE)) {\n\n data.response = JSON.parse(decrypt3rd(data.response));\n sub.next(event);\n this.allMessageSub.next(event);\n\n return;\n }\n data.response = JSON.parse(decrypt(data.response));\n sub.next(event);\n this.allMessageSub.next(event);\n } catch (error) {\n console.log(error);\n sub.next(event);\n this.allMessageSub.next(event);\n }\n });\n\n UtilsCommunicateMicro.GetMessage(UtilsCache.typeKeyClearLocalStorage).pipe(filter(e => e.data.response !== UtilsCache.idService), takeUntil(onDestroy)).subscribe(() => {\n console.log('clear all cache by event');\n UtilsCache.ClearAll();\n });\n }\n\n static PostMessageToParent(data: any) {\n data = this.convertData(data);\n try {\n if (isEmbedFrame()) {\n window?.parent?.postMessage(data, \"*\");\n\n return;\n }\n\n window?.top?.postMessage(data, \"*\");\n } catch (error) {\n console.log(error);\n }\n }\n\n static PostMessageToChildren(data: any) {\n data = this.convertData(data);\n const iframes = document.querySelectorAll(\"iframe\");\n\n Array.from(iframes).forEach(iframe => {\n iframe?.contentWindow?.postMessage(data, '*');\n });\n\n }\n\n static PostMessageToOpener(data: any) {\n if (!window.opener) {\n return;\n }\n data = this.convertData(data);\n\n window.opener.postMessage(data, '*');\n }\n\n private static convertData(data: any) {\n if (!data || !data.type || !data.response) {\n return data;\n }\n data = { ...data };\n const type = data.type;\n\n if (type.includes(this.PREFIX_TYPE)) {\n try {\n JSON.parse(decrypt3rd(data.response));\n\n return data;\n } catch (_) {\n data.response = encrypt3rd(JSON.stringify(data.response));\n\n return data;\n }\n\n }\n try {\n JSON.parse(decrypt(data.response));\n\n return data;\n } catch (_) {\n data.response = encrypt(JSON.stringify(data.response));\n\n return data;\n }\n }\n\n static GetMessage(messageType: string | Array<string>): Subject<MessageEvent> {\n if (!this.initdEvent) {\n throw Error(\"chưa khơi tạo hàm lắng nghe sự kiện, gọi UtilsCommunicateMicro.initEvent(window) tại root component\")\n }\n if (typeof messageType === 'string') {\n let sub = this.subs.get(messageType);\n\n if (!sub) {\n sub = new Subject();\n this.subs.set(messageType, sub);\n\n return sub;\n }\n\n return sub;\n }\n if (!Array.isArray(messageType) || !messageType.length) {\n throw new Error('message type empty');\n }\n const types = messageType.sort().join(';');\n\n let sub = this.subs.get(types);\n\n if (sub) {\n return sub;\n }\n\n sub = new Subject();\n this.subs.set(types, sub);\n this.initSubject(sub, messageType);\n\n return sub;\n }\n\n private static initSubject(subRoot: Subject<MessageEvent>, messageType: Array<string>) {\n messageType.forEach(key => {\n this.GetMessage(key).subscribe(e => {\n subRoot.next(e);\n });\n });\n }\n}\n","/* eslint-disable no-async-promise-executor */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { signal } from '@angular/core';\nimport { UtilsCommunicateMicro } from './communicate-micro';\nimport { decrypt, encrypt, md5 } from './crypto';\nimport { getPlatFromBrowser } from './dom';\nimport { isEmbedFrame } from './function-check-embed-frame';\nimport { isNil } from './helpers';\nimport { UtilsLanguageConstants } from './language';\nimport { uuid } from './uuid';\n\nexport class UtilsCache {\n public static readonly CACHE_EXPIRE_TIME_DEFAULT = 5 * 60;\n public static readonly CACHE_EXPIRE_NONE = -1;\n public static readonly idService = uuid();\n public static typeKeyClearLocalStorage = 'LIBS_UI_CLEAR_LOCAL_STORAGE_EVENT';\n\n private static languageKeyCache = 'SR3xQKxHgffiCevPQRralg';\n private static listKeyKeepWhenClearALll = Array<string>();\n private static initdEvent?: boolean;\n private static language = signal<string>(UtilsLanguageConstants.defaultLang);\n private static storage: { [key: string]: unknown };\n private static dbName = 'libs-ui-cache';\n private static itemIndexByKey = 'key';\n private static dbVersion = 1;\n private static db: IDBDatabase | null = null;\n\n public static init(config: { indexedDBName?: string, languageKeyCache?: string, typeKeyClearLocalStorage?: string, listKeyKeepWhenClearAll?: Array<string> }) {\n if (UtilsCache.initdEvent) {\n return;\n }\n UtilsCache.initdEvent = true;\n if (config.indexedDBName) {\n UtilsCache.dbName = config.indexedDBName;\n }\n if (config.typeKeyClearLocalStorage) {\n UtilsCache.typeKeyClearLocalStorage = config.typeKeyClearLocalStorage;\n }\n if (config.listKeyKeepWhenClearAll) {\n UtilsCache.listKeyKeepWhenClearALll = config.listKeyKeepWhenClearAll;\n }\n if (config.languageKeyCache) {\n UtilsCache.languageKeyCache = config.languageKeyCache;\n }\n this.language.set(UtilsCache.Get(UtilsCache.languageKeyCache, UtilsLanguageConstants.defaultLang));\n }\n\n public static setLang(lang: string) {\n if (lang !== UtilsLanguageConstants.VI && lang !== UtilsLanguageConstants.EN) {\n throw Error('Language support vi | en');\n }\n UtilsCache.language.set(lang);\n UtilsCache.Set(UtilsCache.languageKeyCache, lang);\n }\n\n public static getLang() {\n return UtilsCache.language();\n }\n\n private static openDB() {\n return new Promise(resolve => {\n const request = indexedDB.open(UtilsCache.dbName, UtilsCache.dbVersion);\n\n request.onupgradeneeded = (event: IDBVersionChangeEvent) => {\n const db = (event.target as IDBOpenDBRequest).result;\n\n if (!db.objectStoreNames.contains(UtilsCache.dbName)) {\n const objectStore = db.createObjectStore(UtilsCache.dbName, { keyPath: UtilsCache.itemIndexByKey, autoIncrement: true });\n\n objectStore.createIndex(UtilsCache.itemIndexByKey, UtilsCache.itemIndexByKey, { unique: true });\n }\n };\n\n request.onsuccess = () => {\n UtilsCache.db = request.result;\n resolve(true);\n };\n\n request.onerror = (event) => {\n console.error('Error opening IndexedDB:', event);\n resolve(false);\n };\n });\n }\n\n private static async getObjectStore() {\n if (!UtilsCache.db) {\n await UtilsCache.openDB();\n }\n const transaction = UtilsCache.db?.transaction([UtilsCache.dbName], 'readwrite');\n if (!transaction) {\n return null;\n }\n\n return transaction.objectStore(UtilsCache.dbName);\n }\n\n private static get LocalStorage(): any {\n try {\n if (typeof window.localStorage !== 'undefined') {\n const OS = getPlatFromBrowser();\n\n if (OS.includes('Safari') && parseFloat(OS.split(' ').pop() || '0') >= 16) {\n\n return this.getLocalStorageFakeOnSafari();\n }\n\n return localStorage;\n }\n\n return this.getLocalStorageFake();\n } catch (error) {\n console.log(error);\n return this.getLocalStorageFake();\n }\n }\n\n private static getLocalStorageFakeOnSafari() {\n if (typeof window.localStorage !== 'undefined' && !UtilsCache.storage && Object.keys(localStorage).length) {\n this.storage = { ...localStorage };\n }\n\n return {\n setItem: (key: string, value: string) => {\n localStorage.setItem(key, value);\n this.storage[key] = value;\n },\n getItem: (key: string) => {\n const value = localStorage.getItem(key);\n\n if (value) {\n return value;\n }\n\n if (!this.storage || isNil(this.storage[key])) {\n return null;\n }\n\n localStorage.setItem(key, this.storage[key] as string);\n\n return this.storage?.[key];\n },\n removeItem: (key: string) => {\n delete this.storage?.[key];\n localStorage.removeItem(key);\n },\n clear: () => {\n this.storage = {};\n localStorage.clear();\n }\n };\n }\n\n private static getLocalStorageFake() {\n if (!UtilsCache.storage) {\n this.storage = {};\n }\n\n return {\n setItem: (key: string, value: unknown) => {\n this.storage[key] = value;\n },\n getItem: (key: string) => {\n return this.storage?.[key];\n },\n removeItem: (key: string) => {\n delete this.storage?.[key];\n },\n clear: () => {\n this.storage = {};\n }\n };\n }\n\n public static async GetAsync<T = any>(key: string, default_value?: any, isKeyMD5 = false): Promise<T> {\n key = isKeyMD5 ? key : md5(key);\n\n return new Promise<T>(async (resolve, reject) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n if (!objectStore) {\n\n return resolve(default_value);\n }\n const request = objectStore.get(key);\n\n request.onsuccess = () => {\n if (!request.result) {\n return resolve(default_value);\n }\n const data = JSON.parse(decrypt(request.result.value));\n\n if (data.expire === UtilsCache.CACHE_EXPIRE_NONE) {\n return resolve(data.json);\n }\n const currentMillisecond = (new Date().valueOf() / 1000);\n\n if (data.expire < currentMillisecond) {\n\n return resolve(default_value);\n }\n\n return resolve(data.json);\n };\n\n request.onerror = () => {\n reject(request.error);\n };\n });\n }\n\n public static Get<T = any>(key: string, default_value?: any): T { // support cho những file không thể inject UtilsCache\n if (!key) {\n return this.GetDefaultValueBySpecificKey(key, default_value);\n }\n const cachedData = this.LocalStorage.getItem(key);\n\n if (!cachedData) {\n return this.GetDefaultValueBySpecificKey(key, default_value);\n }\n try {\n const data = JSON.parse(decrypt(cachedData));\n\n if (data.expire === UtilsCache.CACHE_EXPIRE_NONE) {\n return data.value ?? default_value;\n }\n const currentMillisecond = (new Date().valueOf() / 1000);\n\n if (data.expire < currentMillisecond) {\n return this.GetDefaultValueBySpecificKey(key, default_value);\n }\n\n return data.value;\n\n } catch (error) {\n console.log(error);\n\n return this.GetDefaultValueBySpecificKey(key, default_value);\n }\n }\n\n public static GetDefaultValueBySpecificKey(key: string, default_value: any) {\n return default_value;\n\n }\n\n public static async SetAsync<T = any>(key: string, value: any, expireTimeBySecond = UtilsCache.CACHE_EXPIRE_TIME_DEFAULT, isKeyMD5 = false): Promise<T> { // support inject UtilsCache\n return new Promise<T>(async (resolve, reject) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n key = isKeyMD5 ? key : md5(key);\n try {\n const currentMillisecond = expireTimeBySecond === UtilsCache.CACHE_EXPIRE_NONE ? UtilsCache.CACHE_EXPIRE_NONE : (new Date().valueOf() / 1000) + expireTimeBySecond;\n const data: any = {\n value: encrypt(JSON.stringify({ json: value, expire: currentMillisecond })),\n };\n data[UtilsCache.itemIndexByKey] = key;\n\n if (!objectStore) {\n return reject(new Error('Can not open object store'));\n }\n const request = objectStore?.put(data);\n request.onsuccess = () => {\n resolve(request.result as any);\n };\n\n request.onerror = () => {\n reject(request.error);\n };\n\n } catch (error) {\n reject(error);\n }\n });\n }\n\n\n static Set(key: string, value: any, expireTimeBySecond = UtilsCache.CACHE_EXPIRE_TIME_DEFAULT): boolean { // support cho những file không inject UtilsCache\n const currentMillisecond = expireTimeBySecond === UtilsCache.CACHE_EXPIRE_NONE ? UtilsCache.CACHE_EXPIRE_NONE : (new Date().valueOf() / 1000) + expireTimeBySecond;\n const data = {\n value: value,\n expire: currentMillisecond\n };\n\n try {\n this.LocalStorage.setItem(key, encrypt(JSON.stringify(data)));\n return true;\n } catch (error) {\n console.log(error);\n return false;\n }\n }\n\n public static async ClearAsync(key: string, isMD5 = false) {\n return new Promise<void>(async (resolve) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n if (!objectStore) {\n return resolve();\n }\n const request = objectStore.delete(isMD5 ? key : md5(key));\n\n request.onsuccess = () => {\n resolve();\n };\n request.onerror = () => {\n resolve();\n };\n });\n }\n\n\n static Clear(key: string) {\n if (key.includes('kc-callback-')) {\n return;\n }\n this.LocalStorage.removeItem(key);\n }\n\n public static ClearAllAsync() {\n return new Promise<void>(async (resolve, reject) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n if (!objectStore) {\n return resolve();\n }\n\n const request = objectStore.clear();\n request.onsuccess = () => {\n console.log('Database deleted successfully');\n resolve();\n };\n\n request.onerror = (event: Event) => {\n console.error('Error deleting database:', (event.target as IDBRequest).error);\n reject((event.target as IDBRequest).error);\n };\n });\n }\n\n static ClearAll() {\n if (isEmbedFrame()) {\n const data = {\n type: UtilsCache.typeKeyClearLocalStorage,\n response: {\n idEvent: this.idService\n }\n };\n UtilsCommunicateMicro.PostMessageToParent(data);\n }\n const keys = [...UtilsCache.listKeyKeepWhenClearALll];\n Object.keys(this.LocalStorage).forEach(key => {\n if (key.includes('kc-callback-')) {\n keys.push(key);\n }\n });\n\n const stores = UtilsCache.GetDataByKeys(Array.from(keys));\n\n this.LocalStorage.clear();\n\n UtilsCache.SetDataByKey(stores);\n }\n\n private static GetDataByKeys(keys: Array<string>) {\n const stores = new Map();\n\n keys.forEach((key: string) => {\n if (key.includes('kc-callback-')) {\n stores.set(key, this.LocalStorage.getItem(key));\n\n return;\n }\n stores.set(key, UtilsCache.Get(key));\n });\n\n return stores;\n }\n\n private static SetDataByKey(stores: Map<string, any>) {\n stores.forEach((value: any, key: string) => {\n if (key.includes('kc-callback-')) {\n this.LocalStorage.setItem(key, value);\n\n return;\n }\n if (key === UtilsCache.languageKeyCache) {\n return UtilsCache.setLang(value);\n }\n UtilsCache.Set(key, value, UtilsCache.CACHE_EXPIRE_NONE);\n });\n }\n\n public static DeleteKeyStartWithAsync(keyCacheStartWith: string, isKeyMD5 = false) {\n return new Promise(async (resolve) => {\n const objectStore = await UtilsCache.getObjectStore();\n\n if (!objectStore) {\n return resolve({});\n }\n\n // Lấy tất cả các keys từ index\n const request = objectStore.getAll();\n\n keyCacheStartWith = isKeyMD5 ? keyCacheStartWith : md5(keyCacheStartWith);\n\n\n request.onsuccess = (e: any) => {\n const data = e.target.result as Array<any>;\n\n if (!Array.isArray(data)) {\n return resolve({});\n }\n\n data.forEach(obj => {\n if (obj[UtilsCache.itemIndexByKey].startsWith(keyCacheStartWith)) {\n UtilsCache.ClearAsync(obj[UtilsCache.itemIndexByKey], true);\n }\n });\n\n return resolve({});\n };\n\n request.onerror = () => {\n return resolve({});\n };\n });\n }\n\n public static DeleteKeyStartWith(keyCache: string, isMD5 = false) {\n keyCache = isMD5 ? md5(keyCache) : keyCache;\n const keys = Object.keys(UtilsCache.LocalStorage);\n\n if (!keys || !keys.length) {\n return;\n }\n\n keys.forEach(key => {\n if (key.startsWith(keyCache)) {\n this.Clear(key);\n }\n });\n }\n\n public static DeleteDatabaseIndexDB(dbName: string) {\n return new Promise((resolve, reject) => {\n const request = indexedDB.deleteDatabase(dbName);\n\n request.onsuccess = () => {\n console.log('Database deleted successfully');\n resolve(true);\n };\n\n request.onerror = (event: Event) => {\n console.error('Error deleting database:', (event.target as IDBRequest).error);\n reject((event.target as IDBRequest).error);\n };\n\n request.onblocked = () => {\n console.warn('Delete request is blocked');\n };\n });\n }\n}\n","import { UtilsCache } from \"./cache\";\nimport { isNil } from \"./helpers\";\nimport { UtilsLanguageConstants } from \"./language\";\n\n\nexport const formatNumber = (value: string | number): string => {\n const lang = UtilsCache.getLang();\n\n if (lang === UtilsLanguageConstants.EN) {\n return `${value}`.replace(/[,]/g, '');\n }\n\n return `${value}`.replace(/[.]/g, '').replace(/[,]/g, '.');\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const viewDataNumberByLanguage = (value: string | number, acceptNegativeValue: boolean | undefined, parseFixed = 1, ignoreFormatSeparator = false, ignoreParseFloat = false): any => {\n const lang = UtilsCache.getLang()\n\n if (!`${value}`.trim()) {\n return '';\n }\n if (isNil(value) || (!acceptNegativeValue && +value <= 0)) {\n return 0;\n }\n if (typeof value === 'string' && !ignoreFormatSeparator) {\n value = formatNumber(value);\n }\n\n const isFloat = value.toString().includes('.');\n const [intStr, floatStr] = value.toString().split('.');\n\n if (!floatStr?.length) {\n parseFixed = 0;\n }\n const round = (value: number, parseFixed: number) => {\n const fixed = Math.pow(10, parseFixed);\n\n return Math.round(value * fixed) / fixed;\n };\n\n if (parseFixed > (floatStr?.length || 0)) {\n const maxParseFixed = (acceptNegativeValue && +value < 0) ? 17 : 16;\n const fixed = maxParseFixed - (intStr?.length || 0);\n\n parseFixed = parseFixed < fixed ? parseFixed : fixed;\n }\n\n if (isFloat && !ignoreParseFloat) {\n value = parseFloat(round(+value, parseFixed).toFixed(parseFixed));\n }\n\n // Xử lý không format dữ liệu phần thập phân\n const valueString = value.toString();\n const index = valueString.indexOf('.');\n\n if (index !== -1 && (parseFixed > 3 || ignoreParseFloat)) {\n let decimalPart = valueString.substring(index + 1, valueString.length);\n let int = valueString.substring(0, index + 1);\n\n if (ignoreParseFloat) {\n decimalPart = decimalPart.substring(0, parseFixed);\n }\n if (lang === UtilsLanguageConstants.EN) {\n int = int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n\n return `${int}${decimalPart}`;\n }\n int = int.replace('.', ',').replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n\n return `${int}${decimalPart}`;\n }\n if (index === -1 || parseFixed <= 3) {\n if (lang === UtilsLanguageConstants.EN) {\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n }\n\n return value.toString().replace('.', ',').replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n }\n};","export const emojiPattern = ()=> {\n return /(\\u00a9|\\u00ae|[\\u2000-\\u3300]|\\ud83c[\\ud000-\\udfff]|\\ud83d[\\ud000-\\udfff]|\\ud83e[\\ud000-\\udfff])/g;\n}\nexport const removeEmoji = (text: string) => {\n if (!text || !text.trim()) {\n return text;\n }\n \n return text.replace(emojiPattern(), '');\n};","export const escapeHtml = (data: string): string => {\n if (!data || typeof data !== 'string') {\n return data;\n }\n\n return data\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\n};\n","export const deleteUnicode = (str: string) => {\n str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, 'a');\n str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ|ễ/g, 'e');\n str = str.replace(/ì|í|ị|ỉ|ĩ/g, 'i');\n str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, 'o');\n str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, 'u');\n str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, 'y');\n str = str.replace(/đ/g, 'd');\n str = str.replace(/À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ|Ặ|Ẳ|Ẵ/g, 'A');\n str = str.replace(/È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ/g, 'E');\n str = str.replace(/Ì|Í|Ị|Ỉ|Ĩ/g, 'I');\n str = str.replace(/Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ/g, 'O');\n str = str.replace(/Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ/g, 'U');\n str = str.replace(/Ỳ|Ý|Ỵ|Ỷ|Ỹ/g, 'Y');\n str = str.replace(/Đ/g, 'D');\n\n str = str.replace(/\\u0300|\\u0301|\\u0303|\\u0309|\\u0323/g, \"\"); // ̀ ́ ̃ ̉ ̣ huyền, sắc, ngã, hỏi, nặng\n str = str.replace(/\\u02C6|\\u0306|\\u031B/g, \"\"); // ˆ ̆ ̛ Â, Ê, Ă, Ơ, Ư\n\n return str.normalize();\n};","const listColorDefine: Array<string> = ['#E62222', '#B81B1B', '#EB4E4E', '#F97316', '#C75C12', '#FA8F45', '#FFB700', '#CC9200', '#FFC533', '#84CC16', '#6AA312', '#9dd645', '#00BC62', '#00A757', '#33DA8A', '#06B6D4', '#1B59C4', '#4E8CF7', '#0EA5E9',\n '#1B59C4', '#4E8CF7', '#226FF5', '#1B59C4', '#4E8CF7', '#6366F1', '#4F52C1', '#8285F4', '#5B04B3', '#49038F', '#7C36C2', '#D946EF', '#AE38BF', '#E16BF2', '#EC4899', '#BD3A7A', '#F06DAD', '#F43F5E', '#C3324B', '#F6657E', '#757380', '#5E5C66', '#918F99',\n '#202020', '#1A1A1A', '#4D4D4D'\n];\n\nexport const getColorById = (str: string): string => {\n let hashString = 0;\n\n if (!str) {\n return '';\n }\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n\n hashString = ((hashString << 5) - hashString) + char;\n hashString = hashString & hashString;\n }\n\n return listColorDefine[Math.abs(hashString) % listColorDefine.length];\n};\n\n","export const ERROR_MESSAGE_EMPTY_VALID = 'i18n_valid_empty_message';\nexport const ERROR_MESSAGE_PATTEN_VALID = 'i18n_valid_pattern_message';\nexport const ERROR_MESSAGE_MIN_VALID = 'i18n_message_error_input_min_value';\nexport const ERROR_MESSAGE_MAX_VALID = 'i18n_message_error_input_max_value';\nexport const ERROR_MESSAGE_MIN_LENGTH = 'i18n_message_error_input_min_length';\nexport const ERROR_MESSAGE_MAX_LENGTH = 'i18n_message_error_input_max_length';\nexport const CHARACTER_DATA_EMPTY = '__';\nexport const DEFAULT_START_PAGE_0 = 'defaultStartPage0';","/* eslint-disable no-useless-escape */\nexport const patternEmail = () => {\n return /^[A-z0-9]+[A-z0-9\\_\\.\\+\\-]*[A-z0-9]@[A-z0-9]+[A-z0-9\\_\\.\\+\\-]*[A-z0-9]\\.[A-z0-9]+[A-z0-9\\_\\.\\+\\-]*[A-z0-9]$/;\n}\nexport const patternUrl = () => {\n return /^(http|https|ftp):(\\/){2}[^\\s]+[.]{1}[^\\s]+$/;\n}\n\nexport const patternHostUrl = () => {\n return /^((https|http|ftp):[/]{2}[^/\\s]+)/;\n}\n\nexport const patternDomain = () => {\n return /^([a-zA-Z0-9])(([a-z0-9-]{1,61})?[a-z0-9]{1})?(\\.[a-z0-9](([a-z0-9-]{1,61})?[a-z0-9]{1})?)?(\\.[a-zA-Z]{2,4})+$/;\n}\n\nexport const patternMobilePhone = () => {\n return /^(\\+?84|0|84)([0-9]{9})$/;\n}\n\nexport const patternPhone = () => {\n return /^(\\+?84|[0-9]|84)([0-9]{2,9})$/;\n}\n\nexport const patternPhoneNormal = () => {\n return /^(\\+?84|[0-9]|84)([0-9]{9,10})$/;\n}\n\nexport const patternNumber = () => {\n return /\\d+/g;\n}\nexport const patternEncodeUri = () => {\n return /%([0-9A-F]{2})/g;\n}\nexport const patternName = () => {\n return /^\\w+[A-Za-z\\s\\d]+$/;\n}\nexport const patternNameUtf8 = () => {\n return /^[ àáảãạăắằẵặẳâầấậẫẩđèéẻẽẹêềếểễệìíỉĩịòóỏõọôồốổỗộơờớởỡợùúủũụưừứửữựỳýỷỹÀÁẢÃẠĂẮẰẴẶẲÂẦẤẬẪẨĐÈÉẺẼẸÊỀẾỂỄỆÌÍỈĨỊÒÓỎÕỌÔỒỐỔỖỘƠỜỚỞỠỢÙÚỦŨỤƯỪỨỬỮỰỲÝỶỸA-Za-z0-9]+$/;\n}\nexport const patternNameSpecial = () => {\n return /[~!@#$%^&*()-+=<>,?\\/\\\\:;\"']/;\n}\nexport const patternNameProfile = () => {\n return /([\\w\\W\\d\\s]+)+/;\n}\nexport const patternEmoji = () => {\n return /(\\u00a9|\\u00ae|[\\u2000-\\u3300]|\\ud83c[\\ud000-\\udfff]|\\ud83d[\\ud000-\\udfff]|\\ud83e[\\ud000-\\udfff])/g;\n}\nexport const patternRuleFieldReplace = () => {\n return /[{]{2}[a-zA-Z_-]+[}]{2}/g;\n}\nexport const patternGetFieldByRuleFieldReplace = () => {\n return /[a-zA-Z_-]+/g;\n}\n\nexport const patternPem = () => {\n return /^(0|1):([0-9]{1,2}):(\\{\\{path-api\\}\\}):([a-zA-Z0-9\\/]+)$/g;\n}\n\nexport const patternTax = () => {\n return /^([0-9]){10}(-[0-9]{3})?$/;\n}\n\nexport const patternKey = () => {\n return /^([0-9]){10}(-[0-9]{3})?$/;\n}\n\nexport const patternAccount = () => {\n return /^(?=.*@)[a-z0-9@._-]{2,63}$/;\n}\n","export type TYPE_FUNCTION_XSS = (data: string) => Promise<string>;\nlet functionXssFilter: TYPE_FUNCTION_XSS = async (value: string): Promise<string> => {\n return value;\n}\n\nexport const updateFunctionXssFilter = (functionCustom: TYPE_FUNCTION_XSS) => {\n functionXssFilter = functionCustom;\n}\n\nexport const xssFilter: TYPE_FUNCTION_XSS = async (data: string) => {\n return await functionXssFilter(data);\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { signal, TemplateRef, ElementRef, WritableSignal, isSignal } from \"@angular/core\";\nimport { cloneDeep } from \"./helpers\";\n\nexport const convertObjectToSignal = <T = any>(data: any, isCloneDeep = true): T => {\n if (data === null || typeof data !== 'object' || isSignal(data)) {\n return data;\n }\n if (Array.isArray(data)) {\n return signal(data.map(item => convertObjectToSignal(item, isCloneDeep))) as T;\n }\n\n if (data instanceof Map) {\n const mapCopy = new Map();\n Array.from(data.keys()).forEach(key => {\n mapCopy.set(key, convertObjectToSignal(data.get(key), isCloneDeep));\n });\n return signal(mapCopy) as T;\n }\n\n data = signal(isCloneDeep ? { ...data } : data);\n\n for (const key in data()) {\n const value = data()[key];\n if (value instanceof TemplateRef || value instanceof ElementRef || value instanceof Element || value instanceof Date || value instanceof RegExp || value instanceof Set || value instanceof Map) {\n continue;\n }\n if (Object.prototype.hasOwnProperty.call(data(), key)) {\n data()[key] = convertObjectToSignal(value, isCloneDeep);\n }\n }\n\n return data as T;\n};\n\nexport const convertSignalToObject = <T = any>(data: any, isCloneDeep = true): T => {\n if (data === null || (typeof data !== 'function' && typeof data !== 'object')) {\n return data;\n }\n if (isSignal(data)) {\n data = (data as WritableSignal<unknown>)();\n }\n\n\n if (Array.isArray(data)) {\n if (!isSignal(data[0])) {\n return data as T;\n }\n return data.map(item => convertSignalToObject(isCloneDeep ? cloneDeep(item) : item, isCloneDeep)) as T;\n }\n\n\n if (data instanceof Map) {\n const mapCopy = new Map();\n Array.from(data.keys()).forEach(key => {\n mapCopy.set(key, convertSignalToObject(isCloneDeep ? cloneDeep(data.get(key)) : data.get(key), isCloneDeep));\n });\n return mapCopy as T;\n }\n const result: Record<string, any> = isCloneDeep ? {} : data;\n for (const key in data) {\n const value = data[key];\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n result[key] = convertSignalToObject(isCloneDeep ? cloneDeep(value) : value, isCloneDeep);\n }\n }\n\n return result as T;\n};\n","import * as dayjs from 'dayjs';\nexport type TYPE_FUNCTION_FORMAT_DATE = (time: string | number | dayjs.Dayjs | undefined | null, format: string, lang?: string) => string;\nlet functionFormatDate: TYPE_FUNCTION_FORMAT_DATE | undefined = undefined;\n\n\nexport const updateFunctionFormatDate = (functionCustom: TYPE_FUNCTION_FORMAT_DATE) => {\n functionFormatDate = functionCustom;\n}\n\nexport const formatDate = () => functionFormatDate;","import { isNil, omitBy } from './helpers';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const endCodeUrl = (objectData: any, isBody: boolean): string => {\n objectData = omitBy(objectData, param => param === '' || isNil(param));\n let res = '';\n\n for (const p in objectData) {\n res += `&${p}=${encodeURIComponent(objectData[p])}`;\n }\n\n return res === '' ? '' : `${isBody ? '' : '?'}${res.substring(1)}`;\n};","export const convertFileToBase64 = (file: File): Promise<string | ArrayBuffer> => {\n return new Promise((resolve) => {\n const reader = new FileReader();\n\n reader.readAsDataURL(file);\n reader.onload = (event) => {\n resolve(event.target?.result ?? '');\n };\n });\n};","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["key","keyStore","listColorDefine"],"mappings":"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"}
|
package/package.json
CHANGED
package/pattern.d.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
export declare const
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const
|
|
6
|
-
export declare const
|
|
7
|
-
export declare const
|
|
8
|
-
export declare const
|
|
9
|
-
export declare const
|
|
10
|
-
export declare const
|
|
11
|
-
export declare const
|
|
12
|
-
export declare const
|
|
13
|
-
export declare const
|
|
14
|
-
export declare const
|
|
15
|
-
export declare const
|
|
16
|
-
export declare const
|
|
17
|
-
export declare const
|
|
18
|
-
export declare const
|
|
19
|
-
export declare const
|
|
20
|
-
export declare const
|
|
1
|
+
export declare const patternEmail: () => RegExp;
|
|
2
|
+
export declare const patternUrl: () => RegExp;
|
|
3
|
+
export declare const patternHostUrl: () => RegExp;
|
|
4
|
+
export declare const patternDomain: () => RegExp;
|
|
5
|
+
export declare const patternMobilePhone: () => RegExp;
|
|
6
|
+
export declare const patternPhone: () => RegExp;
|
|
7
|
+
export declare const patternPhoneNormal: () => RegExp;
|
|
8
|
+
export declare const patternNumber: () => RegExp;
|
|
9
|
+
export declare const patternEncodeUri: () => RegExp;
|
|
10
|
+
export declare const patternName: () => RegExp;
|
|
11
|
+
export declare const patternNameUtf8: () => RegExp;
|
|
12
|
+
export declare const patternNameSpecial: () => RegExp;
|
|
13
|
+
export declare const patternNameProfile: () => RegExp;
|
|
14
|
+
export declare const patternEmoji: () => RegExp;
|
|
15
|
+
export declare const patternRuleFieldReplace: () => RegExp;
|
|
16
|
+
export declare const patternGetFieldByRuleFieldReplace: () => RegExp;
|
|
17
|
+
export declare const patternPem: () => RegExp;
|
|
18
|
+
export declare const patternTax: () => RegExp;
|
|
19
|
+
export declare const patternKey: () => RegExp;
|
|
20
|
+
export declare const patternAccount: () => RegExp;
|