(self["webpackChunkbrowser_extension"] = self["webpackChunkbrowser_extension"] || []).push([["487"], { 56528(module, __unused_webpack_exports, __webpack_require__) { // Imports var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = __webpack_require__(40185); var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(34914); var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.zSnHzYLA4F3n9fZO { color: var(--text-links-error-link-default); font-size: 16px; margin: 25px 16px 0 16px; } `, ""]); // Exports ___CSS_LOADER_EXPORT___.locals = { "errorMessage": `zSnHzYLA4F3n9fZO` }; module.exports = ___CSS_LOADER_EXPORT___; }, 90686(module, __unused_webpack_exports, __webpack_require__) { // Imports var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = __webpack_require__(40185); var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(34914); var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.D7zvKAGAoSQ2sv7p { position: relative; } .kjJDTb66cUfoZhxC { position: absolute; right: 0; width: 240px; top: calc(100% + 8px); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12); border-radius: 8px; overflow: hidden; background: var(--fills-menus-dropdown-menu-background-default); z-index: var(--z-idx-options-menu-dropdown); } .d5taSnKn4rQPv5qm { background: transparent; cursor: pointer; border: 0; } .nCMFxYhqwwHnoXua { width: 100%; display: flex; align-items: center; padding: 18px 16px; background: transparent; border: 0; font-size: 16px; font-weight: 400; text-align: left; text-decoration: none; color: inherit; cursor: pointer; } .nCMFxYhqwwHnoXua + .nCMFxYhqwwHnoXua { border-top: 1px solid var(--stroke-dividers-item-divider-default); } .nCMFxYhqwwHnoXua:hover { background-color: var(--fills-menus-dropdown-menu-background-hovered); } .nCMFxYhqwwHnoXua:active { background-color: var(--fills-menus-dropdown-menu-background-pressed); } .nCMFxYhqwwHnoXua:disabled { opacity: 0.5; cursor: default; } .R8RNflgzpAsISWnp { color: var(--stroke-icons-error-icon-default); } @media (forced-colors: active) { .kjJDTb66cUfoZhxC { border: 1px solid CanvasText; } } `, ""]); // Exports ___CSS_LOADER_EXPORT___.locals = { "dropdownContainer": `D7zvKAGAoSQ2sv7p`, "dropdown": `kjJDTb66cUfoZhxC`, "menuButton": `d5taSnKn4rQPv5qm`, "menuItem": `nCMFxYhqwwHnoXua`, "menuItemDanger": `R8RNflgzpAsISWnp` }; module.exports = ___CSS_LOADER_EXPORT___; }, 10240(module, __unused_webpack_exports, __webpack_require__) { // Imports var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = __webpack_require__(40185); var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(34914); var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.FxSzKrf4CiYWkg0n { display: inline-block; } .P3MKD3zlTlQAJNJV { cursor: help; display: flex; } `, ""]); // Exports ___CSS_LOADER_EXPORT___.locals = { "popoverDefault": `FxSzKrf4CiYWkg0n`, "popoverComingSoon": `P3MKD3zlTlQAJNJV` }; module.exports = ___CSS_LOADER_EXPORT___; }, 84582(module, __unused_webpack_exports, __webpack_require__) { // Imports var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = __webpack_require__(40185); var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(34914); var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.bvl8tW6wIIQ7lHQm { font-size: 14px; line-height: 22px; } @media (max-width: 640px) {.bvl8tW6wIIQ7lHQm { text-align: center } } .UP0ngU2DLjAVrQke { font-size: 16px; line-height: 24px; padding: 20px 0 24px; } .D7_roEcToNI3468v { margin-right: 4px; } .D7_roEcToNI3468v.BS3asNEIpCkVXRnD { color: var(--text-main-text-main-default); word-break: break-all; } .mbCe0rRpXgQPMOLg label.zX_KBPsc3Ibu7ArB:focus-within { outline: 2px solid var(--outline); } .mbCe0rRpXgQPMOLg label.zX_KBPsc3Ibu7ArB input[type="checkbox"] { display: block; } .ugdJvxQD_0A3fz4F { color: var(--text-description-description-default); font-size: 14px; line-height: 18px; padding-left: 32px; } `, ""]); // Exports ___CSS_LOADER_EXPORT___.locals = { "desc": `bvl8tW6wIIQ7lHQm`, "filterInfo": `UP0ngU2DLjAVrQke`, "filterInfoItem": `D7_roEcToNI3468v`, "filterInfoItemUrl": `BS3asNEIpCkVXRnD`, "filterTrusted": `mbCe0rRpXgQPMOLg`, "checkboxLabel": `zX_KBPsc3Ibu7ArB`, "filterTrustedDesc": `ugdJvxQD_0A3fz4F` }; module.exports = ___CSS_LOADER_EXPORT___; }, 28859(module, __unused_webpack_exports, __webpack_require__) { // Imports var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = __webpack_require__(40185); var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(34914); var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@layer components { @media (min-width: 640px) { .dModm_8WK4sgNztA { padding-right: 24px } } .i8k2oE9WDpg2idB1 { margin-bottom: 16px; } .o3K9FpDxW0Mw3OTB { font-size: 14px; line-height: 1.3; text-align: center; } @media (min-width: 640px) { .o3K9FpDxW0Mw3OTB { text-align: left } } .fXNvMe6QsUBBSkIm { margin: 0; padding: 0; list-style: none; } .MrGTBob3AmoO2uQf { padding-bottom: 16px; } @media (max-width: 640px) { .MrGTBob3AmoO2uQf { text-align: left; padding-top: 16px } } .glhOBPbcZiwCekmZ { display: flex; width: 100%; } .Ura4tKHvvAgitI7n { font-size: 16px; line-height: 24px; font-weight: 600; padding-right: 4px; } .PUrbqFFU7bAYKx15 { display: flex; color: var(--stroke-icons-product-icon-default); } .Sf1Fng92tR8KKC6y { font-size: 14px; line-height: 1.3; font-weight: 400; color: var(--text-description-description-default); } .s_b8DnRawVsL6EVV { margin: 24px 0 16px 0; } .C_I4YS5ut3kHkV29 { color: var(--text-links-link-default); } } `, ""]); // Exports ___CSS_LOADER_EXPORT___.locals = { "content": `dModm_8WK4sgNztA`, "text": `i8k2oE9WDpg2idB1`, "description": `o3K9FpDxW0Mw3OTB`, "filters": `fXNvMe6QsUBBSkIm`, "filterItem": `MrGTBob3AmoO2uQf`, "filterHeader": `glhOBPbcZiwCekmZ`, "filterName": `Ura4tKHvvAgitI7n`, "filterHomepageLink": `PUrbqFFU7bAYKx15`, "filterDescription": `Sf1Fng92tR8KKC6y`, "filterPolicy": `s_b8DnRawVsL6EVV`, "filterPolicyLink": `C_I4YS5ut3kHkV29` }; module.exports = ___CSS_LOADER_EXPORT___; }, 51405(module, __unused_webpack_exports, __webpack_require__) { // Imports var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = __webpack_require__(40185); var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(34914); var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.g2mK6cA_nIGaNtUB { display: flex; justify-content: space-between; padding: 16px; } .g2mK6cA_nIGaNtUB .KyU9xgjjsXYyDoB0 { display: flex; align-items: flex-start; } .g2mK6cA_nIGaNtUB .jpo149u7fOoUiUd6 { cursor: pointer; text-decoration: none; text-align: center; border: 0; background-color: transparent; padding: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .g2mK6cA_nIGaNtUB .KxdIddhk8kSoXfAr { line-height: 24px; } .g2mK6cA_nIGaNtUB .xQoOAlVDzxAzJGKF { padding-left: 12px; padding-right: 32px; line-height: 1.3; text-align: left; } .g2mK6cA_nIGaNtUB .e2m0Ii0s5REOopqg { font-size: 16px; font-weight: 600; line-height: 24px; } .g2mK6cA_nIGaNtUB .cWSUr4sZSQ0VlRIN { margin-top: 2px; font-size: 14px; font-weight: 400; color: var(--text-description-description-default); } `, ""]); // Exports ___CSS_LOADER_EXPORT___.locals = { "extensionUpdate": `g2mK6cA_nIGaNtUB`, "info": `KyU9xgjjsXYyDoB0`, "checkBtn": `jpo149u7fOoUiUd6`, "updateBtn": `KxdIddhk8kSoXfAr`, "text": `xQoOAlVDzxAzJGKF`, "title": `e2m0Ii0s5REOopqg`, "desc": `cWSUr4sZSQ0VlRIN` }; module.exports = ___CSS_LOADER_EXPORT___; }, 53690(module, __unused_webpack_exports, __webpack_require__) { // Imports var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = __webpack_require__(40185); var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(34914); var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.cMjEWIdFLUcM0MAV { cursor: pointer; display: flex; justify-content: space-between; } @media (hover: hover) { .cMjEWIdFLUcM0MAV:hover .GQ9XbhvyDH4eT04v::before { opacity: 0; } } .GQ9XbhvyDH4eT04v { position: relative; padding-top: 18px; border-radius: 8px; transition: var(--t3); margin-left: 4px; } .GQ9XbhvyDH4eT04v::before { content: ""; position: absolute; width: 1px; background-color: var(--stroke-icons-gray-icons-disabled); left: -2px; top: 16px; bottom: 14px; } @media (hover: hover) { .GQ9XbhvyDH4eT04v:hover { background-color: var(--fills-backgrounds-page-background-hovered); } } `, ""]); // Exports ___CSS_LOADER_EXPORT___.locals = { "group": `cMjEWIdFLUcM0MAV`, "checkbox": `GQ9XbhvyDH4eT04v` }; module.exports = ___CSS_LOADER_EXPORT___; }, 69678(module, __unused_webpack_exports, __webpack_require__) { // Imports var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = __webpack_require__(40185); var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(34914); var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.rxGaw85kvcgUySL2 { text-align: left; background: transparent; border: none; } .hhzc5K2wRMUFNZe4 { list-style: none; margin: 0; padding: 0; } .vOAj8i7lcV0OynWz { opacity: 0.5; pointer-events: none; } @media (max-width: 640px) { .NtW4OInbOnYOQO31 { /* Subtract horizontal padding: 16px left + 16px right */ width: calc(100% - 32px) } }`, ""]); // Exports ___CSS_LOADER_EXPORT___.locals = { "back": `rxGaw85kvcgUySL2`, "list": `hhzc5K2wRMUFNZe4`, "listDisabled": `vOAj8i7lcV0OynWz`, "addCustomFilterMobile": `NtW4OInbOnYOQO31` }; module.exports = ___CSS_LOADER_EXPORT___; }, 61605(module, __unused_webpack_exports, __webpack_require__) { // Imports var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = __webpack_require__(40185); var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(34914); var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.yk8kXERpnVwPSJlb { position: relative; display: flex; flex-direction: row; margin-top: 24px; padding: 24px; gap: 24px; border-radius: 16px; background: var(--fills-backgrounds-page-background-additional-default); } @media (max-width: 640px) {.yk8kXERpnVwPSJlb { flex-direction: column-reverse; margin: 24px 16px 0 } } .Z77PKFiDKkrzaO6V { position: absolute; top: 12px; right: 12px; border: 0; background-color: transparent; cursor: pointer; opacity: 0; transition: var(--t2); } .yk8kXERpnVwPSJlb:hover .Z77PKFiDKkrzaO6V, .yk8kXERpnVwPSJlb:focus-within .Z77PKFiDKkrzaO6V { opacity: 1; } .Z77PKFiDKkrzaO6V:focus-visible { opacity: 1; } @media (max-width: 640px) { .Z77PKFiDKkrzaO6V { opacity: 1 } } .U6KF980boNntI5nv { font-size: 20px; font-weight: 700; line-height: 1.2; color: var(--text-main-text-main-default); } .hhfTjAUHAEiNdJWk { margin-top: 18px; font-size: 14px; font-weight: 400; line-height: 1.5; color: var(--text-main-text-main-default); } .wuEWmC277wjgQP6t { flex-shrink: 0; width: 177px; height: 120px; display: block; } .WI6jDhvOAcUnJyXn { margin-top: 26px; display: inline-block; } @media (forced-colors: active) { .yk8kXERpnVwPSJlb { border: 1px solid CanvasText; } } `, ""]); // Exports ___CSS_LOADER_EXPORT___.locals = { "container": `yk8kXERpnVwPSJlb`, "close": `Z77PKFiDKkrzaO6V`, "title": `U6KF980boNntI5nv`, "description": `hhfTjAUHAEiNdJWk`, "image": `wuEWmC277wjgQP6t`, "button": `WI6jDhvOAcUnJyXn` }; module.exports = ___CSS_LOADER_EXPORT___; }, 38019(module, __unused_webpack_exports, __webpack_require__) { // Imports var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = __webpack_require__(40185); var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(34914); var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@media (min-width: 760px) {.xdFhIwuTgKsNinHX { width: 720px } } .xdFhIwuTgKsNinHX .FQGoyAXkTfYenn5j { max-width: 720px; line-height: 150%; } .xdFhIwuTgKsNinHX .FQGoyAXkTfYenn5j .BbB7Ugzvk5oiWOO7 { width: 50%; max-width: 200px; margin: 0 24px 0 0; } .xdFhIwuTgKsNinHX .FQGoyAXkTfYenn5j .ZjywABLRwmnGXUL3 { padding-bottom: 8px; } `, ""]); // Exports ___CSS_LOADER_EXPORT___.locals = { "wrapper": `xdFhIwuTgKsNinHX`, "modal": `FQGoyAXkTfYenn5j`, "btn": `BbB7Ugzvk5oiWOO7`, "contentWrapper": `ZjywABLRwmnGXUL3` }; module.exports = ___CSS_LOADER_EXPORT___; }, 94091(module, __unused_webpack_exports, __webpack_require__) { // Imports var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = __webpack_require__(40185); var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(34914); var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.OQkVNQFBgREBfTHL { position: relative; margin: auto 12px 0; padding: 24px; border-radius: 8px; background-color: var(--fills-backgrounds-page-background-default); box-shadow: var(--big-light-shadow-br); } .pZinPp2nkLMY5luX { position: absolute; top: 8px; right: 8px; background-color: transparent; cursor: pointer; border: none; opacity: 0; transition: var(--t2); } .OQkVNQFBgREBfTHL:hover .pZinPp2nkLMY5luX, .OQkVNQFBgREBfTHL:focus-within .pZinPp2nkLMY5luX, .pZinPp2nkLMY5luX:focus-visible { opacity: 1; } @media (max-width: 640px) { .pZinPp2nkLMY5luX { opacity: 1 } } .ACObgiDmZNEojKbB { margin-bottom: 16px; font-size: 16px; line-height: 1.5; } .UNEgx1Dt3vMP3x4q { width: 100%; } @media (forced-colors: active) { .OQkVNQFBgREBfTHL { border: 1px solid CanvasText; } } `, ""]); // Exports ___CSS_LOADER_EXPORT___.locals = { "container": `OQkVNQFBgREBfTHL`, "close": `pZinPp2nkLMY5luX`, "description": `ACObgiDmZNEojKbB`, "rateButton": `UNEgx1Dt3vMP3x4q` }; module.exports = ___CSS_LOADER_EXPORT___; }, 82747(module, __unused_webpack_exports, __webpack_require__) { // Imports var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = __webpack_require__(40185); var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(34914); var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.yg6457LY5SQrMTQD { padding: 16px; } .p0XGKmXqG80hYHqH { max-width: 600px; padding: 24px; border-radius: 8px; background-color: var(--fills-backgrounds-page-background-additional-default); position: relative; } .vzMfbcTf8H8cJtGu { position: absolute; right: 16px; top: 16px; background: none; border: none; padding: 0; cursor: pointer; } .NsJVt0zHG3gqEjG9 { font-size: 20px; line-height: 1.2; font-weight: 700; color: var(--text-main-text-main-default); } .gIkwzzPSBkI3O1hf { color: var(--text-main-text-main-default); font-size: 14px; font-weight: 400; line-height: 1.5; margin-top: 8px; } .xPNcq9hy2bE0yuU2 { display: flex; flex-direction: column; gap: 16px; margin-top: 18px; } .elCxp588BD8Ocvoj { display: flex; gap: 12px; line-height: 1.3; } .mFHJYRAxoaGLWHLH { font-size: 14px; font-weight: 600; } .SSIhHoRtgVgFlkHe { font-size: 14px; font-weight: 400; margin-top: 2px; color: var(--text-description-description-default); } .kOmbLLKCxB4Z9MAg { cursor: pointer; color: var(--text-links-attention-link-default); margin-top: 4px; text-decoration: none; display: block; background: none; border: none; padding: 0; font: inherit; line-height: inherit; } .kOmbLLKCxB4Z9MAg:hover { text-decoration: none; } .ajv9SjwArKg9MTRb { margin-top: 33px; position: relative; } .ajv9SjwArKg9MTRb::after { content: ""; position: absolute; width: 100%; height: 1px; background-color: var(--stroke-dividers-item-divider-default); top: -16px; } .sMMgCynpPmQ0WCbW { margin-top: 16px; } `, ""]); // Exports ___CSS_LOADER_EXPORT___.locals = { "warningWrapper": `yg6457LY5SQrMTQD`, "warning": `p0XGKmXqG80hYHqH`, "close": `vzMfbcTf8H8cJtGu`, "title": `NsJVt0zHG3gqEjG9`, "subtitle": `gIkwzzPSBkI3O1hf`, "warningSections": `xPNcq9hy2bE0yuU2`, "section": `elCxp588BD8Ocvoj`, "sectionTitle": `mFHJYRAxoaGLWHLH`, "sectionDescription": `SSIhHoRtgVgFlkHe`, "link": `kOmbLLKCxB4Z9MAg`, "getAppSection": `ajv9SjwArKg9MTRb`, "getAppButton": `sMMgCynpPmQ0WCbW` }; module.exports = ___CSS_LOADER_EXPORT___; }, 41971(module, __unused_webpack_exports, __webpack_require__) { // Imports var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = __webpack_require__(40185); var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(34914); var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.dtOT9RQu8CgH_8_e { width: 100%; display: flex; justify-content: space-between; align-items: center; padding: 16px 24px; background: transparent; border: 0; border-radius: 8px; font-size: 16px; font-weight: 400; cursor: pointer; } .dtOT9RQu8CgH_8_e[data-selected="true"] { font-weight: 600; } .dtOT9RQu8CgH_8_e:active { background-color: var(--fills-menus-dropdown-menu-background-hovered); } `, ""]); // Exports ___CSS_LOADER_EXPORT___.locals = { "filterSortItem": `dtOT9RQu8CgH_8_e` }; module.exports = ___CSS_LOADER_EXPORT___; }, 406(module, __unused_webpack_exports, __webpack_require__) { // Imports var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = __webpack_require__(40185); var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(34914); var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.p0ZCKpBhehIlN_yh { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 40px; padding: 8px 16px; border-radius: 8px; transition: background-color 0.1s ease; } @media (hover: hover) { .p0ZCKpBhehIlN_yh:hover { background-color: var(--fills-backgrounds-page-background-hovered); } .p0ZCKpBhehIlN_yh:hover .p8O9MdZkAYQ54o_U { opacity: 1; } } .p0ZCKpBhehIlN_yh:focus-within { background-color: var(--fills-backgrounds-page-background-hovered); } .p0ZCKpBhehIlN_yh:focus-within .p8O9MdZkAYQ54o_U { opacity: 1; } .p8O9MdZkAYQ54o_U { display: flex; align-items: center; justify-content: flex-end; gap: 12px; flex-shrink: 0; align-self: flex-start; opacity: 0; transition: opacity 0.1s ease; } /* Touch devices have no hover: keep the actions permanently visible. */ @media (hover: none) { .p8O9MdZkAYQ54o_U { opacity: 1; } } ._7T_iaA_B_wCr4uP { display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; padding: 0; border: none; background: transparent; cursor: pointer; } ._7T_iaA_B_wCr4uP:disabled { cursor: default; opacity: 0.5; } ._7T_iaA_B_wCr4uP:focus-visible { outline: 2px solid var(--outline); border-radius: 4px; } .iY_A3BGoKSM5PmFP { width: 24px; height: 24px; } .lv_SAszjMjkzk3q7 { display: flex; align-items: flex-start; gap: 12px; padding-left: 32px; color: var(--editor-comment); } .j7VXvBrTU8lOxoal { display: flex; flex-direction: column; font-size: 14px; line-height: 20px; } .X1JY1eKxSEopS2Ki { white-space: pre-wrap; word-break: break-word; } .BlLSAnJqpO42EXRB { display: flex; align-items: flex-start; gap: 12px; } .MvSgqolOaPUvuDiQ { font-size: 14px; line-height: 20px; word-break: break-all; } .ffHlJDK_DcaV5Si4 { width: 24px; height: 24px; align-self: flex-start; } ._qfiELC2C7kLA08m { -moz-appearance: none; appearance: none; -webkit-appearance: none; position: relative; flex-shrink: 0; align-self: flex-start; width: 20px; height: 20px; margin: 0; border: 1.5px solid var(--stroke-icons-product-icon-default); border-radius: 0; cursor: pointer; } ._qfiELC2C7kLA08m:checked { background-color: var(--stroke-icons-product-icon-default); border-color: var(--stroke-icons-product-icon-default); } ._qfiELC2C7kLA08m:checked::after { content: ""; position: absolute; left: 50%; top: 50%; width: 5px; height: 10px; border: solid var(--gray-0); border-width: 0 2px 2px 0; transform: translate(-55%, -60%) rotate(45deg); } ._qfiELC2C7kLA08m:focus-visible { outline: 2px solid var(--outline); } .E5UwUQStv9YLYYVl { background-color: var(--fills-backgrounds-highlight-attention-default); } .ug5TLMnobzkFCQya { color: var(--text-user-rules-gray-default); } .ug5TLMnobzkFCQya .MvSgqolOaPUvuDiQ { opacity: 0.5; } `, ""]); // Exports ___CSS_LOADER_EXPORT___.locals = { "row": `p0ZCKpBhehIlN_yh`, "actions": `p8O9MdZkAYQ54o_U`, "actionButton": `_7T_iaA_B_wCr4uP`, "actionIcon": `iY_A3BGoKSM5PmFP`, "comment": `lv_SAszjMjkzk3q7`, "commentText": `j7VXvBrTU8lOxoal`, "commentLine": `X1JY1eKxSEopS2Ki`, "rule": `BlLSAnJqpO42EXRB`, "ruleText": `MvSgqolOaPUvuDiQ`, "icon": `ffHlJDK_DcaV5Si4`, "checkbox": `_qfiELC2C7kLA08m`, "highlight": `E5UwUQStv9YLYYVl`, "disabledRule": `ug5TLMnobzkFCQya` }; module.exports = ___CSS_LOADER_EXPORT___; }, 93454(module, __unused_webpack_exports, __webpack_require__) { // Imports var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = __webpack_require__(40185); var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(34914); var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___); // Module ___CSS_LOADER_EXPORT___.push([module.id, `._iwtKe7S4LRAdmXq { --editor-comment: var(--text-user-rules-gray-default); flex: 1; display: flex; flex-direction: column; min-height: 0; overflow: hidden; padding: 0 16px; } .ZJi6y4kuUUMzq2vT { display: flex; align-items: center; gap: 8px; padding: 0 0 16px; } .IrhFwBEvMd4gdVBG { position: relative; flex: 1; margin-top: 16px; } .LQArR6WZwoAhpAXa { width: 100%; height: 48px; padding: 0 48px 0 16px; border: 1px solid #A4A4A4; border: 1px solid var(--stroke-inputs-inactive-input-stroke-default, #A4A4A4); border-radius: 8px; background: var(--fills-backgrounds-page-background-additional-default); color: var(--text-main-text-main-default); font-size: 14px; line-height: 20px; } .LQArR6WZwoAhpAXa::-moz-placeholder { color: var(--text-placeholder-placeholder-default); } .LQArR6WZwoAhpAXa::placeholder { color: var(--text-placeholder-placeholder-default); } .LQArR6WZwoAhpAXa:focus-visible { border-color: var(--stroke-inputs-active-input-stroke-default); outline: none; } .UX4zErgvn0RMKVcM { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; padding: 0; border: none; border-radius: 4px; background: transparent; color: var(--stroke-icons-product-icon-default); cursor: pointer; transition: var(--t3) background-color; } @media (hover: hover) { .UX4zErgvn0RMKVcM:hover { background-color: var(--fills-backgrounds-page-background-hovered) } } .anmeG8j10rM4Oj_L { width: 24px; height: 24px; } .uXGBSZhL0FvGklu2 { display: flex; align-items: center; gap: 8px; padding: 8px 16px; border: none; border-radius: 8px; background: transparent; color: var(--stroke-icons-product-icon-default); font-size: 14px; font-weight: 500; line-height: 20px; cursor: pointer; transition: var(--t3) background-color; } @media (hover: hover) { .uXGBSZhL0FvGklu2:hover { background-color: var(--fills-backgrounds-page-background-hovered) } } .PeiLB_owTkcQkqW6 { width: 24px; height: 24px; } .MdeZIycwP1YJkblL { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; max-width: 100%; } .I62Rb5icb6YPrCwD { display: block; font-weight: 700; word-break: break-word; } .MusLhEgZAQYXXkRY { position: relative; } .P6T2GO4ECV4Bbo0O { width: 100%; position: relative; } .K1uSPckdoCUtTOyq { position: absolute; top: 0; left: 0; width: 100%; } .Rlbr5w7eQK4Brsp2 { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; padding: 48px 16px; color: var(--text-description-description-default); font-size: 14px; line-height: 20px; } .t64uzxm2xZcXaOVZ { opacity: 0.5; pointer-events: none; } .JsdRZw1baygP182U { padding: 4px 16px; font-size: 12px; color: var(--editor-comment); } `, ""]); // Exports ___CSS_LOADER_EXPORT___.locals = { "container": `_iwtKe7S4LRAdmXq`, "toolbar": `ZJi6y4kuUUMzq2vT`, "searchWrapper": `IrhFwBEvMd4gdVBG`, "search": `LQArR6WZwoAhpAXa`, "clearButton": `UX4zErgvn0RMKVcM`, "clearIcon": `anmeG8j10rM4Oj_L`, "createRule": `uXGBSZhL0FvGklu2`, "createRuleIcon": `PeiLB_owTkcQkqW6`, "deletedRuleWrapper": `MdeZIycwP1YJkblL`, "deletedRuleText": `I62Rb5icb6YPrCwD`, "listArea": `MusLhEgZAQYXXkRY`, "virtualList": `P6T2GO4ECV4Bbo0O`, "virtualRow": `K1uSPckdoCUtTOyq`, "placeholder": `Rlbr5w7eQK4Brsp2`, "disabled": `t64uzxm2xZcXaOVZ`, "highlightLoading": `JsdRZw1baygP182U` }; module.exports = ___CSS_LOADER_EXPORT___; }, 7239(module, __unused_webpack_exports, __webpack_require__) { // Imports var ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = __webpack_require__(40185); var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(34914); var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.Ut_fmJKOELMk8smT { display: none; } `, ""]); // Exports ___CSS_LOADER_EXPORT___.locals = { "fileInput": `Ut_fmJKOELMk8smT` }; module.exports = ___CSS_LOADER_EXPORT___; }, 46040(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.loader { cursor: not-allowed; } .loader__background { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); display: flex; justify-content: center; align-items: center; } .loader__container { background-color: var(--fills-backgrounds-page-background-default); height: 88px; min-width: 243px; border-radius: 8px; } .loader__content { display: flex; justify-content: center; align-items: center; padding: 32px; } .loader__text { font-size: 16px; line-height: 24px; color: var(--text-description-description-default); padding-left: 16px; } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 67197(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.checkbox { position: relative; height: 100%; } .checkbox__in { position: absolute; right: 14px; top: -3px; height: 20px; width: 40px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); } .checkbox__in:focus-visible + .checkbox__label:after { outline: 2px solid var(--outline); } .checkbox__in:checked + .checkbox__label:after { background-color: var(--stroke-icons-product-icon-default); } .checkbox__in:checked + .checkbox__label:before { transform: translate(38px, 18px); } .checkbox__label { cursor: pointer; display: flex; align-items: flex-start; justify-content: flex-end; position: relative; width: 72px; height: 100%; font-size: 0; padding: 0 16px; border-radius: 8px; transition: 0.3s ease background-color; } .checkbox__label:before { content: ""; position: absolute; top: -16px; left: 0; transform: translate(18px, 18px); z-index: 1; width: 16px; height: 16px; border-radius: 50%; background-color: var(--gray-0); transition: var(--t3) transform; } .checkbox__label:after { content: ""; font-size: 0; display: block; width: 40px; height: 20px; border-radius: 10px; background-color: var(--fills-switch-dns-adg-switch-off-default); cursor: pointer; } @media (forced-colors: active) { .checkbox__label:before { forced-color-adjust: none; background-color: CanvasText; border: 1px solid Canvas; } .checkbox__label:after { forced-color-adjust: none; background-color: Canvas; border: 1px solid CanvasText; } .checkbox__in:checked + .checkbox__label:before { background-color: HighlightText; border-color: Highlight; } .checkbox__in:checked + .checkbox__label:after { background-color: Highlight; border-color: Highlight; } } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 60987(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.select { display: inline-block; position: relative; } .select__value { font-weight: 500; white-space: nowrap; font-size: 16px; -moz-text-align-last: right; text-align-last: right; color: var(--text-main-text-main-default); padding-right: 25px; cursor: pointer; border: 0; background-color: transparent; -webkit-appearance: none; } .select__ico { position: absolute; pointer-events: none; right: 5px; top: calc(50% - 3px); } .select__list { display: flex; flex-direction: column; position: absolute; right: 0; z-index: 10; border-radius: 8px; max-height: 265px; min-width: 240px; max-width: 280px; overflow-y: auto; box-shadow: var(--big-light-shadow-br); margin: 18px 0 0 0; background-color: var(--fills-menus-dropdown-menu-background-default); scrollbar-width: thin; scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track); } .select__list--hidden { display: none; } .select__list::-webkit-scrollbar { width: 4px; } .select__list::-webkit-scrollbar-track { background: var(--scrollbar-track); } .select__list::-webkit-scrollbar-thumb { border-radius: 4px; background-color: var(--scrollbar-thumb); } .select__item { display: flex; flex-direction: row; align-items: center; justify-content: space-between; max-width: 100%; padding: 16px; cursor: pointer; } .select__item:first-child { border-top-left-radius: 8px; border-top-right-radius: 8px; } .select__item:last-child { border-bottom-left-radius: 8px; border-bottom-right-radius: 8px; } .select__item-text { display: inline-block; font-size: 16px; line-height: 24px; font-weight: 400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .select__item[aria-selected="true"] .select__item-text { font-weight: 600; padding-right: 16px; } .select__item-icon, .select__item[aria-selected="false"] .select__item-icon { display: none; } .select__item[aria-selected="true"] .select__item-icon { display: block; } .select__item:focus-visible, .select__item--focused { outline: 2px solid var(--outline); outline-offset: -2px; } .select__item:hover { background-color: var(--fills-menus-dropdown-menu-background-hovered); } .select__item:active { background-color: var(--fills-menus-dropdown-menu-background-pressed); } /* Smaller text, using full space of parent element */ .select.popup-modification .select__ico, .select.popup-modification .select__value { color: var(--text-description-description-default); } .select.popup-modification .select__value { width: 100%; font-size: 14px; line-height: 24px; -moz-text-align-last: left; text-align-last: left; padding: 0 28px 0 6px; } .select.popup-modification .select__list { margin-top: 24px; min-width: 180px; max-height: none; } .select.popup-modification:first-child .select__list { right: auto; left: 0; } @media (forced-colors: active) { .select__list { border: 1px solid CanvasText; } } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 33965(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.tooltip { white-space: nowrap; visibility: hidden; opacity: 0; padding: 8px 16px; color: var(--text-main-text-main-default); background-color: var(--fills-menus-dropdown-menu-background-default); font-size: 12px; line-height: 130%; box-shadow: var(--small-light-shadow-br); border-radius: 4px; } .tooltip--fixed-width { white-space: break-spaces; width: -moz-max-content; width: max-content; max-width: 188px; } .tooltip--on { visibility: visible; opacity: 1; } .tooltip--off { visibility: hidden; opacity: 0; } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 20304(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@layer components { .button { cursor: pointer; text-decoration: none; text-align: center; display: inline-block; border: 0; background-color: transparent; padding: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .button--l { font-size: 16px; font-weight: 600; line-height: 24px; padding: 16px; border-radius: 8px; max-height: 56px; } @media (max-width: 640px) { .button--l { max-width: 100% } } .button:disabled { opacity: 0.5; cursor: default; /* * Do not add "pointer-events: none;" to disabled buttons, * otherwise button title will not be displayed on hover * if button text is too long */ } .button--green-bg { color: var(--text-buttons-primary-default); background-color: var(--fills-buttons-main-button-default); transition: 0.3s ease background-color; } .button--green-bg:hover { background-color: var(--fills-buttons-main-button-hovered); } .button--green-bg:hover:disabled { background-color: var(--fills-buttons-main-button-default); } .button--red-bg { color: var(--text-buttons-primary-default); background-color: var(--fills-buttons-danger-button-default); transition: 0.3s ease background-color; } .button--red-bg:hover { background-color: var(--fills-buttons-danger-button-hovered); } .button--transparent { box-shadow: 0 0 0 1px var(--stroke-buttons-secondary-default); color: var(--text-main-text-main-default); background-color: transparent; transition: var(--t3) box-shadow, var(--t3) color; } .button--transparent:hover { box-shadow: 0 0 0 1px var(--gray-50); color: var(--gray-50); } .button--transparent:hover:disabled { box-shadow: 0 0 0 1px var(--stroke-buttons-secondary-default); color: var(--text-main-text-main-default); } .button--link { overflow: visible; font-size: inherit; line-height: inherit; } .button--link--green { color: var(--text-links-link-default); } .button--link--green:hover { color: var(--text-links-link-hovered); } .button--link--red { color: var(--text-links-error-link-default); } .button--link--red:hover { color: var(--text-links-error-link-hovered); } .button--link--underlined { text-decoration: underline; } @media (forced-colors: active) { .button--l, .button--m, .button--s { border: 1px solid CanvasText; } } } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 36959(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@font-face { font-family: 'Roboto Flex'; src: url('../../../../assets/fonts/Roboto-Flex-Regular.woff2') format('woff2 supports variations'), url('../../../../assets/fonts/Roboto-Flex-Regular.woff2') format('woff2-variations'); font-weight: 100 1000; font-stretch: 25% 151%; } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 39003(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.icon { /* 'display' property for 'icon' class should be set in specific page style files */ } .icon--48 { width: 48px; height: 48px; } .icon--24 { width: 24px; height: 24px; } .icon--18 { width: 18px; height: 18px; } .icon--logo { width: 104px; height: 24px; color: var(--fills-logo-key-color-default); } .icon--select { width: 14px; height: 8px; } @media (max-width: 640px) { .icon--select { width: 10px; height: 6px } } .icon--gray-default { color: var(--stroke-icons-gray-icons-default); } .icon--green-default { color: var(--stroke-icons-product-icon-default); } .icon--red-default { color: var(--stroke-icons-error-icon-default); } .icon--orange-default { color: var(--stroke-icons-warning-icon-default); } .icon--white { color: var(--gray-0); } .icon--loading { pointer-events: none; animation: loader-spin 1s infinite linear; animation-fill-mode: forwards; } @keyframes loader-spin { from { -webkit-transform: rotate(0deg); } to { -webkit-transform: rotate(360deg); } } .logo { width: 104px; height: 24px; background-image: url("../../../assets/images/logo.svg"); background-repeat: no-repeat; background-size: contain; display: inline-block; vertical-align: middle; } @media (prefers-color-scheme: dark) { .logo { background-image: url("../../../assets/images/logo-dark.svg") } } .light-mode .logo { background-image: url("../../../assets/images/logo.svg"); } .dark-mode .logo { background-image: url("../../../assets/images/logo-dark.svg"); } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 9819(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `:root { /* Other variables */ --popup-width: 320px; --popup-min-width: 320px; --popup-height: 600px; --popup-default-height: 600px; /* Size of popup in desktop browsers */ --t3: 0.3s ease; /* z-index */ /* 4 reserved by Ace Editor */ --z-idx-options-sidebar: 5; --z-idx-options-skip-to-content: 6; --z-idx-options-menu-dropdown: 7; --z-idx-options-notifications: 10; --z-idx-options-modals: 11; /* z-index filtering Log */ --z-idx-filtering-log-base: 1; --z-idx-filtering-log-thead: 2; --z-idx-filtering-log-content: 9; --z-idx-filtering-log-actions: 10; --z-idx-filtering-log-sidebar: 11; --z-idx-filtering-log-modal: 12; --z-idx-filtering-log-search: 20; --z-idx-filtering-log-dropdown: 25; /* Shadows */ --shadow-color: rgba(0, 0, 0, 0.1); --small-light-shadow-br: 4px 4px 8px 0px var(--shadow-color); --big-light-shadow-br: 8px 8px 24px 0px var(--shadow-color); --big-light-shadow-tr: -8px 8px 24px 0px var(--shadow-color); /* Base colors */ /* Product Primary */ --product-primary-0: #f7fbf8; --product-primary-10: #e4f1e7; --product-primary-20: #bbddc3; --product-primary-30: #94c9a1; --product-primary-40: #76be87; --product-primary-50: #67b279; --product-primary-60: #589968; --product-primary-70: #487c54; --product-primary-80: #3d6947; --product-primary-90: #315439; --product-primary-100: #243e2a; --product-tertiary-50: #7884cb; /* Gray */ --gray-0: #ffffff; --gray-10: #f6f6f6; --gray-20: #e4e4e4; --gray-30: #d2d2d2; --gray-40: #c0c0c0; --gray-50: #a4a4a4; --gray-60: #7f7f7f; --gray-70: #5b5b5b; --gray-80: #3d3d3d; --gray-90: #1f1f1f; --gray-100: #000000; /* Red */ --red-0: #fff9f7; --red-10: #feeae3; --red-20: #fccab9; --red-30: #faa98f; --red-40: #f78560; --red-50: #f67247; --red-60: #df6740; --red-70: #b55434; --red-80: #99472c; --red-90: #7b3923; --red-100: #5b2a1a; /* Orange */ --orange-0: #fdf9f3; --orange-10: #f9ecd8; --orange-20: #efd19e; --orange-30: #e6b564; --orange-40: #db9726; --orange-50: #d58500; --orange-60: #c47a00; --orange-70: #a06400; --orange-80: #875400; --orange-90: #6c4300; --orange-100: #503200; /* Context colors */ /* vars that DO NOT change depend on the mode — same for light and dark mode */ --fills-buttons-danger-button-default: var(--red-50); --fills-buttons-danger-button-hovered: var(--red-60); --fills-buttons-danger-button-pressed: var(--red-70); --fills-buttons-main-button-default: var(--product-primary-50); --fills-buttons-main-button-hovered: var(--product-primary-60); --fills-buttons-main-button-pressed: var(--product-primary-70); --fills-logo-white-color-default: var(--gray-0); --fills-snacks-mobile-snacks-default: var(--gray-100); --fills-backgrounds-dialog-background-default: var(--gray-100); --stroke-dividers-item-divider-green-default: var(--product-primary-50); --stroke-dividers-item-divider-orange-default: var(--orange-50); --stroke-buttons-secondary-green-default: var(--product-primary-50); --stroke-buttons-secondary-red-default: var(--red-50); --stroke-icons-attention-icon-default: var(--orange-50); --fills-backgrounds-highlight-attention-default: #d5850033; /* --orange-50 at 20% */ --stroke-icons-black-icons-disabled: var(--gray-50); --stroke-icons-black-icons-default: var(--gray-80); --stroke-icons-error-icon-default: var(--red-50); --stroke-icons-error-icon-hovered: var(--red-60); --stroke-icons-error-icon-pressed: var(--red-70); --stroke-icons-product-icon-default: var(--product-primary-50); --stroke-icons-product-icon-hovered: var(--product-primary-60); --stroke-icons-product-icon-pressed: var(--product-primary-70); --stroke-icons-warning-icon-default: var(--orange-50); --stroke-icons-product-tertiary-icon-default: var(--product-tertiary-50); --stroke-inputs-error-input-stroke-default: var(--red-50); --stroke-inputs-active-input-stroke-default: var(--gray-50); --text-buttons-primary-default: var(--gray-0); --text-buttons-secondary-green-default: var(--product-primary-50); --text-buttons-secondary-red-default: var(--red-50); --text-links-attention-link-default: var(--orange-50); --text-links-error-link-default: var(--red-50); --text-links-error-link-hovered: var(--red-60); --text-links-link-default: var(--product-primary-50); --text-links-link-hovered: var(--product-primary-60); /* vars that DO NOT change depend on the mode — same for light and dark mode (not specified in design) */ --editor-comment: #338033; --editor-highlight: #ffff00; /* vars that change depend on the mode */ --fills-backgrounds-cards-background-default: var(--gray-0); --fills-backgrounds-page-background-default: var(--gray-0); --fills-backgrounds-page-background-hovered: var(--gray-10); --fills-backgrounds-page-background-pressed: var(--gray-20); --fills-backgrounds-page-background-additional-default: var(--gray-10); --fills-backgrounds-page-background-additional-hovered: var(--gray-20); --fills-backgrounds-recent-activity-request-allowlisted-default: var(--product-primary-10); --fills-backgrounds-recent-activity-request-allowlisted-hovered: var(--product-primary-20); --fills-backgrounds-recent-activity-request-allowlisted-pressed: var(--product-primary-30); --fills-backgrounds-recent-activity-request-blocked-default: var(--red-10); --fills-backgrounds-recent-activity-request-blocked-hovered: var(--red-20); --fills-backgrounds-recent-activity-request-blocked-pressed: var(--red-30); --fills-backgrounds-recent-activity-request-changed-default: var(--orange-10); --fills-backgrounds-recent-activity-request-changed-hovered: var(--orange-20); --fills-backgrounds-recent-activity-request-changed-pressed: var(--orange-30); --fills-buttons-main-button-default-inactive: var(--gray-50); --fills-inputs-input-background-default: var(--gray-10); --fills-inputs-input-background-disabled: var(--gray-10); --fills-logo-key-color-default: var(--gray-90); --fills-menus-dropdown-menu-background-default: var(--gray-0); --fills-menus-dropdown-menu-background-hovered: var(--gray-10); --fills-menus-dropdown-menu-background-pressed: var(--gray-20); --fills-switch-dns-adg-switch-off-default: var(--gray-40); --stroke-buttons-secondary-default: var(--gray-80); --stroke-dividers-item-divider-default: var(--gray-30); --stroke-icons-gray-icons-default: var(--gray-60); --stroke-icons-gray-icons-disabled: var(--gray-30); --stroke-inputs-inactive-input-stroke-disabled: var(--gray-20); --stroke-inputs-inactive-input-stroke-default: var(--gray-30); --text-description-description-default: var(--gray-70); --text-lables-labels-default: var(--gray-70); --text-main-text-main-default: var(--gray-80); --text-placeholder-placeholder-disabled: var(--gray-40); --text-placeholder-placeholder-default: var(--gray-50); --text-user-rules-gray-default: var(--gray-60); /* vars that change depend on the mode (not specified in design) */ --outline: #005ecc; --editor-selection: #b5d5ff; --editor-syntax-blue: #4141e2; --editor-syntax-yellow: #795e26; --editor-syntax-pink: #9e45b4; --editor-syntax-red: #a31515; --scrollbar-track: rgba(246, 246, 246, 0.3); /* gray-10 with opacity 0.3 */ --scrollbar-thumb: var(--gray-30); } @media (prefers-color-scheme: dark) {:root { --fills-backgrounds-cards-background-default: var(--gray-80); --fills-backgrounds-page-background-default: var(--gray-90); --fills-backgrounds-page-background-hovered: var(--gray-80); --fills-backgrounds-page-background-pressed: var(--gray-70); --fills-backgrounds-page-background-additional-default: var(--gray-80); --fills-backgrounds-page-background-additional-hovered: var(--gray-70); --fills-backgrounds-recent-activity-request-allowlisted-default: var(--product-primary-100); --fills-backgrounds-recent-activity-request-allowlisted-hovered: var(--product-primary-90); --fills-backgrounds-recent-activity-request-allowlisted-pressed: var(--product-primary-80); --fills-backgrounds-recent-activity-request-blocked-default: var(--red-100); --fills-backgrounds-recent-activity-request-blocked-hovered: var(--red-90); --fills-backgrounds-recent-activity-request-blocked-pressed: var(--red-80); --fills-backgrounds-recent-activity-request-changed-default: var(--orange-100); --fills-backgrounds-recent-activity-request-changed-hovered: var(--orange-90); --fills-backgrounds-recent-activity-request-changed-pressed: var(--orange-80); --fills-buttons-main-button-default-inactive: var(--gray-60); --fills-inputs-input-background-default: var(--gray-80); --fills-inputs-input-background-disabled: var(--gray-80); --fills-logo-key-color-default: var(--gray-10); --fills-menus-dropdown-menu-background-default: var(--gray-80); --fills-menus-dropdown-menu-background-hovered: var(--gray-70); --fills-menus-dropdown-menu-background-pressed: var(--gray-60); --fills-switch-dns-adg-switch-off-default: var(--gray-70); --stroke-buttons-secondary-default: var(--gray-20); --stroke-dividers-item-divider-default: var(--gray-70); --stroke-icons-gray-icons-default: var(--gray-40); --stroke-icons-gray-icons-disabled: var(--gray-70); --stroke-icons-black-icons-default: var(--gray-20); --stroke-inputs-inactive-input-stroke-disabled: var(--gray-80); --stroke-inputs-inactive-input-stroke-default: var(--gray-70); --text-description-description-default: var(--gray-30); --text-lables-labels-default: var(--gray-30); --text-main-text-main-default: var(--gray-20); --text-placeholder-placeholder-disabled: var(--gray-60); --text-placeholder-placeholder-default: var(--gray-40); --text-user-rules-gray-default: var(--gray-40); /* This colors not specified in design */ --outline: #99c9ff; --editor-selection: #556a86; --editor-syntax-blue: #4093d6; --editor-syntax-yellow: #dbdb84; --editor-syntax-pink: #c46cbd; --editor-syntax-red: #cf8263; --scrollbar-track: rgba(61, 61, 61, 0.3); /* gray-80 with opacity 0.3 */ --scrollbar-thumb: var(--gray-70) } } .dark-mode { --fills-backgrounds-cards-background-default: var(--gray-80); --fills-backgrounds-page-background-default: var(--gray-90); --fills-backgrounds-page-background-hovered: var(--gray-80); --fills-backgrounds-page-background-pressed: var(--gray-70); --fills-backgrounds-page-background-additional-default: var(--gray-80); --fills-backgrounds-page-background-additional-hovered: var(--gray-70); --fills-backgrounds-recent-activity-request-allowlisted-default: var(--product-primary-100); --fills-backgrounds-recent-activity-request-allowlisted-hovered: var(--product-primary-90); --fills-backgrounds-recent-activity-request-allowlisted-pressed: var(--product-primary-80); --fills-backgrounds-recent-activity-request-blocked-default: var(--red-100); --fills-backgrounds-recent-activity-request-blocked-hovered: var(--red-90); --fills-backgrounds-recent-activity-request-blocked-pressed: var(--red-80); --fills-backgrounds-recent-activity-request-changed-default: var(--orange-100); --fills-backgrounds-recent-activity-request-changed-hovered: var(--orange-90); --fills-backgrounds-recent-activity-request-changed-pressed: var(--orange-80); --fills-buttons-main-button-default-inactive: var(--gray-60); --fills-inputs-input-background-default: var(--gray-80); --fills-inputs-input-background-disabled: var(--gray-80); --fills-logo-key-color-default: var(--gray-10); --fills-menus-dropdown-menu-background-default: var(--gray-80); --fills-menus-dropdown-menu-background-hovered: var(--gray-70); --fills-menus-dropdown-menu-background-pressed: var(--gray-60); --fills-switch-dns-adg-switch-off-default: var(--gray-70); --stroke-buttons-secondary-default: var(--gray-20); --stroke-dividers-item-divider-default: var(--gray-70); --stroke-icons-gray-icons-default: var(--gray-40); --stroke-icons-gray-icons-disabled: var(--gray-70); --stroke-icons-black-icons-default: var(--gray-20); --stroke-inputs-inactive-input-stroke-disabled: var(--gray-80); --stroke-inputs-inactive-input-stroke-default: var(--gray-70); --text-description-description-default: var(--gray-30); --text-lables-labels-default: var(--gray-30); --text-main-text-main-default: var(--gray-20); --text-placeholder-placeholder-disabled: var(--gray-60); --text-placeholder-placeholder-default: var(--gray-40); --text-user-rules-gray-default: var(--gray-40); /* This colors not specified in design */ --outline: #99c9ff; --editor-selection: #556a86; --editor-syntax-blue: #4093d6; --editor-syntax-yellow: #dbdb84; --editor-syntax-pink: #c46cbd; --editor-syntax-red: #cf8263; --scrollbar-track: rgba(61, 61, 61, 0.3); /* gray-80 with opacity 0.3 */ --scrollbar-thumb: var(--gray-70); } .light-mode { --fills-backgrounds-cards-background-default: var(--gray-0); --fills-backgrounds-page-background-default: var(--gray-0); --fills-backgrounds-page-background-hovered: var(--gray-10); --fills-backgrounds-page-background-pressed: var(--gray-20); --fills-backgrounds-page-background-additional-default: var(--gray-10); --fills-backgrounds-page-background-additional-hovered: var(--gray-20); --fills-backgrounds-recent-activity-request-allowlisted-default: var(--product-primary-10); --fills-backgrounds-recent-activity-request-allowlisted-hovered: var(--product-primary-20); --fills-backgrounds-recent-activity-request-allowlisted-pressed: var(--product-primary-30); --fills-backgrounds-recent-activity-request-blocked-default: var(--red-10); --fills-backgrounds-recent-activity-request-blocked-hovered: var(--red-20); --fills-backgrounds-recent-activity-request-blocked-pressed: var(--red-30); --fills-backgrounds-recent-activity-request-changed-default: var(--orange-10); --fills-backgrounds-recent-activity-request-changed-hovered: var(--orange-20); --fills-backgrounds-recent-activity-request-changed-pressed: var(--orange-30); --fills-buttons-main-button-default-inactive: var(--gray-50); --fills-inputs-input-background-default: var(--gray-10); --fills-inputs-input-background-disabled: var(--gray-10); --fills-logo-key-color-default: var(--gray-90); --fills-menus-dropdown-menu-background-default: var(--gray-0); --fills-menus-dropdown-menu-background-hovered: var(--gray-10); --fills-menus-dropdown-menu-background-pressed: var(--gray-20); --fills-switch-dns-adg-switch-off-default: var(--gray-40); --stroke-buttons-secondary-default: var(--gray-80); --stroke-dividers-item-divider-default: var(--gray-30); --stroke-icons-gray-icons-default: var(--gray-60); --stroke-icons-gray-icons-disabled: var(--gray-30); --stroke-inputs-inactive-input-stroke-disabled: var(--gray-20); --stroke-inputs-inactive-input-stroke-default: var(--gray-30); --text-description-description-default: var(--gray-70); --text-lables-labels-default: var(--gray-70); --text-main-text-main-default: var(--gray-80); --text-placeholder-placeholder-disabled: var(--gray-40); --text-placeholder-placeholder-default: var(--gray-50); --text-user-rules-gray-default: var(--gray-60); /* This colors not specified in design */ --outline: #005ecc; --editor-selection: #b5d5ff; --editor-syntax-blue: #4141e2; --editor-syntax-yellow: #795e26; --editor-syntax-pink: #9e45b4; --editor-syntax-red: #a31515; --scrollbar-track: rgba(246, 246, 246, 0.3); /* gray-10 with opacity 0.3 */ --scrollbar-thumb: var(--gray-30); } .android { /* In android browsers popup size is dynamic, so we need to adjust its size */ --popup-width: 100%; } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 44535(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.about { padding: 16px 16px 40px 16px; font-weight: 400; } .about__title { font-weight: 700; font-size: 20px; margin-bottom: 8px; } .about__version { color: var(--text-description-description-default); font-size: 14px; line-height: 1.3; } .about__current-version { margin: 0 0 24px; } .about__current-version--with-update { margin-bottom: 8px; } .about__update-available { margin: 0 0 24px; font-size: 14px; } .about__libs { list-style: none; margin: 0 0 24px; padding-left: 0; } .about__libs li + li { margin-top: 8px; } .about__copyright { font-size: 14px; line-height: 1.3; color: var(--text-description-description-default); margin-bottom: 16px; } .about__copyright-reserved { display: block; margin-top: 8px; } .about .links-menu__item { margin: 8px 0; } .about__link-icon { margin-left: 8px; } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 21221(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.add-custom-input { width: 100%; display: flex; flex-direction: column; margin-top: 12px; } .add-custom-input__label { line-height: 1.3; font-size: 14px; color: var(--text-lables-labels-default); margin-bottom: 8px; } .add-custom-input__wrapper { position: relative; } .add-custom-input__input { width: 100%; flex: 1 1 auto; font-size: 14px; line-height: 1.3; border: none; background-color: transparent; outline: none; text-overflow: ellipsis; overflow: hidden; padding: 0; border-radius: 8px; border: 1px solid var(--stroke-inputs-inactive-input-stroke-disabled); background-color: var(--fills-inputs-input-background-disabled); padding: 16px 56px 16px 16px; } @media (min-width: 640px) { .add-custom-input__input { font-size: 16px } } .add-custom-input__input::-moz-placeholder { opacity: 1; color: var(--text-placeholder-placeholder-disabled); font-size: 14px; } .add-custom-input__input::placeholder { opacity: 1; color: var(--text-placeholder-placeholder-disabled); font-size: 14px; } @media (min-width: 640px) { .add-custom-input__input::-moz-placeholder { font-size: 16px } .add-custom-input__input::placeholder { font-size: 16px } } .add-custom-input__input:focus { outline: none; border-color: var(--stroke-inputs-inactive-input-stroke-default); } .add-custom-input__clear-btn { position: absolute; right: 16px; top: 16px; } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 26745(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.search { display: flex; justify-content: flex-start; align-items: center; border-radius: 8px; background-color: var(--fills-inputs-input-background-disabled); border: 1px solid var(--stroke-inputs-inactive-input-stroke-disabled); margin: 16px; padding: 0 16px 0 0; } .search--focused { background-color: var(--fills-inputs-input-background-disabled); border-color: var(--stroke-inputs-inactive-input-stroke-default); } .search__label { min-width: 90px; flex-grow: 1; } .search__input { border: 0; background: none; padding: 16px 8px 16px 16px; outline: none; font-size: 14px; line-height: 1.5; width: 100%; } @media (min-width: 640px) { .search__input { font-size: 16px } } .search__input::-moz-placeholder { opacity: 1; color: var(--text-placeholder-placeholder-disabled); font-size: 14px; } .search__input::placeholder { opacity: 1; color: var(--text-placeholder-placeholder-disabled); font-size: 14px; } @media (min-width: 640px) { .search__input::-moz-placeholder { font-size: 16px } .search__input::placeholder { font-size: 16px } } .search__input:focus { outline: none; } .search__select { display: none; } @media (min-width: 640px) { .search__select { display: block; padding-left: 16px; margin-left: 16px; border-left: 1px solid var(--stroke-dividers-item-divider-default) } } .search__select .select__value, .search__select option { color: var(--text-main-text-main-default); font-size: 14px; line-height: 24px; font-weight: 400; } .filters, .search-group-list { margin: 0; padding: 0; list-style: none; } .filters--disabled { opacity: 0.5; pointer-events: none; } .search-group-list__item { position: relative; margin-bottom: 16px; } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 94540(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.filter { display: flex; align-items: center; position: relative; padding: 16px 0 16px 16px; min-height: 70px; } @media (max-width: 640px) { .filter__content { flex: 1 1 auto; min-width: 0; max-width: 420px; } } .filter__title { display: flex; align-items: flex-end; font-weight: 600; font-size: 16px; line-height: 24px; } .filter__title .popover { width: 100%; } .filter__title-in { margin-right: 12px; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; } .filter__title-constraint { display: flex; } .filter__search { background-color: var(--fills-backgrounds-recent-activity-request-changed-default); } .filter:last-child { box-shadow: none; } .filter__link { color: var(--text-links-link-default); display: inline-block; font-size: 14px; line-height: 18px; text-decoration: none; padding-top: 4px; } .filter__controls { display: flex; align-items: center; height: 24px; } .filter__info { width: 100%; } .filter__title-container{ display: flex; justify-content: space-between; } .filter__desc { color: var(--text-description-description-default); font-size: 14px; line-height: 18px; word-break: break-word; } .filter__desc a { color: var(--text-links-link-default); text-decoration: underline; } .filter__tags { display: flex; font-size: 14px; line-height: 18px; flex-wrap: wrap; padding: 4px 0 0; list-style: none; margin: 0; } .filter__tag { position: relative; cursor: pointer; margin-right: 8px; color: var(--text-links-link-default); word-break: break-word; border: none; padding: 0; background-color: transparent; } .filter__remove { position: relative; right: -16px; } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 25339(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.nav { padding: 8px 0; margin-bottom: 40px; } .nav__list { display: flex; flex-direction: column; align-items: flex-start; margin: 0; padding: 0; list-style: none; } .nav__list-item { display: inline-block; width: 100%; margin: 0; padding: 0; /* To align 'li' height to children 'a' element */ line-height: 0; } .nav__item { padding: 16px 32px; line-height: 1.3; color: var(--text-main-text-main-default); text-decoration: none; display: inline-block; font-size: 16px; cursor: pointer; transition: var(--t3) box-shadow, var(--t3) background-color, var(--t3) color; width: 100%; overflow: hidden; text-overflow: ellipsis; } .nav__item:hover { background-color: var(--fills-backgrounds-page-background-additional-hovered); } .nav__item:focus-visible { outline-offset: -2px; } .nav__item--active { background-color: var(--fills-backgrounds-page-background-default); position: relative; font-weight: 600; } .nav__item--active:hover { background-color: var(--fills-backgrounds-page-background-default); cursor: default; } @media (min-width: 640px) {.nav { padding: 0 } } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 23599(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `@keyframes notify-show { 0% { transform: translateY(-100%); opacity: 0; } 100% { transform: translateY(0); opacity: 1; } } @keyframes notify-hide { 0% { transform: translateY(0); opacity: 1; } 100% { transform: translateY(100%); opacity: 0; } } .notifications { position: fixed; z-index: var(--z-idx-options-notifications); bottom: 68px; right: 22px; } @media (max-width: 640px) { .notifications { bottom: 8px; right: 8px; left: 8px } } .notification { padding: 12px; width: 360px; display: flex; align-items: flex-start; border-radius: 4px; background-color: var(--fills-snacks-mobile-snacks-default); color: var(--text-buttons-primary-default); animation: notify-show 0.3s ease-in; } @media (max-width: 640px) { .notification { width: auto; width: initial; max-width: 100% } } .notification > svg { /* Offset to align icon center */ margin-top: -3px; } .notification--error > svg { color: var(--stroke-icons-error-icon-default); } .notification--success > svg { color: var(--stroke-icons-product-icon-default); } .notification--close { animation: notify-hide 1s ease-out; } .notification__content, .notification__content button { font-size: 16px; font-weight: 400; line-height: 1.3; text-align: left; } .notification__content { padding: 0 12px; width: 100%; } .notification__content p { margin: 0; word-break: break-word; } .notification__content button { padding: 0; margin-top: 8px; color: var(--text-links-link-default); background: transparent; border: none; cursor: pointer; } .notification__btn-close { cursor: pointer; padding: 0; background: transparent; outline: none; border: none; } .notification + .notification { margin-top: 16px; } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 27908(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.rules-limits { font-size: 14px; line-height: 18px; font-weight: 400; } .rules-limits__section { padding: 16px; } .rules-limits__section-title { font-size: 16px; line-height: 21px; font-weight: 600; margin-bottom: 4px; } .rules-limits__group-limits { font-weight: 600; } .rules-limits__group-option { margin-bottom: 18px; } .rules-limits__group-option:last-child { margin-bottom: 0; } .rules-limits__group-option-link { cursor: pointer; text-decoration: underline; } .rules-limits__text--gray { color: var(--text-description-description-default); } .rules-limits__text--orange { color: var(--text-links-attention-link-default); } .rules-limits__text--green { color: var(--text-links-link-default); } .rules-limits__warning { padding: 24px 8px; margin: 16px 0; border-radius: 8px; background-color: var(--fills-backgrounds-page-background-additional-default); } .rules-limits__warning-title { display: flex; align-items: center; font-size: 16px; line-height: 21px; font-weight: 600; padding: 0 16px; color: var(--text-links-error-link-default); } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 61062(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.input__in { height: 32px; border: 1px solid var(--stroke-inputs-active-input-stroke-default); background-color: var(--fills-inputs-input-background-disabled); padding: 2px 12px; margin-top: 20px; margin-bottom: 4px; width: 100%; border-radius: 4px; outline: none; } .input__in:focus { outline: none; border: 1px solid var(--stroke-inputs-active-input-stroke-default); } .input__in:invalid { border: 1px solid var(--stroke-inputs-error-input-stroke-default); } .input__in:invalid:focus-visible { background-color: var(--fills-inputs-input-background-disabled); border: 1px solid var(--stroke-inputs-error-input-stroke-default); outline: none; } /* Chrome, Edge, Opera */ .input__in::-webkit-outer-spin-button, .input__in::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; } /* Firefox */ .input__in[type=number] { -moz-appearance: textfield; } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 66215(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.sidebar { display: flex; flex-direction: column; flex-shrink: 0; padding: 24px 0; height: 100%; position: fixed; left: 0; top: 0; background: var(--fills-backgrounds-page-background-additional-default); z-index: var(--z-idx-options-sidebar); margin: 0; width: 240px; transform: translateX(-100%); transition: var(--t3) transform; overflow-y: auto; overflow-x: hidden;; } .sidebar__menu { display: flex; position: fixed; top: 0; padding: 24px 16px 16px 16px; z-index: var(--z-idx-options-sidebar); height: 65px; width: 100%; background: var(--fills-backgrounds-page-background-default); font-size: 14px; line-height: 18px; } @media (min-width: 640px) { .sidebar__menu { height: 40px } } .sidebar__link-logo { display: block; color: inherit; } .sidebar__logo { margin: 16px auto 24px 32px; flex-shrink: 0; } .sidebar__menu-button { cursor: pointer; border: 0; padding: 0; background-color: transparent; } .sidebar__menu-button[aria-expanded="true"] { position: absolute; top: 16px; right: 16px; margin: 0; pointer-events: none; opacity: 0; } .sidebar__menu-button[aria-expanded="true"]:focus-visible { pointer-events: auto; opacity: 1; } .sidebar__actions { display: flex; gap: 16px; margin-left: auto; } .sidebar__overlay { height: 100%; width: 100%; position: fixed; z-index: var(--z-idx-options-sidebar); left: 0; top: 0; opacity: 0.5; background-color: var(--fills-backgrounds-dialog-background-default); overflow-x: hidden; animation-delay: 0.3s; display: none; } .sidebar__overlay--visible { display: block; } .sidebar--open { transform: translateX(0); } @media (min-width: 640px) {.sidebar { transform: none; transform: initial; position: relative; } .sidebar__menu { display: none; } .sidebar__overlay { display: none; } } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 44955(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.stealth__description { /* Line height of this block */ margin-bottom: 1.3em; } .stealth__attention { color: var(--text-links-attention-link-default); margin-top: 4px; } .stealth__input { height: 56px; padding: 16px; margin-top: 8px; font-size: 16px; } .stealth__tracking-setting { font-size: 14px; font-style: normal; font-weight: 400; line-height: 130%; } .stealth__tracking-setting__minutes { color: var(--gray-70); margin-top: 20px; } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 50091(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.editor__label { position: absolute; top: -24px; left: 0; right: 0; max-width: 200px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-weight: 300; font-size: 12px; line-height: 22px; } @media (max-width: 500px) {.editor__label { right: 0; padding-left: 12px } } .editor__label .editor__icon { display: none; position: absolute; right: 0; top: 2px; } .editor__label--saved { padding-right: 20px; } .editor__label--saved .editor__icon { display: block; } .editor__open { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 125px 16px; border-radius: 8px; background: var(--fills-backgrounds-page-background-additional-default); } .editor__open-text { line-height: 1.3; } .editor__open-title { font-weight: 600; margin-bottom: 4px; } .editor__open-subtitle { font-size: 14px; color: ; color: var(--text-description-description-default,); } .editor__open .button { margin-top: 24px; padding: 16px 48px; } .user-rules__switch-editor { display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; padding: 0; border: none; border-radius: 8px; background: transparent; cursor: pointer; } .user-rules__switch-editor:disabled { cursor: not-allowed; opacity: 0.5; } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 16162(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.no-search-match { padding-top: 24px; margin-bottom: 32px; display: flex; flex-direction: column; align-items: center; gap: 8px; color: var(--text-description-description-default); } @media (min-width: 640px) {.no-search-match { padding-top: 72px; margin-bottom: 72px } } .no-search-match__icon { width: 64px; height: 48px; } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 72053(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.icon { display: inline-block; vertical-align: middle; flex-shrink: 0; } .icon--empty { width: 82px; height: 104px; } .icon--link { width: 14px; height: 14px; color: var(--stroke-icons-product-icon-default); } .icon--menu { width: 24px; height: 26px; } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 52820(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.button--s { font-size: 16px; line-height: 22px; padding: 5px 28px; border-radius: 4px; max-height: 32px; } .button--m { font-size: 16px; line-height: 24px; padding: 12px 24px; border-radius: 8px; max-height: 56px; } .button--add-custom-filter { margin: 16px; min-width: 222px; } .button--empty-custom-filter { display: block; margin: 0 auto; min-width: 222px; } .button--compare { width: 100%; padding: 12px 24px; word-break: break-word; } .button__img { margin-right: 7px; } .button__label { line-height: 26px; max-height: 26px; overflow: hidden; } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 31181(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `* { box-sizing: border-box; } :root { color-scheme: light dark; } html, .root { height: 100%; } body { font-family: 'Roboto Flex', system-ui; font-optical-sizing: none; margin: 0; height: 100%; font-size: 16px; color: var(--text-main-text-main-default); background-color: var(--fills-backgrounds-page-background-default); } .options { overflow-y: scroll; } h2, h3 { margin: 0; font-size: inherit; } a:focus-visible { outline: 2px solid var(--outline); } button, input, textarea, select { font-family: inherit; } button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible { outline: 2px solid var(--outline); } /* custom checkbox */ label.checkbox-label { cursor: pointer; color: var(--text-main-text-main-default); display: flex; align-items: center; flex-shrink: 0; } label.checkbox-label input[type="checkbox"] { display: none; } label.checkbox-label input[type="checkbox"]:checked + .custom-checkbox { background-color: var(--stroke-icons-product-icon-default); border-color: var(--stroke-icons-product-icon-default); } label.checkbox-label input[type="checkbox"]:checked + .custom-checkbox .icon { display: block; } label.checkbox-label .custom-checkbox { min-width: 20px; width: 20px; height: 20px; background-color: transparent; border: 2px solid var(--stroke-icons-gray-icons-default); border-radius: 2px; margin-right: 12px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; font-size: 16px; line-height: 24px; } label.checkbox-label .custom-checkbox .icon { display: none; } .inner { width: 100%; display: flex; flex-direction: column; align-items: center; justify-content: space-between; } .content { position: relative; padding: 65px 0; width: 100%; max-width: 100%; } @media (min-width: 640px) { .content { max-width: 672px; padding: 40px 16px } } .content__btn { margin-left: 15px; } .skip-to-content-btn { z-index: var(--z-idx-options-skip-to-content); position: fixed; top: 8px; left: 8px; pointer-events: none; opacity: 0; } .skip-to-content-btn:focus-visible { pointer-events: auto; opacity: 1; } .wrapper { display: flex; flex-direction: column; height: 100%; } .page { flex: 1 0 auto; display: flex; } .links-menu { flex-direction: column; align-items: flex-start; display: flex; } .links-menu--section { margin-left: 16px; } .links-menu button { background: none; border: none; padding: 0; } .links-menu a { text-decoration: none; } .links-menu__item { margin: 16px 0; font-size: 16px; line-height: 21px; font-weight: 600; cursor: pointer; width: 100%; display: flex; justify-content: space-between; } @media (min-width: 640px) { .links-menu__item { width: auto } } .disabled { opacity: .5; pointer-events: none; cursor: help; } .settings__group__header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; } .settings__group__actions { display: flex; align-items: center; gap: 8px; } .settings__group--editor-switch .title { display: flex; align-items: center; gap: 12px; margin-top: 0; font-size: 16px; font-weight: 400; } .title { color: var(--text-main-text-main-default); font-size: 24px; font-weight: 700; padding: 0; padding-right: 8px; margin-top: -5px; line-height: 1.2; } .title__container { position: relative; display: flex; justify-content: space-between; padding: 32px 16px 8px; } .title__container--sub { padding-top: 24px; } .title__container--control { display: grid; grid-template-columns: 1fr auto; grid-template-rows: auto auto; border-radius: 8px; cursor: pointer; transition: var(--t3) background-color; } @media (hover: hover) { .title__container--control:hover { background-color: var(--fills-backgrounds-page-background-hovered) } } .title__container--control .title__inner { display: contents; } .title__container--control .title { grid-column: 1; grid-row: 1; } .title__container--control .title__desc { grid-column: 1 / -1; grid-row: 2; } .title__container--control .setting__inline-control { grid-column: 2; grid-row: 1; } .title__container--reversed { flex-direction: row-reverse; } @media (min-width: 640px) { .title { padding-right: 16px } .title__container { padding: 16px 0 16px 16px; } .title__container--small { padding: 16px; } .title__container--back { padding: 16px; } .title__container--back .checkbox__in { /* 16px (label padding) - 3px (default margin) */ top: 13px; } .title__container--sub { padding-top: 48px; } .title__container--about { padding: 16px 0 16px 16px; } .title__container--custom { padding-bottom: 9px; } } .title__desc { font-size: 16px; font-weight: 400; line-height: 1.3; padding-top: 16px; color: var(--text-description-description-default); } .title__desc--back { cursor: pointer; padding-left: 0; padding-top: 12px; } .title--back-btn { display: flex; gap: 16px; background-color: transparent; border: 0; cursor: pointer; } .title--back-btn--icon { margin-top: 1px; } .title--sub { font-size: 20px; } .subtitle { padding: 0 15px; color: var(--text-description-description-default); font-size: 20px; font-weight: normal; line-height: 28px; margin: 0 0 8px; } .desc { font-size: 16px; margin-bottom: 20px; color: var(--text-description-description-default); line-height: 22px; padding-left: 15px; } .desc--link { color: var(--text-links-link-default); } .settings__group--disabled { opacity: 0.5; pointer-events: none; } .settings__group__links { display: flex; flex-direction: row; padding: 8px 16px 8px; } .settings__group__links--custom { padding-bottom: 8px; } .link_with_icon { margin-right: 32px; } .link_with_icon:last-child { margin-right: 0; } .link_with_icon__link { text-decoration: none; } .link_with_icon__text { color: var(--text-main-text-main-default); font-size: 14px; font-weight: 600; margin-left: 12px; } .actions { padding: 32px 0 32px 16px; display: inline-block; align-items: center; } @media (max-width: 640px) { .actions { padding-right: 16px } } .actions--grid { display: grid; grid-gap: 16px; } .actions--buttons { grid-template-columns: 1fr 1fr 1fr; } @media (max-width: 640px) { .actions--buttons { grid-template-columns: 1fr } } .actions--icons { grid-template-columns: 1fr 1fr; } @media (max-width: 640px) { .actions--icons { display: none } } .actions--user-rules { grid-gap: 32px; grid-template-columns: 7.875fr 1fr; } @media (max-width: 640px) { .actions--user-rules { width: 100%; grid-template-columns: 1fr } } .actions--fullscreen-user-rules { grid-template-columns: 6fr 6fr 1fr; padding: 28px 40px; } @media (max-width: 640px) { .actions--fullscreen-user-rules { grid-template-columns: 1fr 6fr 1fr } } .actions__saving { position: relative; } .actions__btn { position: relative; } .actions__btn--icon { background-color: transparent; border: 0; padding: 0; cursor: pointer; width: auto; } .actions__btn--icon:hover { background-color: var(--fills-backgrounds-page-background-hovered); } .actions__btn--active .icon { background-color: var(--fills-backgrounds-page-background-pressed); } .actions__btn--saving { width: 100%; } .actions__input-file { display: none; } .actions__label { cursor: pointer; display: flex; justify-content: flex-start; align-content: center; min-height: 40px; width: -moz-fit-content; width: fit-content; } .actions__title { display: none; font-weight: 700; font-size: 24px; line-height: 28px; margin: auto 8px auto 0; } @media (min-width: 640px) { .actions__title { display: block } } .actions__control { margin: auto 0; } select:focus { outline: none; } .ace_content { color: var(--text-main-text-main-default)!important; background-color: var(--fills-backgrounds-page-background-default)!important; } .light-mode { color-scheme: light; } .dark-mode { color-scheme: dark; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0; } .warning { color: var(--text-links-attention-link-default); line-height: 1.3; } .warning a { color: var(--text-links-attention-link-default); } .section-warning { font-size: 16px; padding: 4px 16px 16px; } .section-warning--link { margin-left: 4px; } .custom-group-warning { font-size: 14px; padding-top: 4px; } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 33450(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `.setting { display: flex; justify-content: space-between; align-items: initial; position: relative; padding: 16px; min-height: 52px; } .setting.group { padding: 16px; } .setting--disabled .input__in { pointer-events: none; cursor: default; opacity: 0.5; } .setting__area { display: flex; width: 80%; border: 0; border-radius: 8px; cursor: pointer; outline: none; text-align: left; background-color: transparent; transition: 0.3s ease background-color; } .setting__area_group { flex-grow: 1; border-radius: 8px; padding: 16px 0 16px 16px; } .setting__area__custom-group-warning { padding: 16px; } .setting__area__custom-group-warning:hover { cursor: default; } .setting__area:hover { background-color: var(--fills-backgrounds-page-background-hovered); } .setting__inline-control { margin-left: 16px; height: auto; } @media (min-width: 640px) { .setting__inline-control_group { margin-left: 0; } .setting__inline-control_group .checkbox__in { /* 16px (label padding) - 3px (default margin) */ top: 13px; } } .setting__container { display: flex; } .setting__container--vertical { flex-direction: column; width: 100%; } .setting__container--horizontal { flex-direction: row; justify-content: space-between; width: 100%; } .setting__container--inline { display: block; } .setting--reversed .setting__container--horizontal { flex-direction: row-reverse; } .setting__info { display: flex; flex-direction: column; justify-content: center; max-width: 530px; } @media (max-width: 640px) { .setting__info { min-width: 40% } } .setting__info__custom-group-warning { width: 100%; padding-right: 32px; } .setting__title { font-weight: 500; font-size: 16px; color: var(--text-main-text-main-default); line-height: 1.3; word-break: break-word; } .setting__title--search { line-height: 24px; } .setting__desc { color: var(--text-description-description-default); font-size: 14px; line-height: 1.3; overflow: hidden; text-overflow: ellipsis; word-break: break-word; } .setting__desc a { color: var(--text-links-link-default); text-decoration: underline; } .setting__desc a:focus-visible { outline: none; box-shadow: inset 0 0 0 1px var(--outline); } .setting__desc-item { margin-bottom: 13px; } .setting__desc-item:last-child { margin-bottom: 0; } .setting__desc-counter { display: none; } @media (min-width: 640px) { .setting__desc-counter { display: block } } /* TODO: check if used, and remove if not */ .setting__tags { display: flex; font-size: 13px; flex-wrap: wrap; } .setting__icon { color: var(--stroke-icons-product-icon-default); margin-right: 20px; } .setting__back { color: var(--stroke-icons-gray-icons-default); position: absolute; left: -18px; top: 8px; } @media (max-width: 640px) { .setting__back { display: flex; position: static; position: initial } } .setting__alert-desc, .setting__alert-link { color: var(--text-links-error-link-default); } .setting__checkbox { display: none; } .setting-checkbox { display: block; border-radius: 8px; cursor: pointer; transition: var(--t3) background-color; width: 100%; } .setting-checkbox--button { background-color: transparent; border: 0; text-align: left; padding: 0; width: 100%; } .setting-checkbox.disabled { opacity: .5; pointer-events: none; } .setting-checkbox:hover { background-color: var(--fills-backgrounds-page-background-hovered); } .group--disabled .setting__icon { color: var(--stroke-icons-gray-icons-default); } `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 22262(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0 = __webpack_require__(40185); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(34914); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_common_styles_fonts_pcss__rspack_import_2 = __webpack_require__(36959); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_common_styles_vars_pcss__rspack_import_3 = __webpack_require__(9819); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_common_styles_icons_pcss__rspack_import_4 = __webpack_require__(39003); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_common_styles_buttons_pcss__rspack_import_5 = __webpack_require__(20304); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_common_pcss__rspack_import_6 = __webpack_require__(31181); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_button_pcss__rspack_import_7 = __webpack_require__(52820); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_setting_pcss__rspack_import_8 = __webpack_require__(33450); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_runtime_noSourceMaps_js__rspack_import_0_default())); ___CSS_LOADER_EXPORT___.i(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_common_styles_fonts_pcss__rspack_import_2/* ["default"] */.A); ___CSS_LOADER_EXPORT___.i(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_common_styles_vars_pcss__rspack_import_3/* ["default"] */.A); ___CSS_LOADER_EXPORT___.i(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_common_styles_icons_pcss__rspack_import_4/* ["default"] */.A); ___CSS_LOADER_EXPORT___.i(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_common_styles_buttons_pcss__rspack_import_5/* ["default"] */.A); ___CSS_LOADER_EXPORT___.i(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_common_pcss__rspack_import_6/* ["default"] */.A); ___CSS_LOADER_EXPORT___.i(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_button_pcss__rspack_import_7/* ["default"] */.A); ___CSS_LOADER_EXPORT___.i(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_setting_pcss__rspack_import_8/* ["default"] */.A); // Module ___CSS_LOADER_EXPORT___.push([module.id, ` `, ""]); // Exports /* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___); }, 99732(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { PA: () => (/* binding */ mobxreact_esm_observer) }); // UNUSED EXPORTS: disposeOnUnmount, inject, PropTypes, MobXProviderContext, Provider // EXTERNAL MODULE: ./node_modules/.pnpm/mobx@6.9.0/node_modules/mobx/dist/mobx.esm.js var mobx_esm = __webpack_require__(37350); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/index.js var react = __webpack_require__(33353); ;// CONCATENATED MODULE: ./node_modules/.pnpm/mobx-react-lite@3.4.3_mobx@6.9.0_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/mobx-react-lite/es/utils/assertEnvironment.js if (!react.useState) { throw new Error("mobx-react-lite requires React with Hooks support"); } if (!mobx_esm/* .makeObservable */.Gn) { throw new Error("mobx-react-lite@3 requires mobx at least version 6 to be available"); } // EXTERNAL MODULE: ./node_modules/.pnpm/react-dom@17.0.2_react@17.0.2/node_modules/react-dom/index.js var react_dom = __webpack_require__(71561); ;// CONCATENATED MODULE: ./node_modules/.pnpm/mobx-react-lite@3.4.3_mobx@6.9.0_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/mobx-react-lite/es/utils/reactBatchedUpdates.js ;// CONCATENATED MODULE: ./node_modules/.pnpm/mobx-react-lite@3.4.3_mobx@6.9.0_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/mobx-react-lite/es/utils/observerBatching.js function defaultNoopBatch(callback) { callback(); } function observerBatching(reactionScheduler) { if (!reactionScheduler) { reactionScheduler = defaultNoopBatch; if (false) {} } (0,mobx_esm/* .configure */.jK)({ reactionScheduler: reactionScheduler }); } var isObserverBatched = function () { if (false) {} return true; }; ;// CONCATENATED MODULE: ./node_modules/.pnpm/mobx-react-lite@3.4.3_mobx@6.9.0_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/mobx-react-lite/es/utils/printDebugValue.js function printDebugValue(v) { return (0,mobx_esm/* .getDependencyTree */.yl)(v); } ;// CONCATENATED MODULE: ./node_modules/.pnpm/mobx-react-lite@3.4.3_mobx@6.9.0_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/mobx-react-lite/es/utils/UniversalFinalizationRegistry.js var REGISTRY_FINALIZE_AFTER = 10000; var REGISTRY_SWEEP_INTERVAL = 10000; var UniversalFinalizationRegistry_TimerBasedFinalizationRegistry = /** @class */ (function () { function TimerBasedFinalizationRegistry(finalize) { var _this = this; Object.defineProperty(this, "finalize", { enumerable: true, configurable: true, writable: true, value: finalize }); Object.defineProperty(this, "registrations", { enumerable: true, configurable: true, writable: true, value: new Map() }); Object.defineProperty(this, "sweepTimeout", { enumerable: true, configurable: true, writable: true, value: void 0 }); // Bound so it can be used directly as setTimeout callback. Object.defineProperty(this, "sweep", { enumerable: true, configurable: true, writable: true, value: function (maxAge) { if (maxAge === void 0) { maxAge = REGISTRY_FINALIZE_AFTER; } // cancel timeout so we can force sweep anytime clearTimeout(_this.sweepTimeout); _this.sweepTimeout = undefined; var now = Date.now(); _this.registrations.forEach(function (registration, token) { if (now - registration.registeredAt >= maxAge) { _this.finalize(registration.value); _this.registrations.delete(token); } }); if (_this.registrations.size > 0) { _this.scheduleSweep(); } } }); // Bound so it can be exported directly as clearTimers test utility. Object.defineProperty(this, "finalizeAllImmediately", { enumerable: true, configurable: true, writable: true, value: function () { _this.sweep(0); } }); } // Token is actually required with this impl Object.defineProperty(TimerBasedFinalizationRegistry.prototype, "register", { enumerable: false, configurable: true, writable: true, value: function (target, value, token) { this.registrations.set(token, { value: value, registeredAt: Date.now() }); this.scheduleSweep(); } }); Object.defineProperty(TimerBasedFinalizationRegistry.prototype, "unregister", { enumerable: false, configurable: true, writable: true, value: function (token) { this.registrations.delete(token); } }); Object.defineProperty(TimerBasedFinalizationRegistry.prototype, "scheduleSweep", { enumerable: false, configurable: true, writable: true, value: function () { if (this.sweepTimeout === undefined) { this.sweepTimeout = setTimeout(this.sweep, REGISTRY_SWEEP_INTERVAL); } } }); return TimerBasedFinalizationRegistry; }()); var UniversalFinalizationRegistry = typeof FinalizationRegistry !== "undefined" ? FinalizationRegistry : UniversalFinalizationRegistry_TimerBasedFinalizationRegistry; ;// CONCATENATED MODULE: ./node_modules/.pnpm/mobx-react-lite@3.4.3_mobx@6.9.0_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/mobx-react-lite/es/utils/observerFinalizationRegistry.js var observerFinalizationRegistry = new UniversalFinalizationRegistry(function (adm) { var _a; (_a = adm.reaction) === null || _a === void 0 ? void 0 : _a.dispose(); adm.reaction = null; }); ;// CONCATENATED MODULE: ./node_modules/.pnpm/mobx-react-lite@3.4.3_mobx@6.9.0_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/mobx-react-lite/es/staticRendering.js var globalIsUsingStaticRendering = false; function staticRendering_enableStaticRendering(enable) { globalIsUsingStaticRendering = enable; } function isUsingStaticRendering() { return globalIsUsingStaticRendering; } ;// CONCATENATED MODULE: ./node_modules/.pnpm/mobx-react-lite@3.4.3_mobx@6.9.0_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/mobx-react-lite/es/useObserver.js var __read = (undefined && undefined.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; function observerComponentNameFor(baseComponentName) { return "observer".concat(baseComponentName); } /** * We use class to make it easier to detect in heap snapshots by name */ var useObserver_ObjectToBeRetainedByReact = /** @class */ (function () { function ObjectToBeRetainedByReact() { } return ObjectToBeRetainedByReact; }()); function objectToBeRetainedByReactFactory() { return new useObserver_ObjectToBeRetainedByReact(); } function useObserver(fn, baseComponentName) { if (baseComponentName === void 0) { baseComponentName = "observed"; } if (isUsingStaticRendering()) { return fn(); } var _a = __read(react.useState(objectToBeRetainedByReactFactory), 1), objectRetainedByReact = _a[0]; // Force update, see #2982 var _b = __read(react.useState(), 2), setState = _b[1]; var forceUpdate = function () { return setState([]); }; // StrictMode/ConcurrentMode/Suspense may mean that our component is // rendered and abandoned multiple times, so we need to track leaked // Reactions. var admRef = react.useRef(null); if (!admRef.current) { // First render admRef.current = { reaction: null, mounted: false, changedBeforeMount: false }; } var adm = admRef.current; if (!adm.reaction) { // First render or component was not committed and reaction was disposed by registry adm.reaction = new mobx_esm/* .Reaction */.qT(observerComponentNameFor(baseComponentName), function () { // Observable has changed, meaning we want to re-render // BUT if we're a component that hasn't yet got to the useEffect() // stage, we might be a component that _started_ to render, but // got dropped, and we don't want to make state changes then. // (It triggers warnings in StrictMode, for a start.) if (adm.mounted) { // We have reached useEffect(), so we're mounted, and can trigger an update forceUpdate(); } else { // We haven't yet reached useEffect(), so we'll need to trigger a re-render // when (and if) useEffect() arrives. adm.changedBeforeMount = true; } }); observerFinalizationRegistry.register(objectRetainedByReact, adm, adm); } react.useDebugValue(adm.reaction, printDebugValue); react.useEffect(function () { observerFinalizationRegistry.unregister(adm); adm.mounted = true; if (adm.reaction) { if (adm.changedBeforeMount) { // Got a change before mount, force an update adm.changedBeforeMount = false; forceUpdate(); } } else { // The reaction we set up in our render has been disposed. // This can be due to bad timings of renderings, e.g. our // component was paused for a _very_ long time, and our // reaction got cleaned up // Re-create the reaction adm.reaction = new mobx_esm/* .Reaction */.qT(observerComponentNameFor(baseComponentName), function () { // We've definitely already been mounted at this point forceUpdate(); }); forceUpdate(); } return function () { adm.reaction.dispose(); adm.reaction = null; adm.mounted = false; adm.changedBeforeMount = false; }; }, []); // render the original component, but have the // reaction track the observables, so that rendering // can be invalidated (see above) once a dependency changes var rendering; var exception; adm.reaction.track(function () { try { rendering = fn(); } catch (e) { exception = e; } }); if (exception) { throw exception; // re-throw any exceptions caught during rendering } return rendering; } ;// CONCATENATED MODULE: ./node_modules/.pnpm/mobx-react-lite@3.4.3_mobx@6.9.0_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/mobx-react-lite/es/observer.js var warnObserverOptionsDeprecated = true; var hasSymbol = typeof Symbol === "function" && Symbol.for; // Using react-is had some issues (and operates on elements, not on types), see #608 / #609 var ReactForwardRefSymbol = hasSymbol ? Symbol.for("react.forward_ref") : typeof react.forwardRef === "function" && (0,react.forwardRef)(function (props) { return null; })["$$typeof"]; var ReactMemoSymbol = hasSymbol ? Symbol.for("react.memo") : typeof react.memo === "function" && (0,react.memo)(function (props) { return null; })["$$typeof"]; // n.b. base case is not used for actual typings or exported in the typing files function observer(baseComponent, // TODO remove in next major options) { var _a; if (false) {} if (ReactMemoSymbol && baseComponent["$$typeof"] === ReactMemoSymbol) { throw new Error("[mobx-react-lite] You are trying to use `observer` on a function component wrapped in either another `observer` or `React.memo`. The observer already applies 'React.memo' for you."); } // The working of observer is explained step by step in this talk: https://www.youtube.com/watch?v=cPF4iBedoF0&feature=youtu.be&t=1307 if (isUsingStaticRendering()) { return baseComponent; } var useForwardRef = (_a = options === null || options === void 0 ? void 0 : options.forwardRef) !== null && _a !== void 0 ? _a : false; var render = baseComponent; var baseComponentName = baseComponent.displayName || baseComponent.name; // If already wrapped with forwardRef, unwrap, // so we can patch render and apply memo if (ReactForwardRefSymbol && baseComponent["$$typeof"] === ReactForwardRefSymbol) { useForwardRef = true; render = baseComponent["render"]; if (typeof render !== "function") { throw new Error("[mobx-react-lite] `render` property of ForwardRef was not a function"); } } var observerComponent = function (props, ref) { return useObserver(function () { return render(props, ref); }, baseComponentName); }; // Don't set `displayName` for anonymous components, // so the `displayName` can be customized by user, see #3192. if (baseComponentName !== "") { ; observerComponent.displayName = baseComponentName; } // Support legacy context: `contextTypes` must be applied before `memo` if (baseComponent.contextTypes) { ; observerComponent.contextTypes = baseComponent.contextTypes; } if (useForwardRef) { // `forwardRef` must be applied prior `memo` // `forwardRef(observer(cmp))` throws: // "forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))" observerComponent = (0,react.forwardRef)(observerComponent); } // memo; we are not interested in deep updates // in props; we assume that if deep objects are changed, // this is in observables, which would have been tracked anyway observerComponent = (0,react.memo)(observerComponent); copyStaticProperties(baseComponent, observerComponent); if (false) {} return observerComponent; } // based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js var hoistBlackList = { $$typeof: true, render: true, compare: true, type: true, // Don't redefine `displayName`, // it's defined as getter-setter pair on `memo` (see #3192). displayName: true }; function copyStaticProperties(base, target) { Object.keys(base).forEach(function (key) { if (!hoistBlackList[key]) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key)); } }); } ;// CONCATENATED MODULE: ./node_modules/.pnpm/mobx-react-lite@3.4.3_mobx@6.9.0_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/mobx-react-lite/es/ObserverComponent.js function ObserverComponent(_a) { var children = _a.children, render = _a.render; var component = children || render; if (typeof component !== "function") { return null; } return useObserver(component); } if (false) {} ObserverComponent.displayName = "Observer"; function ObserverPropsCheck(props, key, componentName, location, propFullName) { var extraKey = key === "children" ? "render" : "children"; var hasProp = typeof props[key] === "function"; var hasExtraProp = typeof props[extraKey] === "function"; if (hasProp && hasExtraProp) { return new Error("MobX Observer: Do not use children and render in the same time in`" + componentName); } if (hasProp || hasExtraProp) { return null; } return new Error("Invalid prop `" + propFullName + "` of type `" + typeof props[key] + "` supplied to" + " `" + componentName + "`, expected `function`."); } ;// CONCATENATED MODULE: ./node_modules/.pnpm/mobx-react-lite@3.4.3_mobx@6.9.0_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/mobx-react-lite/es/useLocalObservable.js function useLocalObservable(initializer, annotations) { return useState(function () { return observable(initializer(), annotations, { autoBind: true }); })[0]; } ;// CONCATENATED MODULE: ./node_modules/.pnpm/mobx-react-lite@3.4.3_mobx@6.9.0_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/mobx-react-lite/es/useAsObservableSource.js var useAsObservableSource_read = (undefined && undefined.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; function useAsObservableSource_useAsObservableSource(current) { if (false) {} var _a = useAsObservableSource_read(useState(function () { return observable(current, {}, { deep: false }); }), 1), res = _a[0]; runInAction(function () { Object.assign(res, current); }); return res; } ;// CONCATENATED MODULE: ./node_modules/.pnpm/mobx-react-lite@3.4.3_mobx@6.9.0_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/mobx-react-lite/es/useLocalStore.js function useLocalStore(initializer, current) { if (false) {} var source = current && useAsObservableSource(current); return useState(function () { return observable(initializer(source), undefined, { autoBind: true }); })[0]; } ;// CONCATENATED MODULE: ./node_modules/.pnpm/mobx-react-lite@3.4.3_mobx@6.9.0_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/mobx-react-lite/es/index.js var es_a; observerBatching(react_dom.unstable_batchedUpdates); var clearTimers = (es_a = observerFinalizationRegistry.finalizeAllImmediately) !== null && es_a !== void 0 ? es_a : (function () { }); function es_useObserver(fn, baseComponentName) { if (baseComponentName === void 0) { baseComponentName = "observed"; } if (false) {} return useObserverOriginal(fn, baseComponentName); } function useStaticRendering(enable) { if (false) {} enableStaticRendering(enable); } ;// CONCATENATED MODULE: ./node_modules/.pnpm/mobx-react@7.6.0_mobx@6.9.0_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/mobx-react/dist/mobxreact.esm.js var symbolId = 0; function createSymbol(name) { if (typeof Symbol === "function") { return Symbol(name); } var symbol = "__$mobx-react " + name + " (" + symbolId + ")"; symbolId++; return symbol; } var createdSymbols = {}; function newSymbol(name) { if (!createdSymbols[name]) { createdSymbols[name] = createSymbol(name); } return createdSymbols[name]; } function shallowEqual(objA, objB) { //From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js if (is(objA, objB)) { return true; } if (typeof objA !== "object" || objA === null || typeof objB !== "object" || objB === null) { return false; } var keysA = Object.keys(objA); var keysB = Object.keys(objB); if (keysA.length !== keysB.length) { return false; } for (var i = 0; i < keysA.length; i++) { if (!Object.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) { return false; } } return true; } function is(x, y) { // From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js if (x === y) { return x !== 0 || 1 / x === 1 / y; } else { return x !== x && y !== y; } } // based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js var mobxreact_esm_hoistBlackList = (/* unused pure expression or super */ null && ({ $$typeof: 1, render: 1, compare: 1, type: 1, childContextTypes: 1, contextType: 1, contextTypes: 1, defaultProps: 1, getDefaultProps: 1, getDerivedStateFromError: 1, getDerivedStateFromProps: 1, mixins: 1, displayName: 1, propTypes: 1 })); function mobxreact_esm_copyStaticProperties(base, target) { var protoProps = Object.getOwnPropertyNames(Object.getPrototypeOf(base)); Object.getOwnPropertyNames(base).forEach(function (key) { if (!mobxreact_esm_hoistBlackList[key] && protoProps.indexOf(key) === -1) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key)); } }); } /** * Helper to set `prop` to `this` as non-enumerable (hidden prop) * @param target * @param prop * @param value */ function setHiddenProp(target, prop, value) { if (!Object.hasOwnProperty.call(target, prop)) { Object.defineProperty(target, prop, { enumerable: false, configurable: true, writable: true, value: value }); } else { target[prop] = value; } } /** * Utilities for patching componentWillUnmount, to make sure @disposeOnUnmount works correctly icm with user defined hooks * and the handler provided by mobx-react */ var mobxMixins = /*#__PURE__*/newSymbol("patchMixins"); var mobxPatchedDefinition = /*#__PURE__*/newSymbol("patchedDefinition"); function getMixins(target, methodName) { var mixins = target[mobxMixins] = target[mobxMixins] || {}; var methodMixins = mixins[methodName] = mixins[methodName] || {}; methodMixins.locks = methodMixins.locks || 0; methodMixins.methods = methodMixins.methods || []; return methodMixins; } function wrapper(realMethod, mixins) { var _this = this; for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { args[_key - 2] = arguments[_key]; } // locks are used to ensure that mixins are invoked only once per invocation, even on recursive calls mixins.locks++; try { var retVal; if (realMethod !== undefined && realMethod !== null) { retVal = realMethod.apply(this, args); } return retVal; } finally { mixins.locks--; if (mixins.locks === 0) { mixins.methods.forEach(function (mx) { mx.apply(_this, args); }); } } } function wrapFunction(realMethod, mixins) { var fn = function fn() { for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } wrapper.call.apply(wrapper, [this, realMethod, mixins].concat(args)); }; return fn; } function patch(target, methodName, mixinMethod) { var mixins = getMixins(target, methodName); if (mixins.methods.indexOf(mixinMethod) < 0) { mixins.methods.push(mixinMethod); } var oldDefinition = Object.getOwnPropertyDescriptor(target, methodName); if (oldDefinition && oldDefinition[mobxPatchedDefinition]) { // already patched definition, do not repatch return; } var originalMethod = target[methodName]; var newDefinition = createDefinition(target, methodName, oldDefinition ? oldDefinition.enumerable : undefined, mixins, originalMethod); Object.defineProperty(target, methodName, newDefinition); } function createDefinition(target, methodName, enumerable, mixins, originalMethod) { var _ref; var wrappedFunc = wrapFunction(originalMethod, mixins); return _ref = {}, _ref[mobxPatchedDefinition] = true, _ref.get = function get() { return wrappedFunc; }, _ref.set = function set(value) { if (this === target) { wrappedFunc = wrapFunction(value, mixins); } else { // when it is an instance of the prototype/a child prototype patch that particular case again separately // since we need to store separate values depending on wether it is the actual instance, the prototype, etc // e.g. the method for super might not be the same as the method for the prototype which might be not the same // as the method for the instance var newDefinition = createDefinition(this, methodName, enumerable, mixins, value); Object.defineProperty(this, methodName, newDefinition); } }, _ref.configurable = true, _ref.enumerable = enumerable, _ref; } var mobxAdminProperty = mobx_esm/* .$mobx */.BQ || "$mobx"; // BC var mobxObserverProperty = /*#__PURE__*/newSymbol("isMobXReactObserver"); var mobxIsUnmounted = /*#__PURE__*/newSymbol("isUnmounted"); var skipRenderKey = /*#__PURE__*/newSymbol("skipRender"); var isForcingUpdateKey = /*#__PURE__*/newSymbol("isForcingUpdate"); function makeClassComponentObserver(componentClass) { var target = componentClass.prototype; if (componentClass[mobxObserverProperty]) { var displayName = getDisplayName(target); console.warn("The provided component class (" + displayName + ")\n has already been declared as an observer component."); } else { componentClass[mobxObserverProperty] = true; } if (target.componentWillReact) { throw new Error("The componentWillReact life-cycle event is no longer supported"); } if (componentClass["__proto__"] !== react.PureComponent) { if (!target.shouldComponentUpdate) { target.shouldComponentUpdate = observerSCU; } else if (target.shouldComponentUpdate !== observerSCU) { // n.b. unequal check, instead of existence check, as @observer might be on superclass as well throw new Error("It is not allowed to use shouldComponentUpdate in observer based components."); } } // this.props and this.state are made observable, just to make sure @computed fields that // are defined inside the component, and which rely on state or props, re-compute if state or props change // (otherwise the computed wouldn't update and become stale on props change, since props are not observable) // However, this solution is not without it's own problems: https://github.com/mobxjs/mobx-react/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Aobservable-props-or-not+ makeObservableProp(target, "props"); makeObservableProp(target, "state"); if (componentClass.contextType) { makeObservableProp(target, "context"); } var originalRender = target.render; if (typeof originalRender !== "function") { var _displayName = getDisplayName(target); throw new Error("[mobx-react] class component (" + _displayName + ") is missing `render` method." + "\n`observer` requires `render` being a function defined on prototype." + "\n`render = () => {}` or `render = function() {}` is not supported."); } target.render = function () { this.render = isUsingStaticRendering() ? originalRender : createReactiveRender.call(this, originalRender); return this.render(); }; patch(target, "componentDidMount", function () { this[mobxIsUnmounted] = false; if (!this.render[mobxAdminProperty]) { // Reaction is re-created automatically during render, but a component can re-mount and skip render #3395. // To re-create the reaction and re-subscribe to relevant observables we have to force an update. react.Component.prototype.forceUpdate.call(this); } }); patch(target, "componentWillUnmount", function () { if (isUsingStaticRendering()) { return; } var reaction = this.render[mobxAdminProperty]; if (reaction) { reaction.dispose(); // Forces reaction to be re-created on next render this.render[mobxAdminProperty] = null; } else { // Render may have been hot-swapped and/or overridden by a subclass. var _displayName2 = getDisplayName(this); console.warn("The reactive render of an observer class component (" + _displayName2 + ")\n was overridden after MobX attached. This may result in a memory leak if the\n overridden reactive render was not properly disposed."); } this[mobxIsUnmounted] = true; }); return componentClass; } // Generates a friendly name for debugging function getDisplayName(comp) { return comp.displayName || comp.name || comp.constructor && (comp.constructor.displayName || comp.constructor.name) || ""; } function createReactiveRender(originalRender) { var _this = this; /** * If props are shallowly modified, react will render anyway, * so atom.reportChanged() should not result in yet another re-render */ setHiddenProp(this, skipRenderKey, false); /** * forceUpdate will re-assign this.props. We don't want that to cause a loop, * so detect these changes */ setHiddenProp(this, isForcingUpdateKey, false); var initialName = getDisplayName(this); var boundOriginalRender = originalRender.bind(this); var isRenderingPending = false; var createReaction = function createReaction() { var reaction = new mobx_esm/* .Reaction */.qT(initialName + ".render()", function () { if (!isRenderingPending) { // N.B. Getting here *before mounting* means that a component constructor has side effects (see the relevant test in misc.test.tsx) // This unidiomatic React usage but React will correctly warn about this so we continue as usual // See #85 / Pull #44 isRenderingPending = true; if (_this[mobxIsUnmounted] !== true) { var hasError = true; try { setHiddenProp(_this, isForcingUpdateKey, true); if (!_this[skipRenderKey]) { react.Component.prototype.forceUpdate.call(_this); } hasError = false; } finally { setHiddenProp(_this, isForcingUpdateKey, false); if (hasError) { reaction.dispose(); // Forces reaction to be re-created on next render _this.render[mobxAdminProperty] = null; } } } } }); reaction["reactComponent"] = _this; return reaction; }; function reactiveRender() { var _reactiveRender$mobxA; isRenderingPending = false; // Create reaction lazily to support re-mounting #3395 var reaction = (_reactiveRender$mobxA = reactiveRender[mobxAdminProperty]) != null ? _reactiveRender$mobxA : reactiveRender[mobxAdminProperty] = createReaction(); var exception = undefined; var rendering = undefined; reaction.track(function () { try { // TODO@major // Optimization: replace with _allowStateChangesStart/End (not available in mobx@6.0.0) rendering = (0,mobx_esm/* ._allowStateChanges */.vx)(false, boundOriginalRender); } catch (e) { exception = e; } }); if (exception) { throw exception; } return rendering; } return reactiveRender; } function observerSCU(nextProps, nextState) { if (isUsingStaticRendering()) { console.warn("[mobx-react] It seems that a re-rendering of a React component is triggered while in static (server-side) mode. Please make sure components are rendered only once server-side."); } // update on any state changes (as is the default) if (this.state !== nextState) { return true; } // update if props are shallowly not equal, inspired by PureRenderMixin // we could return just 'false' here, and avoid the `skipRender` checks etc // however, it is nicer if lifecycle events are triggered like usually, // so we return true here if props are shallowly modified. return !shallowEqual(this.props, nextProps); } function makeObservableProp(target, propName) { var valueHolderKey = newSymbol("reactProp_" + propName + "_valueHolder"); var atomHolderKey = newSymbol("reactProp_" + propName + "_atomHolder"); function getAtom() { if (!this[atomHolderKey]) { setHiddenProp(this, atomHolderKey, (0,mobx_esm/* .createAtom */.MN)("reactive " + propName)); } return this[atomHolderKey]; } Object.defineProperty(target, propName, { configurable: true, enumerable: true, get: function get() { var prevReadState = false; // Why this check? BC? // @ts-expect-error if (mobx_esm/* ._allowStateReadsStart */.f2 && mobx_esm/* ._allowStateReadsEnd */.w6) { prevReadState = (0,mobx_esm/* ._allowStateReadsStart */.f2)(true); } getAtom.call(this).reportObserved(); // Why this check? BC? // @ts-expect-error if (mobx_esm/* ._allowStateReadsStart */.f2 && mobx_esm/* ._allowStateReadsEnd */.w6) { (0,mobx_esm/* ._allowStateReadsEnd */.w6)(prevReadState); } return this[valueHolderKey]; }, set: function set(v) { if (!this[isForcingUpdateKey] && !shallowEqual(this[valueHolderKey], v)) { setHiddenProp(this, valueHolderKey, v); setHiddenProp(this, skipRenderKey, true); getAtom.call(this).reportChanged(); setHiddenProp(this, skipRenderKey, false); } else { setHiddenProp(this, valueHolderKey, v); } } }); } /** * Observer function / decorator */ function mobxreact_esm_observer(component) { if (component["isMobxInjector"] === true) { console.warn("Mobx observer: You are trying to use `observer` on a component that already has `inject`. Please apply `observer` before applying `inject`"); } if (Object.prototype.isPrototypeOf.call(react.Component, component) || Object.prototype.isPrototypeOf.call(react.PureComponent, component)) { // Class component return makeClassComponentObserver(component); } else { // Function component return observer(component); } } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } var _excluded = ["children"]; var MobXProviderContext = /*#__PURE__*/react.createContext({}); function Provider(props) { var children = props.children, stores = _objectWithoutPropertiesLoose(props, _excluded); var parentValue = react.useContext(MobXProviderContext); var mutableProviderRef = react.useRef(_extends({}, parentValue, stores)); var value = mutableProviderRef.current; if (false) { var newValue } return react.createElement(MobXProviderContext.Provider, { value: value }, children); } Provider.displayName = "MobXProvider"; /** * Store Injection */ function createStoreInjector(grabStoresFn, component, injectNames, makeReactive) { // Support forward refs var Injector = React__default.forwardRef(function (props, ref) { var newProps = _extends({}, props); var context = React__default.useContext(MobXProviderContext); Object.assign(newProps, grabStoresFn(context || {}, newProps) || {}); if (ref) { newProps.ref = ref; } return React__default.createElement(component, newProps); }); if (makeReactive) Injector = mobxreact_esm_observer(Injector); Injector["isMobxInjector"] = true; // assigned late to suppress observer warning // Static fields from component should be visible on the generated Injector mobxreact_esm_copyStaticProperties(component, Injector); Injector["wrappedComponent"] = component; Injector.displayName = getInjectName(component, injectNames); return Injector; } function getInjectName(component, injectNames) { var displayName; var componentName = component.displayName || component.name || component.constructor && component.constructor.name || "Component"; if (injectNames) displayName = "inject-with-" + injectNames + "(" + componentName + ")";else displayName = "inject(" + componentName + ")"; return displayName; } function grabStoresByName(storeNames) { return function (baseStores, nextProps) { storeNames.forEach(function (storeName) { if (storeName in nextProps // prefer props over stores ) return; if (!(storeName in baseStores)) throw new Error("MobX injector: Store '" + storeName + "' is not available! Make sure it is provided by some Provider"); nextProps[storeName] = baseStores[storeName]; }); return nextProps; }; } /** * higher order component that injects stores to a child. * takes either a varargs list of strings, which are stores read from the context, * or a function that manually maps the available stores from the context to props: * storesToProps(mobxStores, props, context) => newProps */ function inject() { for (var _len = arguments.length, storeNames = new Array(_len), _key = 0; _key < _len; _key++) { storeNames[_key] = arguments[_key]; } if (typeof arguments[0] === "function") { var grabStoresFn = arguments[0]; return function (componentClass) { return createStoreInjector(grabStoresFn, componentClass, grabStoresFn.name, true); }; } else { return function (componentClass) { return createStoreInjector(grabStoresByName(storeNames), componentClass, storeNames.join("-"), false); }; } } var protoStoreKey = /*#__PURE__*/(/* unused pure expression or super */ null && (newSymbol("disposeOnUnmountProto"))); var instStoreKey = /*#__PURE__*/(/* unused pure expression or super */ null && (newSymbol("disposeOnUnmountInst"))); function runDisposersOnWillUnmount() { var _this = this; [].concat(this[protoStoreKey] || [], this[instStoreKey] || []).forEach(function (propKeyOrFunction) { var prop = typeof propKeyOrFunction === "string" ? _this[propKeyOrFunction] : propKeyOrFunction; if (prop !== undefined && prop !== null) { if (Array.isArray(prop)) prop.map(function (f) { return f(); });else prop(); } }); } function disposeOnUnmount(target, propertyKeyOrFunction) { if (Array.isArray(propertyKeyOrFunction)) { return propertyKeyOrFunction.map(function (fn) { return disposeOnUnmount(target, fn); }); } var c = Object.getPrototypeOf(target).constructor; var c2 = Object.getPrototypeOf(target.constructor); // Special case for react-hot-loader var c3 = Object.getPrototypeOf(Object.getPrototypeOf(target)); if (!(c === React__default.Component || c === React__default.PureComponent || c2 === React__default.Component || c2 === React__default.PureComponent || c3 === React__default.Component || c3 === React__default.PureComponent)) { throw new Error("[mobx-react] disposeOnUnmount only supports direct subclasses of React.Component or React.PureComponent."); } if (typeof propertyKeyOrFunction !== "string" && typeof propertyKeyOrFunction !== "function" && !Array.isArray(propertyKeyOrFunction)) { throw new Error("[mobx-react] disposeOnUnmount only works if the parameter is either a property key or a function."); } // decorator's target is the prototype, so it doesn't have any instance properties like props var isDecorator = typeof propertyKeyOrFunction === "string"; // add property key / function we want run (disposed) to the store var componentWasAlreadyModified = !!target[protoStoreKey] || !!target[instStoreKey]; var store = isDecorator ? // decorators are added to the prototype store target[protoStoreKey] || (target[protoStoreKey] = []) : // functions are added to the instance store target[instStoreKey] || (target[instStoreKey] = []); store.push(propertyKeyOrFunction); // tweak the component class componentWillUnmount if not done already if (!componentWasAlreadyModified) { patch(target, "componentWillUnmount", runDisposersOnWillUnmount); } // return the disposer as is if invoked as a non decorator if (typeof propertyKeyOrFunction !== "string") { return propertyKeyOrFunction; } } function createChainableTypeChecker(validator) { function checkType(isRequired, props, propName, componentName, location, propFullName) { for (var _len = arguments.length, rest = new Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) { rest[_key - 6] = arguments[_key]; } return untracked(function () { componentName = componentName || "<>"; propFullName = propFullName || propName; if (props[propName] == null) { if (isRequired) { var actual = props[propName] === null ? "null" : "undefined"; return new Error("The " + location + " `" + propFullName + "` is marked as required " + "in `" + componentName + "`, but its value is `" + actual + "`."); } return null; } else { // @ts-ignore rest arg is necessary for some React internals - fails tests otherwise return validator.apply(void 0, [props, propName, componentName, location, propFullName].concat(rest)); } }); } var chainedCheckType = checkType.bind(null, false); // Add isRequired to satisfy Requirable chainedCheckType.isRequired = checkType.bind(null, true); return chainedCheckType; } // Copied from React.PropTypes function isSymbol(propType, propValue) { // Native Symbol. if (propType === "symbol") { return true; } // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' if (propValue["@@toStringTag"] === "Symbol") { return true; } // Fallback for non-spec compliant Symbols which are polyfilled. if (typeof Symbol === "function" && propValue instanceof Symbol) { return true; } return false; } // Copied from React.PropTypes function getPropType(propValue) { var propType = typeof propValue; if (Array.isArray(propValue)) { return "array"; } if (propValue instanceof RegExp) { // Old webkits (at least until Android 4.0) return 'function' rather than // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ // passes PropTypes.object. return "object"; } if (isSymbol(propType, propValue)) { return "symbol"; } return propType; } // This handles more types than `getPropType`. Only used for error messages. // Copied from React.PropTypes function getPreciseType(propValue) { var propType = getPropType(propValue); if (propType === "object") { if (propValue instanceof Date) { return "date"; } else if (propValue instanceof RegExp) { return "regexp"; } } return propType; } function createObservableTypeCheckerCreator(allowNativeType, mobxType) { return createChainableTypeChecker(function (props, propName, componentName, location, propFullName) { return untracked(function () { if (allowNativeType) { if (getPropType(props[propName]) === mobxType.toLowerCase()) return null; } var mobxChecker; switch (mobxType) { case "Array": mobxChecker = isObservableArray; break; case "Object": mobxChecker = isObservableObject; break; case "Map": mobxChecker = isObservableMap; break; default: throw new Error("Unexpected mobxType: " + mobxType); } var propValue = props[propName]; if (!mobxChecker(propValue)) { var preciseType = getPreciseType(propValue); var nativeTypeExpectationMessage = allowNativeType ? " or javascript `" + mobxType.toLowerCase() + "`" : ""; return new Error("Invalid prop `" + propFullName + "` of type `" + preciseType + "` supplied to" + " `" + componentName + "`, expected `mobx.Observable" + mobxType + "`" + nativeTypeExpectationMessage + "."); } return null; }); }); } function createObservableArrayOfTypeChecker(allowNativeType, typeChecker) { return createChainableTypeChecker(function (props, propName, componentName, location, propFullName) { for (var _len2 = arguments.length, rest = new Array(_len2 > 5 ? _len2 - 5 : 0), _key2 = 5; _key2 < _len2; _key2++) { rest[_key2 - 5] = arguments[_key2]; } return untracked(function () { if (typeof typeChecker !== "function") { return new Error("Property `" + propFullName + "` of component `" + componentName + "` has " + "invalid PropType notation."); } else { var error = createObservableTypeCheckerCreator(allowNativeType, "Array")(props, propName, componentName, location, propFullName); if (error instanceof Error) return error; var propValue = props[propName]; for (var i = 0; i < propValue.length; i++) { error = typeChecker.apply(void 0, [propValue, i, componentName, location, propFullName + "[" + i + "]"].concat(rest)); if (error instanceof Error) return error; } return null; } }); }); } var observableArray = /*#__PURE__*/(/* unused pure expression or super */ null && (createObservableTypeCheckerCreator(false, "Array"))); var observableArrayOf = /*#__PURE__*/(/* unused pure expression or super */ null && (createObservableArrayOfTypeChecker.bind(null, false))); var observableMap = /*#__PURE__*/(/* unused pure expression or super */ null && (createObservableTypeCheckerCreator(false, "Map"))); var observableObject = /*#__PURE__*/(/* unused pure expression or super */ null && (createObservableTypeCheckerCreator(false, "Object"))); var arrayOrObservableArray = /*#__PURE__*/(/* unused pure expression or super */ null && (createObservableTypeCheckerCreator(true, "Array"))); var arrayOrObservableArrayOf = /*#__PURE__*/(/* unused pure expression or super */ null && (createObservableArrayOfTypeChecker.bind(null, true))); var objectOrObservableObject = /*#__PURE__*/(/* unused pure expression or super */ null && (createObservableTypeCheckerCreator(true, "Object"))); var PropTypes = (/* unused pure expression or super */ null && ({ observableArray: observableArray, observableArrayOf: observableArrayOf, observableMap: observableMap, observableObject: observableObject, arrayOrObservableArray: arrayOrObservableArray, arrayOrObservableArrayOf: arrayOrObservableArrayOf, objectOrObservableObject: objectOrObservableObject })); if (!react.Component) throw new Error("mobx-react requires React to be available"); if (!mobx_esm/* .observable */.sH) throw new Error("mobx-react requires mobx to be available"); }, 95930(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) { "use strict"; /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__rspack_import_0 = __webpack_require__(42604); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__rspack_import_0); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_styleDomAPI_js__rspack_import_1 = __webpack_require__(91605); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_styleDomAPI_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_styleDomAPI_js__rspack_import_1); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_insertBySelector_js__rspack_import_2 = __webpack_require__(70103); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_insertBySelector_js__rspack_import_2_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_insertBySelector_js__rspack_import_2); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__rspack_import_3 = __webpack_require__(11556); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__rspack_import_3_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__rspack_import_3); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_insertStyleElement_js__rspack_import_4 = __webpack_require__(71712); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_insertStyleElement_js__rspack_import_4_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_insertStyleElement_js__rspack_import_4); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_styleTagTransform_js__rspack_import_5 = __webpack_require__(16077); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_styleTagTransform_js__rspack_import_5_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_styleTagTransform_js__rspack_import_5); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_styles_pcss__rspack_import_6 = __webpack_require__(50091); var options = {}; options.styleTagTransform = (_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_styleTagTransform_js__rspack_import_5_default()); options.setAttributes = (_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__rspack_import_3_default()); options.insert = _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_insertBySelector_js__rspack_import_2_default().bind(null, "head"); options.domAPI = (_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_styleDomAPI_js__rspack_import_1_default()); options.insertStyleElement = (_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_insertStyleElement_js__rspack_import_4_default()); var update = _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__rspack_import_0_default()(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_styles_pcss__rspack_import_6/* ["default"] */.A, options); /* unused export default */ var __rspack_default_export = (_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_styles_pcss__rspack_import_6/* ["default"] */.A && _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_styles_pcss__rspack_import_6/* ["default"].locals */.A.locals ? _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_styles_pcss__rspack_import_6/* ["default"].locals */.A.locals : undefined); }, 88323(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) { "use strict"; /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__rspack_import_0 = __webpack_require__(42604); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__rspack_import_0); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_styleDomAPI_js__rspack_import_1 = __webpack_require__(91605); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_styleDomAPI_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_styleDomAPI_js__rspack_import_1); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_insertBySelector_js__rspack_import_2 = __webpack_require__(70103); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_insertBySelector_js__rspack_import_2_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_insertBySelector_js__rspack_import_2); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__rspack_import_3 = __webpack_require__(11556); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__rspack_import_3_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__rspack_import_3); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_insertStyleElement_js__rspack_import_4 = __webpack_require__(71712); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_insertStyleElement_js__rspack_import_4_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_insertStyleElement_js__rspack_import_4); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_styleTagTransform_js__rspack_import_5 = __webpack_require__(16077); /* import */ var _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_styleTagTransform_js__rspack_import_5_default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_styleTagTransform_js__rspack_import_5); /* import */ var _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_styles_pcss__rspack_import_6 = __webpack_require__(22262); var options = {}; options.styleTagTransform = (_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_styleTagTransform_js__rspack_import_5_default()); options.setAttributes = (_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__rspack_import_3_default()); options.insert = _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_insertBySelector_js__rspack_import_2_default().bind(null, "head"); options.domAPI = (_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_styleDomAPI_js__rspack_import_1_default()); options.insertStyleElement = (_node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_insertStyleElement_js__rspack_import_4_default()); var update = _node_modules_pnpm_style_loader_4_0_0_webpack_5_97_1_swc_core_1_11_21_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__rspack_import_0_default()(_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_styles_pcss__rspack_import_6/* ["default"] */.A, options); /* unused export default */ var __rspack_default_export = (_node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_styles_pcss__rspack_import_6/* ["default"] */.A && _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_styles_pcss__rspack_import_6/* ["default"].locals */.A.locals ? _node_modules_pnpm_css_loader_7_1_2_rspack_core_1_6_6_webpack_5_97_1_swc_core_1_11_21_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_4_use_1_node_modules_pnpm_postcss_loader_8_1_1_rspack_core_1_6_6_postcss_8_4_49_typescript_5_6_3_webpack_5_97_1_swc_core_1_11_21_node_modules_postcss_loader_dist_cjs_js_styles_pcss__rspack_import_6/* ["default"].locals */.A.locals : undefined); }, 30595(module, __unused_webpack_exports, __webpack_require__) { var API = __webpack_require__(42604); var domAPI = __webpack_require__(91605); var insertFn = __webpack_require__(70103); var setAttributes = __webpack_require__(11556); var insertStyleElement = __webpack_require__(71712); var styleTagTransformFn = __webpack_require__(16077); var content = __webpack_require__(56528); content = content.__esModule ? content.default : content; var options = {}; options.styleTagTransform = styleTagTransformFn; options.setAttributes = setAttributes; options.insert = insertFn.bind(null, "head"); options.domAPI = domAPI; options.insertStyleElement = insertStyleElement; var update = API(content, options); module.exports = content && content.locals || {}; }, 90819(module, __unused_webpack_exports, __webpack_require__) { var API = __webpack_require__(42604); var domAPI = __webpack_require__(91605); var insertFn = __webpack_require__(70103); var setAttributes = __webpack_require__(11556); var insertStyleElement = __webpack_require__(71712); var styleTagTransformFn = __webpack_require__(16077); var content = __webpack_require__(90686); content = content.__esModule ? content.default : content; var options = {}; options.styleTagTransform = styleTagTransformFn; options.setAttributes = setAttributes; options.insert = insertFn.bind(null, "head"); options.domAPI = domAPI; options.insertStyleElement = insertStyleElement; var update = API(content, options); module.exports = content && content.locals || {}; }, 95573(module, __unused_webpack_exports, __webpack_require__) { var API = __webpack_require__(42604); var domAPI = __webpack_require__(91605); var insertFn = __webpack_require__(70103); var setAttributes = __webpack_require__(11556); var insertStyleElement = __webpack_require__(71712); var styleTagTransformFn = __webpack_require__(16077); var content = __webpack_require__(10240); content = content.__esModule ? content.default : content; var options = {}; options.styleTagTransform = styleTagTransformFn; options.setAttributes = setAttributes; options.insert = insertFn.bind(null, "head"); options.domAPI = domAPI; options.insertStyleElement = insertStyleElement; var update = API(content, options); module.exports = content && content.locals || {}; }, 49167(module, __unused_webpack_exports, __webpack_require__) { var API = __webpack_require__(42604); var domAPI = __webpack_require__(91605); var insertFn = __webpack_require__(70103); var setAttributes = __webpack_require__(11556); var insertStyleElement = __webpack_require__(71712); var styleTagTransformFn = __webpack_require__(16077); var content = __webpack_require__(84582); content = content.__esModule ? content.default : content; var options = {}; options.styleTagTransform = styleTagTransformFn; options.setAttributes = setAttributes; options.insert = insertFn.bind(null, "head"); options.domAPI = domAPI; options.insertStyleElement = insertStyleElement; var update = API(content, options); module.exports = content && content.locals || {}; }, 72404(module, __unused_webpack_exports, __webpack_require__) { var API = __webpack_require__(42604); var domAPI = __webpack_require__(91605); var insertFn = __webpack_require__(70103); var setAttributes = __webpack_require__(11556); var insertStyleElement = __webpack_require__(71712); var styleTagTransformFn = __webpack_require__(16077); var content = __webpack_require__(28859); content = content.__esModule ? content.default : content; var options = {}; options.styleTagTransform = styleTagTransformFn; options.setAttributes = setAttributes; options.insert = insertFn.bind(null, "head"); options.domAPI = domAPI; options.insertStyleElement = insertStyleElement; var update = API(content, options); module.exports = content && content.locals || {}; }, 84126(module, __unused_webpack_exports, __webpack_require__) { var API = __webpack_require__(42604); var domAPI = __webpack_require__(91605); var insertFn = __webpack_require__(70103); var setAttributes = __webpack_require__(11556); var insertStyleElement = __webpack_require__(71712); var styleTagTransformFn = __webpack_require__(16077); var content = __webpack_require__(51405); content = content.__esModule ? content.default : content; var options = {}; options.styleTagTransform = styleTagTransformFn; options.setAttributes = setAttributes; options.insert = insertFn.bind(null, "head"); options.domAPI = domAPI; options.insertStyleElement = insertStyleElement; var update = API(content, options); module.exports = content && content.locals || {}; }, 29959(module, __unused_webpack_exports, __webpack_require__) { var API = __webpack_require__(42604); var domAPI = __webpack_require__(91605); var insertFn = __webpack_require__(70103); var setAttributes = __webpack_require__(11556); var insertStyleElement = __webpack_require__(71712); var styleTagTransformFn = __webpack_require__(16077); var content = __webpack_require__(53690); content = content.__esModule ? content.default : content; var options = {}; options.styleTagTransform = styleTagTransformFn; options.setAttributes = setAttributes; options.insert = insertFn.bind(null, "head"); options.domAPI = domAPI; options.insertStyleElement = insertStyleElement; var update = API(content, options); module.exports = content && content.locals || {}; }, 96627(module, __unused_webpack_exports, __webpack_require__) { var API = __webpack_require__(42604); var domAPI = __webpack_require__(91605); var insertFn = __webpack_require__(70103); var setAttributes = __webpack_require__(11556); var insertStyleElement = __webpack_require__(71712); var styleTagTransformFn = __webpack_require__(16077); var content = __webpack_require__(69678); content = content.__esModule ? content.default : content; var options = {}; options.styleTagTransform = styleTagTransformFn; options.setAttributes = setAttributes; options.insert = insertFn.bind(null, "head"); options.domAPI = domAPI; options.insertStyleElement = insertStyleElement; var update = API(content, options); module.exports = content && content.locals || {}; }, 78656(module, __unused_webpack_exports, __webpack_require__) { var API = __webpack_require__(42604); var domAPI = __webpack_require__(91605); var insertFn = __webpack_require__(70103); var setAttributes = __webpack_require__(11556); var insertStyleElement = __webpack_require__(71712); var styleTagTransformFn = __webpack_require__(16077); var content = __webpack_require__(61605); content = content.__esModule ? content.default : content; var options = {}; options.styleTagTransform = styleTagTransformFn; options.setAttributes = setAttributes; options.insert = insertFn.bind(null, "head"); options.domAPI = domAPI; options.insertStyleElement = insertStyleElement; var update = API(content, options); module.exports = content && content.locals || {}; }, 21207(module, __unused_webpack_exports, __webpack_require__) { var API = __webpack_require__(42604); var domAPI = __webpack_require__(91605); var insertFn = __webpack_require__(70103); var setAttributes = __webpack_require__(11556); var insertStyleElement = __webpack_require__(71712); var styleTagTransformFn = __webpack_require__(16077); var content = __webpack_require__(38019); content = content.__esModule ? content.default : content; var options = {}; options.styleTagTransform = styleTagTransformFn; options.setAttributes = setAttributes; options.insert = insertFn.bind(null, "head"); options.domAPI = domAPI; options.insertStyleElement = insertStyleElement; var update = API(content, options); module.exports = content && content.locals || {}; }, 86920(module, __unused_webpack_exports, __webpack_require__) { var API = __webpack_require__(42604); var domAPI = __webpack_require__(91605); var insertFn = __webpack_require__(70103); var setAttributes = __webpack_require__(11556); var insertStyleElement = __webpack_require__(71712); var styleTagTransformFn = __webpack_require__(16077); var content = __webpack_require__(94091); content = content.__esModule ? content.default : content; var options = {}; options.styleTagTransform = styleTagTransformFn; options.setAttributes = setAttributes; options.insert = insertFn.bind(null, "head"); options.domAPI = domAPI; options.insertStyleElement = insertStyleElement; var update = API(content, options); module.exports = content && content.locals || {}; }, 90846(module, __unused_webpack_exports, __webpack_require__) { var API = __webpack_require__(42604); var domAPI = __webpack_require__(91605); var insertFn = __webpack_require__(70103); var setAttributes = __webpack_require__(11556); var insertStyleElement = __webpack_require__(71712); var styleTagTransformFn = __webpack_require__(16077); var content = __webpack_require__(82747); content = content.__esModule ? content.default : content; var options = {}; options.styleTagTransform = styleTagTransformFn; options.setAttributes = setAttributes; options.insert = insertFn.bind(null, "head"); options.domAPI = domAPI; options.insertStyleElement = insertStyleElement; var update = API(content, options); module.exports = content && content.locals || {}; }, 65690(module, __unused_webpack_exports, __webpack_require__) { var API = __webpack_require__(42604); var domAPI = __webpack_require__(91605); var insertFn = __webpack_require__(70103); var setAttributes = __webpack_require__(11556); var insertStyleElement = __webpack_require__(71712); var styleTagTransformFn = __webpack_require__(16077); var content = __webpack_require__(41971); content = content.__esModule ? content.default : content; var options = {}; options.styleTagTransform = styleTagTransformFn; options.setAttributes = setAttributes; options.insert = insertFn.bind(null, "head"); options.domAPI = domAPI; options.insertStyleElement = insertStyleElement; var update = API(content, options); module.exports = content && content.locals || {}; }, 90247(module, __unused_webpack_exports, __webpack_require__) { var API = __webpack_require__(42604); var domAPI = __webpack_require__(91605); var insertFn = __webpack_require__(70103); var setAttributes = __webpack_require__(11556); var insertStyleElement = __webpack_require__(71712); var styleTagTransformFn = __webpack_require__(16077); var content = __webpack_require__(406); content = content.__esModule ? content.default : content; var options = {}; options.styleTagTransform = styleTagTransformFn; options.setAttributes = setAttributes; options.insert = insertFn.bind(null, "head"); options.domAPI = domAPI; options.insertStyleElement = insertStyleElement; var update = API(content, options); module.exports = content && content.locals || {}; }, 54899(module, __unused_webpack_exports, __webpack_require__) { var API = __webpack_require__(42604); var domAPI = __webpack_require__(91605); var insertFn = __webpack_require__(70103); var setAttributes = __webpack_require__(11556); var insertStyleElement = __webpack_require__(71712); var styleTagTransformFn = __webpack_require__(16077); var content = __webpack_require__(93454); content = content.__esModule ? content.default : content; var options = {}; options.styleTagTransform = styleTagTransformFn; options.setAttributes = setAttributes; options.insert = insertFn.bind(null, "head"); options.domAPI = domAPI; options.insertStyleElement = insertStyleElement; var update = API(content, options); module.exports = content && content.locals || {}; }, 75850(module, __unused_webpack_exports, __webpack_require__) { var API = __webpack_require__(42604); var domAPI = __webpack_require__(91605); var insertFn = __webpack_require__(70103); var setAttributes = __webpack_require__(11556); var insertStyleElement = __webpack_require__(71712); var styleTagTransformFn = __webpack_require__(16077); var content = __webpack_require__(7239); content = content.__esModule ? content.default : content; var options = {}; options.styleTagTransform = styleTagTransformFn; options.setAttributes = setAttributes; options.insert = insertFn.bind(null, "head"); options.domAPI = domAPI; options.insertStyleElement = insertStyleElement; var update = API(content, options); module.exports = content && content.locals || {}; }, 39928(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { v: () => (SchemaPreprocessor) }); /* import */ var zod__rspack_import_0 = __webpack_require__(53034); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /** * In some cases we want to preprocessing input before validation * For example, cast loaded filter metadata item id field from string to number before validation: * * { filterId: "1", ... } -> { filterId: 1, ... }. */ class SchemaPreprocessor { /** * If {@link value} is string, cast it to number, else returns original value. * * @param value Preprocessed value. * * @returns Number value, if string passed, else returns original value. */ static castStringToNumber(value) { if (typeof value === 'string') { return Number(JSON.parse(value)); } return value; } /** * If {@link value} is string, cast it to boolean, else returns original value. * * @param value Preprocessed value. * * @returns Boolean value, if string passed, else returns original value. */ static castStringToBoolean(value) { if (typeof value === 'string') { try { return Boolean(JSON.parse(value)); } catch (e) { return value; } } return value; } } /** * Runtime {@link zod} validator with {@link SchemaPreprocessor.castStringToBoolean} preprocessor. */ _define_property(SchemaPreprocessor, "booleanValidator", zod__rspack_import_0/* ["default"].preprocess */.Ay.preprocess(SchemaPreprocessor.castStringToBoolean, zod__rspack_import_0/* ["default"].boolean */.Ay.boolean())); /** * Runtime {@link zod} validator with {@link SchemaPreprocessor.castStringToNumber} preprocessor. */ _define_property(SchemaPreprocessor, "numberValidator", zod__rspack_import_0/* ["default"].preprocess */.Ay.preprocess(SchemaPreprocessor.castStringToNumber, zod__rspack_import_0/* ["default"].number */.Ay.number())); }, 12616(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { G: () => (SettingOption) }); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * Separate file with only enum to exclude imports of zod to other files. */ var SettingOption = /*#__PURE__*/ function(SettingOption) { // General settings. SettingOption["AppearanceTheme"] = "appearance-theme"; SettingOption["DisableShowPageStats"] = "disable-show-page-statistic"; SettingOption["DisableDetectFilters"] = "detect-filters-disabled"; SettingOption["DisableSafebrowsing"] = "safebrowsing-disabled"; SettingOption["FiltersUpdatePeriod"] = "filters-update-period"; // Is filtering disabled or not. SettingOption["DisableFiltering"] = "adguard-disabled"; // Extension specific settings. SettingOption["UseOptimizedFilters"] = "use-optimized-filters"; SettingOption["DisableCollectHits"] = "hits-count-disabled"; SettingOption["AllowAnonymizedUsageData"] = "allow-anonymized-usage-data"; SettingOption["DisableShowContextMenu"] = "context-menu-disabled"; // Flag used to show link to comparison of desktop and browser extension versions. SettingOption["DisableShowAdguardPromoInfo"] = "show-info-about-adguard-disabled"; SettingOption["DisableShowAppUpdatedNotification"] = "show-app-updated-disabled"; SettingOption["HideRateBlock"] = "hide-rate-block"; SettingOption["UserRulesEditorWrap"] = "user-rules-editor-wrap"; // Allowlist section. SettingOption["AllowlistDomains"] = "allowlist-domains"; SettingOption["InvertedAllowlistDomains"] = "block-list-domains"; SettingOption["AllowlistEnabled"] = "allowlist-enabled"; SettingOption["DefaultAllowlistMode"] = "default-allowlist-mode"; // Tracking protection (formerly Stealth mode). SettingOption["DisableStealthMode"] = "stealth-disable-stealth-mode"; SettingOption["HideReferrer"] = "stealth-hide-referrer"; SettingOption["HideSearchQueries"] = "stealth-hide-search-queries"; SettingOption["SendDoNotTrack"] = "stealth-send-do-not-track"; SettingOption["RemoveXClientData"] = "stealth-remove-x-client"; SettingOption["BlockWebRTC"] = "stealth-block-webrtc"; SettingOption["SelfDestructThirdPartyCookies"] = "stealth-block-third-party-cookies"; SettingOption["SelfDestructThirdPartyCookiesTime"] = "stealth-block-third-party-cookies-time"; SettingOption["SelfDestructFirstPartyCookies"] = "stealth-block-first-party-cookies"; SettingOption["SelfDestructFirstPartyCookiesTime"] = "stealth-block-first-party-cookies-time"; // Filters' statuses and states. SettingOption["FiltersState"] = "filters-state"; SettingOption["FiltersVersion"] = "filters-version"; SettingOption["GroupsState"] = "groups-state"; SettingOption["UserFilterEnabled"] = "user-filter-enabled"; // Filters metadata. SettingOption["Metadata"] = "filters-metadata"; SettingOption["I18nMetadata"] = "filters-i18n-metadata"; SettingOption["CustomFilters"] = "custom-filters"; // Preserve log. SettingOption["PreserveLogEnabled"] = "preserve-log-enabled"; return SettingOption; }({}); }, 20417(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { GZ: () => (/* reexport safe */ _enum__rspack_import_1.G), Tk: () => (/* reexport safe */ _main__rspack_import_0.T) }); /* import */ var _main__rspack_import_0 = __webpack_require__(36200); /* import */ var _enum__rspack_import_1 = __webpack_require__(12616); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ }, 36200(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { T: () => (appearanceValidator) }); /* import */ var zod__rspack_import_1 = __webpack_require__(53034); /* import */ var _preprocessor__rspack_import_0 = __webpack_require__(39928); /* import */ var _common_constants__rspack_import_2 = __webpack_require__(88819); /* import */ var _enum__rspack_import_3 = __webpack_require__(12616); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ const appearanceValidator = zod__rspack_import_1/* ["default"]["enum"] */.Ay["enum"]([ _common_constants__rspack_import_2/* .AppearanceTheme.System */.i0.System, _common_constants__rspack_import_2/* .AppearanceTheme.Light */.i0.Light, _common_constants__rspack_import_2/* .AppearanceTheme.Dark */.i0.Dark ]); /** * Setting options may be stringified, use preprocessors for correct type casting. */ const settingsValidator = zod__rspack_import_1/* ["default"].object */.Ay.object({ // ----- General settings section ----- /** * See {@link GeneralSettingsConfig[GeneralSettingsOption.AppearanceTheme]}. */ [_enum__rspack_import_3/* .SettingOption.AppearanceTheme */.G.AppearanceTheme]: appearanceValidator, /** * See {@link GeneralSettingsConfig[GeneralSettingsOption.ShowBlockedAdsCount]}. */ [_enum__rspack_import_3/* .SettingOption.DisableShowPageStats */.G.DisableShowPageStats]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link GeneralSettingsConfig[GeneralSettingsOption.AutodetectFilters]}. */ [_enum__rspack_import_3/* .SettingOption.DisableDetectFilters */.G.DisableDetectFilters]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link GeneralSettingsConfig[GeneralSettingsOption.SafebrowsingEnabled]}. */ [_enum__rspack_import_3/* .SettingOption.DisableSafebrowsing */.G.DisableSafebrowsing]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link GeneralSettingsConfig[GeneralSettingsOption.FiltersUpdatePeriod]}. */ [_enum__rspack_import_3/* .SettingOption.FiltersUpdatePeriod */.G.FiltersUpdatePeriod]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.numberValidator */.v.numberValidator, // ----- General settings section ----- // ----- Extension specific settings section ----- /** * See {@link ExtensionSpecificSettingsConfig[ExtensionSpecificSettingsOption.UseOptimizedFilters]}. */ [_enum__rspack_import_3/* .SettingOption.UseOptimizedFilters */.G.UseOptimizedFilters]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link ExtensionSpecificSettingsConfig[ExtensionSpecificSettingsOption.CollectHitsCount]}. */ [_enum__rspack_import_3/* .SettingOption.DisableCollectHits */.G.DisableCollectHits]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link ExtensionSpecificSettingsConfig[ExtensionSpecificSettingsOption.AllowAnonymizedUsageData]}. */ [_enum__rspack_import_3/* .SettingOption.AllowAnonymizedUsageData */.G.AllowAnonymizedUsageData]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link ExtensionSpecificSettingsConfig[ExtensionSpecificSettingsOption.ShowContextMenu]}. */ [_enum__rspack_import_3/* .SettingOption.DisableShowContextMenu */.G.DisableShowContextMenu]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link ExtensionSpecificSettingsConfig[ExtensionSpecificSettingsOption.ShowInfoAboutAdguard]}. */ [_enum__rspack_import_3/* .SettingOption.DisableShowAdguardPromoInfo */.G.DisableShowAdguardPromoInfo]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link ExtensionSpecificSettingsConfig[ExtensionSpecificSettingsOption.ShowAppUpdatedInfo]}. */ [_enum__rspack_import_3/* .SettingOption.DisableShowAppUpdatedNotification */.G.DisableShowAppUpdatedNotification]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link ExtensionSpecificSettingsConfig[ExtensionSpecificSettingsOption.HideRateAdguard]}. */ [_enum__rspack_import_3/* .SettingOption.HideRateBlock */.G.HideRateBlock]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link ExtensionSpecificSettingsConfig[ExtensionSpecificSettingsOption.UserRulesEditorWrap]}. */ [_enum__rspack_import_3/* .SettingOption.UserRulesEditorWrap */.G.UserRulesEditorWrap]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, // ----- Extension specific settings section ----- // ----- Allowlist section ----- /** * See {@link AllowlistConfig[AllowlistOption.Domains]}. */ [_enum__rspack_import_3/* .SettingOption.AllowlistDomains */.G.AllowlistDomains]: zod__rspack_import_1/* ["default"].string */.Ay.string(), /** * See {@link AllowlistConfig[AllowlistOption.InvertedDomains]}. */ [_enum__rspack_import_3/* .SettingOption.InvertedAllowlistDomains */.G.InvertedAllowlistDomains]: zod__rspack_import_1/* ["default"].string */.Ay.string(), /** * See {@link AllowlistConfig[AllowlistOption.Enabled]}. */ [_enum__rspack_import_3/* .SettingOption.AllowlistEnabled */.G.AllowlistEnabled]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link AllowlistConfig[AllowlistOption.Inverted]}. */ [_enum__rspack_import_3/* .SettingOption.DefaultAllowlistMode */.G.DefaultAllowlistMode]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, // ----- Allowlist section ----- // ----- Stealth section ----- /** * See {@link StealthConfig[StealthOption.DisableStealthMode]}. */ [_enum__rspack_import_3/* .SettingOption.DisableStealthMode */.G.DisableStealthMode]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link StealthConfig[StealthOption.HideReferrer]}. */ [_enum__rspack_import_3/* .SettingOption.HideReferrer */.G.HideReferrer]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link StealthConfig[StealthOption.HideSearchQueries]}. */ [_enum__rspack_import_3/* .SettingOption.HideSearchQueries */.G.HideSearchQueries]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link StealthConfig[StealthOption.SendDoNotTrack]}. */ [_enum__rspack_import_3/* .SettingOption.SendDoNotTrack */.G.SendDoNotTrack]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link StealthConfig[StealthOption.BlockWebRTC]}. */ [_enum__rspack_import_3/* .SettingOption.BlockWebRTC */.G.BlockWebRTC]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link StealthConfig[StealthOption.RemoveXClientData]}. */ [_enum__rspack_import_3/* .SettingOption.RemoveXClientData */.G.RemoveXClientData]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link StealthConfig[StealthOption.SelfDestructThirdPartyCookies]}. */ [_enum__rspack_import_3/* .SettingOption.SelfDestructThirdPartyCookies */.G.SelfDestructThirdPartyCookies]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link StealthConfig[StealthOption.SelfDestructThirdPartyCookiesTime]}. */ [_enum__rspack_import_3/* .SettingOption.SelfDestructThirdPartyCookiesTime */.G.SelfDestructThirdPartyCookiesTime]: zod__rspack_import_1/* ["default"].number */.Ay.number(), /** * See {@link StealthConfig[StealthOption.SelfDestructFirstPartyCookies]}. */ [_enum__rspack_import_3/* .SettingOption.SelfDestructFirstPartyCookies */.G.SelfDestructFirstPartyCookies]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link StealthConfig[StealthOption.SelfDestructFirstPartyCookiesTime]}. */ [_enum__rspack_import_3/* .SettingOption.SelfDestructFirstPartyCookiesTime */.G.SelfDestructFirstPartyCookiesTime]: zod__rspack_import_1/* ["default"].number */.Ay.number(), // ----- Stealth section ----- // ----- Statuses section ----- /** * See {@link UserFilterConfig[UserFilterOption.Enabled]}. */ [_enum__rspack_import_3/* .SettingOption.UserFilterEnabled */.G.UserFilterEnabled]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * See {@link FilterStateStorageData}. */ [_enum__rspack_import_3/* .SettingOption.FiltersState */.G.FiltersState]: zod__rspack_import_1/* ["default"].string */.Ay.string().optional(), /** * See {@link FilterVersionStorageData}. */ [_enum__rspack_import_3/* .SettingOption.FiltersVersion */.G.FiltersVersion]: zod__rspack_import_1/* ["default"].string */.Ay.string().optional(), /** * See {@link GroupStateStorageData}. */ [_enum__rspack_import_3/* .SettingOption.GroupsState */.G.GroupsState]: zod__rspack_import_1/* ["default"].string */.Ay.string().optional(), // ----- Statuses section ----- // ----- Metadata section ----- /** * See {@link Metadata}. */ [_enum__rspack_import_3/* .SettingOption.Metadata */.G.Metadata]: zod__rspack_import_1/* ["default"].string */.Ay.string().optional(), /** * See {@link I18nMetadata}. */ [_enum__rspack_import_3/* .SettingOption.I18nMetadata */.G.I18nMetadata]: zod__rspack_import_1/* ["default"].string */.Ay.string().optional(), /** * See {@link CustomFilterMetadataStorageData}. */ [_enum__rspack_import_3/* .SettingOption.CustomFilters */.G.CustomFilters]: zod__rspack_import_1/* ["default"].string */.Ay.string().optional(), // ----- Metadata section ----- /** * Is filtering enabled or not. Is needed for fast toggling filtering * without reload entire extension. */ [_enum__rspack_import_3/* .SettingOption.DisableFiltering */.G.DisableFiltering]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator, /** * Preserve log enabled setting for filtering log UI. */ [_enum__rspack_import_3/* .SettingOption.PreserveLogEnabled */.G.PreserveLogEnabled]: _preprocessor__rspack_import_0/* .SchemaPreprocessor.booleanValidator */.v.booleanValidator }); }, 88819(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { $1: () => (NavigationTag), Cb: () => (MIN_UPDATE_DISPLAY_DURATION_MS), DY: () => (NotifierType), Eg: () => (TOTAL_BLOCKED_STATS_GROUP_ID), FF: () => (BACKGROUND_TAB_ID), Fx: () => (TRUSTED_TAG_KEYWORD), GE: () => (FiltersUpdateTime), JP: () => (NEWLINE_CHAR_UNIX), Nb: () => (WILDCARD_SUBDOMAIN_PREFIX), Nq: () => (RECOMMENDED_TAG_ID), SG: () => (CHROME_EXTENSIONS_SETTINGS_URL), UA: () => (NOTIFICATION_TTL_MS), Vv: () => (OPERA_EXTENSIONS_SETTINGS_URL), WC: () => (NEWLINE_CHAR_REGEX), Xu: () => (CUSTOM_FILTERS_START_ID), fE: () => (DAYS_PER_WEEK), gD: () => (ExtensionUpdateFSMState), gU: () => (SCROLLBAR_WIDTH), ge: () => (AntibannerGroupsId), i0: () => (AppearanceTheme), iR: () => (WASTE_CHARACTERS), j8: () => (AntiBannerFiltersId), rv: () => (USER_SCRIPTS_API_MIN_CHROME_VERSION_REQUIRED), uw: () => (WILDCARD_TLD_SUFFIX), xG: () => (TRUSTED_TAG_ID) }); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * Current version of app storage data schema. * * Schema version is used on extension version update. * * Note: Do not to be confused with the protocol version of the imported config. */ const APP_SCHEMA_VERSION = 15; /** * Number of days in the week statistics window shown in the popup "Week" tab. */ const DAYS_PER_WEEK = 7; const CLIENT_ID_KEY = 'client-id'; const APP_VERSION_KEY = 'app-version'; const SCHEMA_VERSION_KEY = 'schema-version'; const ADGUARD_SETTINGS_KEY = 'adguard-settings'; const PAGE_STATISTIC_KEY = 'page-statistic'; const TRUSTED_DOCUMENTS_CACHE_KEY = 'trusted-documents'; const SB_LRU_CACHE_KEY = 'sb-lru-cache'; const SB_SUSPENDED_CACHE_KEY = 'safebrowsing-suspended-from'; const VIEWED_NOTIFICATIONS_KEY = 'viewed-notifications'; const LAST_NOTIFICATION_TIME_KEY = 'viewed-notification-time'; const HIT_STATISTIC_KEY = 'filters-hit-count'; const ANNOYANCES_CONSENT_KEY = 'annoyances-consent'; const RULES_LIMITS_KEY = 'rules-limits'; const MANUAL_EXTENSION_UPDATE_KEY = 'manual-extension-update'; /** * Marker key indicating that {@link MANUAL_EXTENSION_UPDATE_KEY} data * has already been processed by handleReload and the target page was opened. * * Prevents re-opening the page on subsequent service worker restarts. */ const MANUAL_EXTENSION_UPDATE_PAGE_OPENED_KEY = 'manual-extension-update-page-opened'; /** * Storage key to prevent double injection of content scripts after extension update. * Set before extension reload, checked and cleared after reload. */ const CONTENT_SCRIPT_INJECTION_FLAG = 'content-script-injection-flag'; /** * Storage key for auto-update state data, used only in MV3. */ const AUTO_UPDATE_STATE_KEY_MV3 = 'auto-update-state-mv3'; /** * Storage key for auto-update configuration override, used only in MV3 for testing. */ const AUTO_UPDATE_CONFIG_KEY_MV3 = 'auto-update-config-mv3'; /** * Storage keys for the periodic extension update check service. * * - `timestamp`: Timestamp of the last successful check, used to determine if 24h has elapsed. * - `availableVersion`: Version reported by the backend as available. * Absent/undefined means no update is available. */ const EXTENSION_UPDATE_CHECK_KEYS = (/* unused pure expression or super */ null && ({ timestamp: 'extension-update-check-timestamp', availableVersion: 'extension-update-available-version' })); /** * Storage key for filtering log window state (position and size), * persisted in browser.storage.local. */ const FILTERING_LOG_WINDOW_STATE_KEY = 'filtering-log-window-state'; /** * Storage key for telemetry synthetic ID. */ const TELEMETRY_SYNTHETIC_ID_KEY = 'telemetry-synthetic-id'; /** * Storage key for search page access state. */ const SEARCH_PAGE_ACCESS_KEY = 'search-page-access-state'; /** * Filter ids used in the code on the background page and filtering log page. */ var AntiBannerFiltersId = /*#__PURE__*/ function(AntiBannerFiltersId) { AntiBannerFiltersId[AntiBannerFiltersId["StealthModeFilterId"] = -1] = "StealthModeFilterId"; AntiBannerFiltersId[AntiBannerFiltersId["UserFilterId"] = 0] = "UserFilterId"; AntiBannerFiltersId[AntiBannerFiltersId["EnglishFilterId"] = 2] = "EnglishFilterId"; AntiBannerFiltersId[AntiBannerFiltersId["TrackingFilterId"] = 3] = "TrackingFilterId"; AntiBannerFiltersId[AntiBannerFiltersId["SocialFilterId"] = 4] = "SocialFilterId"; AntiBannerFiltersId[AntiBannerFiltersId["SearchAndSelfPromoFilterId"] = 10] = "SearchAndSelfPromoFilterId"; AntiBannerFiltersId[AntiBannerFiltersId["AnnoyancesCombinedFilterId"] = 14] = "AnnoyancesCombinedFilterId"; AntiBannerFiltersId[AntiBannerFiltersId["DnsFilterId"] = 15] = "DnsFilterId"; AntiBannerFiltersId[AntiBannerFiltersId["UrlTrackingFilterId"] = 17] = "UrlTrackingFilterId"; AntiBannerFiltersId[AntiBannerFiltersId["AnnoyancesCookieNoticesFilterId"] = 18] = "AnnoyancesCookieNoticesFilterId"; AntiBannerFiltersId[AntiBannerFiltersId["AnnoyancesPopupsFilterId"] = 19] = "AnnoyancesPopupsFilterId"; AntiBannerFiltersId[AntiBannerFiltersId["AnnoyancesMobileAppBannersFilterId"] = 20] = "AnnoyancesMobileAppBannersFilterId"; AntiBannerFiltersId[AntiBannerFiltersId["AnnoyancesOtherAnnoyancesFilterId"] = 21] = "AnnoyancesOtherAnnoyancesFilterId"; AntiBannerFiltersId[AntiBannerFiltersId["AnnoyancesWidgetsFilterId"] = 22] = "AnnoyancesWidgetsFilterId"; AntiBannerFiltersId[AntiBannerFiltersId["AllowlistFilterId"] = 100] = "AllowlistFilterId"; AntiBannerFiltersId[AntiBannerFiltersId["MobileAdsFilterId"] = 11] = "MobileAdsFilterId"; /** * @deprecated */ AntiBannerFiltersId[AntiBannerFiltersId["QuickFixesFilterId"] = 24] = "QuickFixesFilterId"; return AntiBannerFiltersId; }({}); /** * AdGuard Annoyances filter has been splitted into 5 other filters: * Cookie Notices, Popups, Mobile App Banners, Other Annoyances * and Widgets - which we should enabled instead of the Annoyances filter. */ const SEPARATE_ANNOYANCE_FILTER_IDS = (/* unused pure expression or super */ null && ([ 18, 19, 20, 21, 22 ])); /** * Group ids used in the code on the multiple entry points. */ var AntibannerGroupsId = /*#__PURE__*/ function(AntibannerGroupsId) { /** * Custom filters group identifier. */ AntibannerGroupsId[AntibannerGroupsId["CustomFiltersGroupId"] = 0] = "CustomFiltersGroupId"; AntibannerGroupsId[AntibannerGroupsId["AdBlockingFiltersGroupId"] = 1] = "AdBlockingFiltersGroupId"; AntibannerGroupsId[AntibannerGroupsId["PrivacyFiltersGroupId"] = 2] = "PrivacyFiltersGroupId"; AntibannerGroupsId[AntibannerGroupsId["SocialFiltersGroupId"] = 3] = "SocialFiltersGroupId"; AntibannerGroupsId[AntibannerGroupsId["AnnoyancesFiltersGroupId"] = 4] = "AnnoyancesFiltersGroupId"; AntibannerGroupsId[AntibannerGroupsId["SecurityFiltersGroupId"] = 5] = "SecurityFiltersGroupId"; /** * Other filters group identifier. */ AntibannerGroupsId[AntibannerGroupsId["OtherFiltersGroupId"] = 6] = "OtherFiltersGroupId"; /** * Language-specific group identifier. */ AntibannerGroupsId[AntibannerGroupsId["LanguageFiltersGroupId"] = 7] = "LanguageFiltersGroupId"; return AntibannerGroupsId; }({}); /** * Recommended filters tag ID. * * @see https://github.com/AdguardTeam/FiltersRegistry/blob/4528f7ae6b38aec90111a27efb0a7e0958d0cf37/tags/metadata.json#L40 */ const RECOMMENDED_TAG_ID = 10; /** * Enum with the list of the messages which are sent from the background * to notify UI about some events, e.g. some field in settings was updated. */ var NotifierType = /*#__PURE__*/ function(NotifierType) { NotifierType["RequestFilterUpdated"] = "event.request.filter.updated"; NotifierType["UserFilterUpdated"] = "event.user.filter.updated"; NotifierType["CustomFilterAdded"] = "event.custom.filter.added"; NotifierType["UpdateAllowlistFilterRules"] = "event.update.allowlist.filter.rules"; NotifierType["SettingUpdated"] = "event.update.setting.value"; NotifierType["FiltersUpdateCheckReady"] = "event.update.filters.check"; NotifierType["ExtensionUpdateStateChange"] = "event.update.extension.state.change"; NotifierType["AvailableUpdateVersionChanged"] = "event.update.available.version.changed"; // Filtering log events. NotifierType["TabAdded"] = "log.tab.added"; NotifierType["TabClose"] = "log.tab.close"; NotifierType["TabUpdate"] = "log.tab.update"; NotifierType["TabReset"] = "log.tab.reset"; // Fullscreen user rules events NotifierType["FullscreenUserRulesEditorUpdated"] = "event.user.rules.editor.updated"; return NotifierType; }({}); const KEEP_ALIVE_PORT_NAME = 'keep-alive'; var NavigationTag = /*#__PURE__*/ function(NavigationTag) { NavigationTag["Regular"] = "regular"; NavigationTag["Party"] = "party"; return NavigationTag; }({}); /** * Trusted tag for custom filters */ const TRUSTED_TAG_KEYWORD = 'trusted'; /** * Trusted tag id for custom filters. */ const TRUSTED_TAG_ID = 999; /** * Custom filters group display number */ const CUSTOM_FILTERS_GROUP_DISPLAY_NUMBER = 99; /** * Custom filters identifiers starts from this number */ const CUSTOM_FILTERS_START_ID = 1000; // Unnecessary characters that will be replaced const WASTE_CHARACTERS = /[.*+?^${}()|[\]\\]/g; // Custom scrollbar width const SCROLLBAR_WIDTH = 12; const BACKGROUND_TAB_ID = -1; const TOTAL_BLOCKED_STATS_GROUP_ID = 'total'; /** * Time interval between filter updates. */ var FiltersUpdateTime = /*#__PURE__*/ function(FiltersUpdateTime) { FiltersUpdateTime[FiltersUpdateTime["Disabled"] = 0] = "Disabled"; FiltersUpdateTime[FiltersUpdateTime["OneHour"] = 3600000] = "OneHour"; FiltersUpdateTime[FiltersUpdateTime["SixHours"] = 21600000] = "SixHours"; FiltersUpdateTime[FiltersUpdateTime["TwelveHours"] = 43200000] = "TwelveHours"; FiltersUpdateTime[FiltersUpdateTime["TwentyFourHours"] = 86400000] = "TwentyFourHours"; FiltersUpdateTime[FiltersUpdateTime["FortyEightHours"] = 172800000] = "FortyEightHours"; FiltersUpdateTime[FiltersUpdateTime["Default"] = -1] = "Default"; return FiltersUpdateTime; }({}); const NEWLINE_CHAR_UNIX = '\n'; const NEWLINE_CHAR_REGEX = /\r\n|\r|\n/; const OPTIONS_PAGE = 'pages/options.html'; const FILTER_LIST_EXTENSION = '.txt'; /** * Special event name for extension initialization, needed for run automatic * integration tests. */ const EXTENSION_INITIALIZED_EVENT = 'initialized'; /** * Chrome's extensions settings page url. */ const CHROME_EXTENSIONS_SETTINGS_URL = 'chrome://extensions'; /** * Opera's extensions settings page url. */ const OPERA_EXTENSIONS_SETTINGS_URL = 'opera://extensions'; /** * Time-to-live for notifications in milliseconds. */ const NOTIFICATION_TTL_MS = 4000; /** * Minimum Chrome versions required for different toggles which enables usage of User Scripts API. * * User scripts API with needed 'execute' method is supported from Chrome 135 and higher. * But prior to 138 it can be enabled only via Developer mode toggle. * And for 138 and higher it can be enabled via User Scripts API toggle in the extensions details. * * @see https://developer.chrome.com/docs/extensions/reference/api/userScripts */ const USER_SCRIPTS_API_MIN_CHROME_VERSION_REQUIRED = { /** * Minimum Chrome version where Developer mode should be enabled. * * @see https://developer.chrome.com/docs/extensions/reference/api/userScripts#chrome_versions_prior_to_138_developer_mode_toggle */ DEV_MODE_TOGGLE: 135, /** * Minimum Chrome version where User Scripts API toggle should be enabled. * * @see https://developer.chrome.com/docs/extensions/reference/api/userScripts#chrome_versions_138_and_newer_allow_user_scripts_toggle */ ALLOW_USER_SCRIPTS_TOGGLE: 138 }; /** * Delay in milliseconds before rechecking the state of the User Scripts API permission. * * Needed to update the state of the warning when the user grants or revokes the permission. */ const USER_SCRIPTS_API_WARNING_RECHECK_DELAY_MS = 2000; /** * States for the extension update finite state machine (FSM). */ var ExtensionUpdateFSMState = /*#__PURE__*/ function(ExtensionUpdateFSMState) { /** * Idle state. */ ExtensionUpdateFSMState["Idle"] = "Idle"; /** * Checking for updates state. */ ExtensionUpdateFSMState["Checking"] = "Checking"; /** * Available updates state. */ ExtensionUpdateFSMState["Available"] = "Available"; /** * Updating state. */ ExtensionUpdateFSMState["Updating"] = "Updating"; /** * Not available updates state. * * It means that the extension is already up-to-date. */ ExtensionUpdateFSMState["NotAvailable"] = "NotAvailable"; /** * Update failed state. */ ExtensionUpdateFSMState["Failed"] = "Failed"; /** * Update success state. */ ExtensionUpdateFSMState["Success"] = "Success"; return ExtensionUpdateFSMState; }({}); /** * Events for the extension update finite state machine (FSM). * * Note: there is no event for successful update, because it is not needed — * the extension is reloaded automatically after the update * and needed notification is shown based on the storage value (set before the update). * For more details, see `ExtensionUpdateService.handleExtensionReloadOnUpdate()`. */ var ExtensionUpdateFSMEvent = /*#__PURE__*/ (/* unused pure expression or super */ null && (function(ExtensionUpdateFSMEvent) { /** * Event to initialize the state machine. */ ExtensionUpdateFSMEvent["Init"] = "Init"; /** * Event to check for updates. */ ExtensionUpdateFSMEvent["Check"] = "Check"; /** * Event for no available updates after the check. */ ExtensionUpdateFSMEvent["NoUpdateAvailable"] = "NoUpdateAvailable"; /** * Event for available updates after the check. */ ExtensionUpdateFSMEvent["UpdateAvailable"] = "UpdateAvailable"; /** * Event to start the update. */ ExtensionUpdateFSMEvent["Update"] = "Update"; /** * Event for failed update. */ ExtensionUpdateFSMEvent["UpdateFailed"] = "UpdateFailed"; return ExtensionUpdateFSMEvent; }({}))); /** * Time duration for showing update state change. Needed for smoother user experience. */ const MIN_UPDATE_DISPLAY_DURATION_MS = 2 * 1000; /** * Available appearance themes for the extension UI. */ var AppearanceTheme = /*#__PURE__*/ function(AppearanceTheme) { AppearanceTheme["System"] = "system"; AppearanceTheme["Dark"] = "dark"; AppearanceTheme["Light"] = "light"; return AppearanceTheme; }({}); /** * Wildcard prefix for subdomains matching. */ const WILDCARD_SUBDOMAIN_PREFIX = '*.'; /** * Wildcard suffix for top-level domains matching. */ const WILDCARD_TLD_SUFFIX = '.*'; }, 59387(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { S9: () => (ForwardFrom), u2: () => (ForwardAction), w8: () => (Forward) }); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * IMPORTANT: do not change the values as tds is already configured for that specific strings. */ function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var ForwardAction = /*#__PURE__*/ function(ForwardAction) { ForwardAction["UninstallExtension"] = "adguard_uninstal_ext"; // used for thank you page ForwardAction["ThankYou"] = "thank_you_page"; // used for thank you page for MV3 ForwardAction["ThankYouMv3"] = "thank_you_page_mv3"; // used for "More information" on the page blocked by Safebrowsing ForwardAction["SiteReport"] = "site_report_page"; // used for "Report an issue" in popup or context menu on the page ForwardAction["IssueReport"] = "report"; // used for "Report a bug" on options page in General section ForwardAction["BugReport"] = "bug_report"; ForwardAction["BugReportMv3"] = "bug_report_mv3"; ForwardAction["Privacy"] = "privacy"; ForwardAction["Acknowledgments"] = "acknowledgments"; ForwardAction["Github"] = "github_options"; ForwardAction["Website"] = "adguard_site"; ForwardAction["Discuss"] = "discuss"; ForwardAction["Compare"] = "compare"; ForwardAction["Changelog"] = "github_version_popup"; ForwardAction["GlobalPrivacyControl"] = "global_privacy_control"; ForwardAction["DoNotTrack"] = "do_not_track"; ForwardAction["HowToCreateRules"] = "userfilter_description"; ForwardAction["FilterPolicy"] = "filter_policy"; ForwardAction["AdguardSite"] = "adguard_site"; ForwardAction["SelfPromotion"] = "self_promotion"; ForwardAction["ProtectionWorks"] = "protection_works"; ForwardAction["CollectHitsLearnMore"] = "filter_rules"; ForwardAction["OperaStore"] = "opera_store"; ForwardAction["FirefoxStore"] = "firefox_store"; /** * Main supported release version — "AdGuard AdBlocker". */ ForwardAction["ChromeMv3Store"] = "chrome_store"; // TODO: can be removed in few months after v5.0 MV3 release // since it will no longer be used /** * Supported MV3 beta version. * * Previously known as "AdGuard AdBlocker MV3 Experimental", * currently — "AdGuard AdBlocker (MV3 Beta)". */ ForwardAction["ChromeMv3BetaStore"] = "chrome_mv3_store"; /** * Supported MV2 release version. * * Previously known as "AdGuard AdBlocker (Beta)". */ ForwardAction["ChromeMv2Store"] = "chrome_mv2_store"; ForwardAction["EdgeStore"] = "edge_store"; ForwardAction["IOS"] = "ios_about"; ForwardAction["Android"] = "android_about"; ForwardAction["GetTheApp"] = "get_the_app"; ForwardAction["GithubVersion"] = "github_version_popup"; ForwardAction["GithubVersionBeta"] = "github_version_popup_beta"; ForwardAction["LearnAboutAdGuard"] = "learn_about_adguard"; ForwardAction["FilteringLogAssumedRule"] = "filtering_log_assumed_rule"; ForwardAction["NewYear25"] = "new_year_25"; // TODO: Delete from here and TDS after release v5.2. ForwardAction["CustomFiltersMv3Disabled"] = "custom_mv3_disabled"; // IMPORTANT: do not change the value as tds is already configured for that specific string. ForwardAction["UserScriptsApiRequired"] = "developer_mode_required"; ForwardAction["DesktopAppPromoWindows"] = "desktop_app_promo_windows"; ForwardAction["DesktopAppPromoMac"] = "desktop_app_promo_mac"; ForwardAction["DesktopAppPromoLinux"] = "desktop_app_promo_linux"; ForwardAction["ShareLink"] = "share_link"; return ForwardAction; }({}); /** * All pages from which a user can be forwarded. */ var ForwardFrom = /*#__PURE__*/ function(ForwardFrom) { ForwardFrom["Background"] = "background"; ForwardFrom["Options"] = "options_screen"; ForwardFrom["OptionsFooter"] = "options_screen_footer"; ForwardFrom["ContextMenu"] = "context_menu"; ForwardFrom["Popup"] = "popup"; ForwardFrom["Safebrowsing"] = "safebrowsing"; ForwardFrom["Adblocker"] = "adblocked"; ForwardFrom["VersionPopup"] = "version_popup"; ForwardFrom["FilteringLog"] = "filtering_log"; return ForwardFrom; }({}); var ForwardApp = /*#__PURE__*/ (/* unused pure expression or super */ null && (function(ForwardApp) { ForwardApp["BrowserExtension"] = "browser_extension"; return ForwardApp; }({}))); /** * Class for creating forward links */ class Forward { static get(params) { const queryString = Object.entries({ ...Forward.defaultParams, ...params }).map(([key, value])=>`${key}=${value}`).join('&'); return `${Forward.url}?${queryString}`; } } _define_property(Forward, "url", 'https://link.adtidy.org/forward.html'); _define_property(Forward, "defaultParams", { app: "browser_extension" }); }, 29086(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { Go: () => (MessageType), Wd: () => (FULLSCREEN_STATE), zk: () => (APP_MESSAGE_HANDLER_NAME) }); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * Important: do not use z.inferOf, because it brings a lot of side effects with * many dependencies to the bundle. * * Also please try, if possible, to not import here external modules * other that types. */ const APP_MESSAGE_HANDLER_NAME = 'app'; /** * Message types used for message passing between extension contexts * (popup, filtering log, content scripts, background) */ var MessageType = /*#__PURE__*/ function(MessageType) { MessageType["CreateEventListener"] = "createEventListener"; MessageType["RemoveListener"] = "removeListener"; MessageType["OpenExtensionStore"] = "openExtensionStore"; MessageType["AddAndEnableFilter"] = "addAndEnableFilter"; MessageType["ApplySettingsJson"] = "applySettingsJson"; MessageType["OpenFilteringLog"] = "openFilteringLog"; MessageType["OpenFullscreenUserRules"] = "openFullscreenUserRules"; MessageType["CloseFullscreenUserRules"] = "closeFullscreenUserRules"; MessageType["UpdateFullscreenUserRulesTheme"] = "updateFullscreenUserRulesTheme"; MessageType["ResetBlockedAdsCount"] = "resetBlockedAdsCount"; MessageType["ResetSettings"] = "resetSettings"; MessageType["GetUserRules"] = "getUserRules"; MessageType["SaveUserRules"] = "saveUserRules"; MessageType["GetAllowlistDomains"] = "getAllowlistDomains"; MessageType["SaveAllowlistDomains"] = "saveAllowlistDomains"; MessageType["CheckFiltersUpdate"] = "checkFiltersUpdate"; MessageType["GetCategoriesFilters"] = "getCategoriesFilters"; MessageType["CheckExtensionUpdateMv3"] = "checkExtensionUpdateMv3"; MessageType["UpdateExtensionMv3"] = "updateExtensionMv3"; MessageType["DisableFiltersGroup"] = "disableFiltersGroup"; MessageType["DisableFilter"] = "disableFilter"; MessageType["LoadCustomFilterInfo"] = "loadCustomFilterInfo"; MessageType["SubscribeToCustomFilter"] = "subscribeToCustomFilter"; MessageType["RemoveAntiBannerFilter"] = "removeAntiBannerFilter"; MessageType["GetIsAppInitialized"] = "getIsAppInitialized"; MessageType["GetTabInfoForPopup"] = "getTabInfoForPopup"; MessageType["ChangeApplicationFilteringPaused"] = "changeApplicationFilteringPaused"; MessageType["OpenRulesLimitsTab"] = "openRulesLimitsTab"; MessageType["OpenSettingsTab"] = "openSettingsTab"; MessageType["OpenAssistant"] = "openAssistant"; MessageType["OpenAbuseTab"] = "openAbuseTab"; MessageType["OpenSiteReportTab"] = "openSiteReportTab"; MessageType["OpenChromeExtensionsSettingsPage"] = "openChromeExtensionsSettingsPage"; MessageType["OpenExtensionDetailsPage"] = "openExtensionDetailsPage"; MessageType["ResetUserRulesForPage"] = "resetUserRulesForPage"; MessageType["RemoveAllowlistDomain"] = "removeAllowlistDomain"; MessageType["AddAllowlistDomainForTabId"] = "addAllowlistDomainForTabId"; MessageType["AddAllowlistDomainForUrl"] = "addAllowlistDomainForUrl"; MessageType["OnOpenFilteringLogPage"] = "onOpenFilteringLogPage"; MessageType["GetFilteringLogData"] = "getFilteringLogData"; MessageType["InitializeFrameScript"] = "initializeFrameScript"; MessageType["InitializeBlockingPageScript"] = "initializeBlockingPageScript"; MessageType["OnCloseFilteringLogPage"] = "onCloseFilteringLogPage"; MessageType["GetFilteringInfoByTabId"] = "getFilteringInfoByTabId"; MessageType["SynchronizeOpenTabs"] = "synchronizeOpenTabs"; MessageType["ClearEventsByTabId"] = "clearEventsByTabId"; MessageType["RefreshPage"] = "refreshPage"; MessageType["AddUserRule"] = "addUserRule"; MessageType["RemoveUserRule"] = "removeUserRule"; MessageType["EnableFiltersGroup"] = "enableFiltersGroup"; MessageType["NotifyListeners"] = "notifyListeners"; MessageType["AddLongLivedConnection"] = "addLongLivedConnection"; MessageType["GetOptionsData"] = "getOptionsData"; MessageType["ChangeUserSettings"] = "changeUserSetting"; MessageType["CheckRequestFilterReady"] = "checkRequestFilterReady"; MessageType["OpenThankYouPage"] = "openThankYouPage"; MessageType["OpenSafebrowsingTrusted"] = "openSafebrowsingTrusted"; MessageType["GetSelectorsAndScripts"] = "getSelectorsAndScripts"; MessageType["CheckPageScriptWrapperRequest"] = "checkPageScriptWrapperRequest"; MessageType["ProcessShouldCollapse"] = "processShouldCollapse"; MessageType["ProcessShouldCollapseMany"] = "processShouldCollapseMany"; MessageType["AddFilteringSubscription"] = "addFilterSubscription"; MessageType["SetNotificationViewed"] = "setNotificationViewed"; MessageType["SaveCssHitsStats"] = "saveCssHitStats"; MessageType["GetCookieRules"] = "getCookieRules"; MessageType["SaveCookieLogEvent"] = "saveCookieRuleEvent"; MessageType["LoadSettingsJson"] = "loadSettingsJson"; MessageType["AddUrlToTrusted"] = "addUrlToTrusted"; MessageType["SetPreserveLogState"] = "setPreserveLogState"; MessageType["GetUserRulesEditorData"] = "getUserRulesEditorData"; MessageType["GetEditorStorageContent"] = "getEditorStorageContent"; MessageType["SetEditorStorageContent"] = "setEditorStorageContent"; MessageType["SetFilteringLogWindowState"] = "setFilteringLogWindowState"; MessageType["AppInitialized"] = "appInitialized"; MessageType["UpdateTotalBlocked"] = "updateTotalBlocked"; MessageType["ScriptletCloseWindow"] = "scriptletCloseWindow"; MessageType["ShowRuleLimitsAlert"] = "showRuleLimitsAlert"; MessageType["ShowAlertPopup"] = "showAlertPopup"; MessageType["ShowVersionUpdatedPopup"] = "showVersionUpdatedPopup"; MessageType["UpdateListeners"] = "updateListeners"; MessageType["SetConsentedFilters"] = "setConsentedFilters"; MessageType["GetIsConsentedFilter"] = "getIsConsentedFilter"; MessageType["SendTelemetryCustomEvent"] = "sendTelemetryCustomEvent"; MessageType["SendTelemetryPageViewEvent"] = "sendTelemetryPageViewEvent"; MessageType["AddTelemetryOpenedPage"] = "addTelemetryOpenedPage"; MessageType["RemoveTelemetryOpenedPage"] = "removeTelemetryOpenedPage"; MessageType["DismissSearchPageAccessNotification"] = "dismissSearchPageAccessNotification"; MessageType["GetRulesLimitsCountersMv3"] = "getRulesLimitsCountersMv3"; MessageType["CanEnableStaticFilterMv3"] = "canEnableStaticFilterMv3"; MessageType["CanEnableStaticGroupMv3"] = "canEnableStaticGroupMv3"; MessageType["ClearRulesLimitsWarningMv3"] = "clearRulesLimitsWarningMv3"; MessageType["RestoreFiltersMv3"] = "restoreFiltersMv3"; MessageType["CurrentLimitsMv3"] = "currentLimitsMv3"; MessageType["GetExtensionStatusForPopupMV3"] = "getExtensionStatusForPopupMV3"; MessageType["ImportConfiguration"] = "importConfiguration"; MessageType["IsPendingForImport"] = "isPendingForImport"; MessageType["GetPendingImportBlockWebrtc"] = "getPendingImportBlockWebrtc"; MessageType["ApplyImportConfiguration"] = "applyImportConfiguration"; MessageType["CancelImportConfiguration"] = "cancelImportConfiguration"; MessageType["GenerateShareUrl"] = "generateShareUrl"; return MessageType; }({}); const FULLSCREEN_STATE = 'fullscreen'; }, 8115(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { Et: () => (/* reexport safe */ _message_handler__rspack_import_2.Et), Go: () => (/* reexport safe */ _constants__rspack_import_0.Go), oL: () => (/* reexport safe */ _message_handler__rspack_import_2.oL), zk: () => (/* reexport safe */ _constants__rspack_import_0.zk) }); /* import */ var _constants__rspack_import_0 = __webpack_require__(29086); /* import */ var _send_message__rspack_import_1 = __webpack_require__(36083); /* import */ var _message_handler__rspack_import_2 = __webpack_require__(81125); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ // Since exports from './constants' are: the MessageType enum and a lot of types, // and imports there are types only, so it should not affect bundle size // eslint-disable-next-line no-restricted-syntax }, 81125(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { Et: () => (messageHasTypeField), oL: () => (messageHasTypeAndDataFields) }); /* import */ var core_js_modules_es_error_cause_js__rspack_import_0 = __webpack_require__(38796); /* import */ var core_js_modules_es_error_cause_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_error_cause_js__rspack_import_0); /* import */ var webextension_polyfill__rspack_import_1 = __webpack_require__(28467); /* import */ var webextension_polyfill__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(webextension_polyfill__rspack_import_1); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /** * Type guard for messages that have a 'type' field with possible {@link MessageType}. * * @note Added to no bring here huge zod library. * * @param message Unknown message. * * @returns True if message has 'type' field with possible {@link MessageType}. */ const messageHasTypeField = (message)=>{ return typeof message === 'object' && message !== null && 'type' in message; }; /** * Type guard for messages that have a 'type' field and 'data' field and looks like {@link Message}. * * @note Added to no bring here huge zod library. * * @param message Unknown message. * * @returns True if message has 'type' and 'data' fields and looks like {@link Message}. */ const messageHasTypeAndDataFields = (message)=>{ return messageHasTypeField(message) && 'data' in message; }; /** * API for handling Messages via {@link browser.runtime.onMessage} */ class MessageHandler { init() { browser.runtime.onMessage.addListener(this.handleMessage); } /** * Add message listener. * Listeners limited to 1 per message type to prevent race * condition while response processing. * * TODO: implement listeners priority execution strategy * * @param type - {@link ValidMessageTypes} * @param listener - {@link MessageListener} * * @throws error, if message listener already added */ addListener(type, listener) { if (this.listeners.has(type)) { throw new Error(`Message handler: ${type} listener has already been registered`); } // Cast through unknown to help TS understand that the listener is of // the correct type. It will check types at compile time. this.listeners.set(type, listener); } /** * Removes message listener. * * @param type - {@link ValidMessageTypes} */ removeListener(type) { this.listeners.delete(type); } /** * Removes all listeners */ removeListeners() { this.listeners.clear(); } /** * Check if the message is of type {@link Message}. * * @param message Message of basic type {@link Message} or {@link EngineMessage}. * * @returns True if the message is of type {@link Message}. */ static isValidMessageType(message) { return message.handlerName === APP_MESSAGE_HANDLER_NAME && 'type' in message; } constructor(){ _define_property(this, "listeners", new Map()); this.handleMessage = this.handleMessage.bind(this); } } }, 36083(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) { "use strict"; /* import */ var webextension_polyfill__rspack_import_0 = __webpack_require__(28467); /* import */ var webextension_polyfill__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(webextension_polyfill__rspack_import_0); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * TODO: Consider moving this file to the background folder, because all messages * from the UI should be send via methods of Messenger class instead of using * directly sendMessage to proper types checking. * * {@link sendMessage} sends app message via {@link browser.runtime.sendMessage} and * gets response from another extension page message handler * * @param message - partial {@link Message} record without {@link Message.handlerName} field * * @returns message handler response */ async function sendMessage(message) { try { return await browser.runtime.sendMessage({ handlerName: APP_MESSAGE_HANDLER_NAME, ...message }); } catch (e) { // do nothing } } /** * {@link sendTabMessage} sends message to specified tab via {@link browser.tabs.sendMessage} and * gets response from it * * @param tabId - tab id * @param message - partial {@link Message} record without {@link Message.handlerName} field * * @returns tab message handler response */ async function sendTabMessage(tabId, message) { return browser.tabs.sendMessage(tabId, { handlerName: APP_MESSAGE_HANDLER_NAME, ...message }); } }, 13953(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { pM: () => (addMinDurationTime), yy: () => (sleep) }); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * Sleeps given period of milliseconds * * @param ms - milliseconds */ async function sleep(ms) { return new Promise((resolve)=>{ setTimeout(resolve, ms); }); } /** * Sleeps necessary period of time if minimum duration didn't pass since entry time * * @param entryTimeMs * @param minDurationMs */ async function sleepIfNecessary(entryTimeMs, minDurationMs) { if (Date.now() - entryTimeMs < minDurationMs) { await sleep(minDurationMs - (Date.now() - entryTimeMs)); } } /** * Executes async function with at least required time * * @param fn - function to execute * @param minDurationMs - minimum executing time */ function addMinDurationTime(fn, minDurationMs) { return async (...args)=>{ const start = Date.now(); try { const response = await fn(...args); await sleepIfNecessary(start, minDurationMs); return response; } catch (e) { await sleepIfNecessary(start, minDurationMs); throw e; } }; } }, 74825(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { Jh: () => (TelemetryScreenName), lr: () => (TelemetryEventName) }); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * UI theme. */ var TelemetryTheme = /*#__PURE__*/ (/* unused pure expression or super */ null && (function(TelemetryTheme) { TelemetryTheme["Light"] = "LIGHT"; TelemetryTheme["Dark"] = "DARK"; TelemetryTheme["System"] = "SYSTEM"; return TelemetryTheme; }({}))); /** * Filter update interval mode. */ var TelemetryFilterUpdateIntervalMode = /*#__PURE__*/ (/* unused pure expression or super */ null && (function(TelemetryFilterUpdateIntervalMode) { TelemetryFilterUpdateIntervalMode["SystemDefault"] = "SYSTEM_DEFAULT"; TelemetryFilterUpdateIntervalMode["Custom"] = "CUSTOM"; return TelemetryFilterUpdateIntervalMode; }({}))); /** * Telemetry screen name. */ var TelemetryScreenName = /*#__PURE__*/ function(TelemetryScreenName) { TelemetryScreenName["MainPage"] = "main_page"; TelemetryScreenName["SecurePage"] = "secure_page"; TelemetryScreenName["BlockElementScreen"] = "block_element_screen"; TelemetryScreenName["GeneralSettings"] = "general_settings"; TelemetryScreenName["FiltersScreen"] = "filters_screen"; TelemetryScreenName["TrackingProtectionScreen"] = "tracking_protection_screen"; TelemetryScreenName["WebsiteAllowListScreen"] = "website_allow_list_screen"; TelemetryScreenName["UserRulesScreen"] = "user_rules_screen"; TelemetryScreenName["UserRulesEmpty"] = "user_rules_empty"; TelemetryScreenName["AdditionalSettings"] = "additional_settings"; TelemetryScreenName["RulesLimits"] = "rules_limits"; TelemetryScreenName["RulesLimitsError"] = "rule_limits_error"; TelemetryScreenName["AboutScreen"] = "about_screen"; TelemetryScreenName["FilteringLogScreen"] = "filtering_log_screen"; return TelemetryScreenName; }({}); /** * Telemetry event name. */ var TelemetryEventName = /*#__PURE__*/ function(TelemetryEventName) { TelemetryEventName["CheckUpdatesClick"] = "check_updates_click"; TelemetryEventName["PauseClick"] = "pause_click"; TelemetryEventName["ProtectionSwitch"] = "protection_switch"; TelemetryEventName["StatisticsClick"] = "statistics_click"; TelemetryEventName["BlockManuallyClick"] = "block_manually_click"; TelemetryEventName["OpenLogClick"] = "open_log_click"; TelemetryEventName["ReportIssueClick"] = "report_issue_click"; TelemetryEventName["CheckSecurityClick"] = "check_security_click"; TelemetryEventName["AppleClick"] = "apple_click"; TelemetryEventName["AndroidClick"] = "android_click"; TelemetryEventName["UpdateAvailableClick"] = "update_available_click"; TelemetryEventName["BlockElementClick"] = "block_element_click"; TelemetryEventName["HowToEnhanceClick"] = "how_to_enhance_click"; TelemetryEventName["DeleteUserRulesClick"] = "delete_user_rules_click"; TelemetryEventName["FilterCheckUpdateClick"] = "filter_check_update_click"; TelemetryEventName["CustomClick"] = "custom_click"; TelemetryEventName["AllowlistSaveClick"] = "allowlist_save_click"; TelemetryEventName["AllowlistImportClick"] = "allowlist_import_click"; TelemetryEventName["UserRulesSaveClick"] = "user_rules_save_click"; TelemetryEventName["UserRulesImportClick"] = "user_rules_import_click"; TelemetryEventName["SwitchToListClick"] = "switch_to_list_click"; TelemetryEventName["EditorInNewWindowClick"] = "editor_in_new_window_click"; TelemetryEventName["UserRulesSwitchClick"] = "user_rules_switch_click"; TelemetryEventName["CheckboxClick"] = "checkbox_click"; TelemetryEventName["CreateRuleClick"] = "create_rule_click"; TelemetryEventName["UserRulesSearchClick"] = "user_rules_search_click"; TelemetryEventName["UserRulesMenuClick"] = "user_rules_menu_click"; TelemetryEventName["SwitchToEditorClick"] = "switch_to_editor_click"; TelemetryEventName["CompareClick"] = "compare_click"; TelemetryEventName["CloseCompareClick"] = "close_compare_click"; TelemetryEventName["RateUsClick"] = "rate_us_click"; TelemetryEventName["CloseRateUsClick"] = "close_rate_us_click"; TelemetryEventName["TapEnableFilteringClick"] = "tap_enable_filtering_click"; TelemetryEventName["TapCheckWebsiteSecurityClick"] = "tap_check_website_security_click"; TelemetryEventName["TapReportIssueClick"] = "tap_report_issue_click"; TelemetryEventName["TapPauseClick"] = "tap_pause_click"; TelemetryEventName["TapFilteringLogClick"] = "tap_filtering_log_click"; TelemetryEventName["TapGeneralSettingsClick"] = "tap_general_settings_click"; TelemetryEventName["ExtensionSettingsClick"] = "extension_settings_click"; TelemetryEventName["MenuDisableFilteringClick"] = "menu_disable_filtering_click"; TelemetryEventName["MenuBlockAdsManuallyClick"] = "menu_block_ads_manually_click"; TelemetryEventName["MenuOptionsClick"] = "menu_options_click"; TelemetryEventName["ReactivateFiltersClick"] = "reactivate_filters_click"; TelemetryEventName["GetTheAppClick"] = "get_the_app_click"; TelemetryEventName["CloseWarningClick"] = "close_warning_click"; TelemetryEventName["ManageExtensionsClick"] = "manage_extensions_click"; return TelemetryEventName; }({}); }, 21535(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { M: () => (reactTranslator) }); /* import */ var react__rspack_import_0 = __webpack_require__(33353); /* import */ var _adguard_translate__rspack_import_1 = __webpack_require__(20580); /* import */ var _i18n__rspack_import_2 = __webpack_require__(37940); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * Retrieves localized messages by key, formats and converts into react components or string */ const reactTranslator = _adguard_translate__rspack_import_1/* .translate.createReactTranslator */.Tl.createReactTranslator(_i18n__rspack_import_2/* .i18n */.R, react__rspack_import_0); }, 53279(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { C: () => (mergeImportedRules) }); /* import */ var _constants__rspack_import_0 = __webpack_require__(88819); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * Normalizes user rules line endings to Unix-style line feeds. * * @param rulesText User rules text. * * @returns User rules text with normalized line endings. */ function normalizeUserRulesLineEndings(rulesText) { return rulesText.split(NEWLINE_CHAR_REGEX).join(NEWLINE_CHAR_UNIX); } /** * Parses raw imported rule text and merges only the genuinely-new, non-blank * rules into the existing rules string. * * Centralised so the import/dedup algorithm cannot drift between callers * (the header menu on the options page and the shared editor toolbar). Blank * lines in the imported file are dropped — they carry no filtering value and * only add noise to the stored list. Existing rules are preserved verbatim, * including their blank lines. * * The caller is responsible for detecting an empty/whitespace-only import * (`rawNewRules.trim().length === 0`) and surfacing the appropriate error * notification, because that UI behaviour differs across callers (the menu * shows an error toast; the editor silently skips). * * @param oldRulesString Current persisted or in-memory rules text. * @param rawNewRules Raw imported file content (will be trimmed). * * @returns Merged rules string and the count of newly added rules. */ function mergeImportedRules(oldRulesString, rawNewRules) { const trimmedNew = rawNewRules.trim(); const oldRules = oldRulesString.split(_constants__rspack_import_0/* .NEWLINE_CHAR_REGEX */.WC); const newRules = trimmedNew.split(_constants__rspack_import_0/* .NEWLINE_CHAR_REGEX */.WC); // Pre-build a Set of trimmed old rules for O(1) duplicate lookup. const oldRulesSet = new Set(oldRules.map((r)=>r.trim())); const uniqNewRules = newRules.filter((rule)=>{ const trimmedRule = rule.trim(); if (trimmedRule.length === 0) { return false; } return !oldRulesSet.has(trimmedRule); }); const merged = [ ...oldRules, ...uniqNewRules ].join(_constants__rspack_import_0/* .NEWLINE_CHAR_UNIX */.JP).trim(); return { merged, addedCount: uniqNewRules.length }; } }, 62112(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { c: () => (/* reexport */ AttachmentPortal) }); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/index.js var react = __webpack_require__(33353); // EXTERNAL MODULE: ./node_modules/.pnpm/react-dom@17.0.2_react@17.0.2/node_modules/react-dom/index.js var react_dom = __webpack_require__(71561); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/AttachmentPortal/AttachmentPortal.tsx /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ const TOOLTIP_EDGE_PADDING = 4; // px const getCssString = (position, visible)=>{ const { x, y } = position; let css = `z-index:999;position:absolute;top:${y}px;left:${x}px;`; if (!visible) { css += 'visibility:hidden;'; } return css; }; const AttachmentPortal = ({ rootId, position, children })=>{ const parent = document.getElementById(rootId); const ref = (0,react.useRef)(document.createElement('div')); (0,react.useEffect)(()=>{ const el = ref.current; el.setAttribute('style', getCssString(position, false)); parent === null || parent === void 0 ? void 0 : parent.appendChild(el); const rect = el.getBoundingClientRect(); const offsetEdge = { top: rect.y, right: window.innerWidth - rect.right, bottom: window.innerHeight - rect.bottom, left: rect.x }; const nextPosition = { ...position }; if (offsetEdge.right < TOOLTIP_EDGE_PADDING) { nextPosition.x = rect.x + offsetEdge.right - TOOLTIP_EDGE_PADDING; } if (offsetEdge.left < TOOLTIP_EDGE_PADDING) { nextPosition.x = rect.x - offsetEdge.left + TOOLTIP_EDGE_PADDING; } if (offsetEdge.top < TOOLTIP_EDGE_PADDING) { nextPosition.y = rect.y - offsetEdge.top + TOOLTIP_EDGE_PADDING; } if (offsetEdge.bottom < TOOLTIP_EDGE_PADDING) { nextPosition.y = rect.y + offsetEdge.bottom - TOOLTIP_EDGE_PADDING; } el.setAttribute('style', getCssString(nextPosition, true)); return ()=>{ parent === null || parent === void 0 ? void 0 : parent.removeChild(el); }; }, [ ref, parent, position ]); return /*#__PURE__*/ (0,react_dom.createPortal)(children, ref.current); }; ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/AttachmentPortal/index.ts /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ }, 12968(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A3: () => (SavingFSMState), s0: () => (createSavingService), xo: () => (SavingFSMEvent) }); /* import */ var xstate__rspack_import_1 = __webpack_require__(19131); /* import */ var xstate__rspack_import_2 = __webpack_require__(50649); /* import */ var xstate__rspack_import_3 = __webpack_require__(92287); /* import */ var _common_logger__rspack_import_0 = __webpack_require__(42228); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * Possible states of the saving state machine. */ var SavingFSMState = /*#__PURE__*/ function(SavingFSMState) { SavingFSMState["Idle"] = "idle"; SavingFSMState["Saving"] = "saving"; SavingFSMState["Saved"] = "saved"; SavingFSMState["Error"] = "error"; return SavingFSMState; }({}); /** * Possible events of the saving state machine. */ var SavingFSMEvent = /*#__PURE__*/ function(SavingFSMEvent) { SavingFSMEvent["Save"] = "save"; return SavingFSMEvent; }({}); const SAVED_DISPLAY_TIMEOUT_MS = 1000; const SAVE_DATA_ACTOR_NAME = 'saveDataActor'; // TODO: Maybe we can remove this service? const createSavingService = ({ id, services })=>{ const workflow = (0,xstate__rspack_import_1/* .setup */.mj)({ actors: { [SAVE_DATA_ACTOR_NAME]: (0,xstate__rspack_import_2/* .fromPromise */.Sx)(async ({ input })=>{ await services.saveData(input); }) } }).createMachine({ id, initial: "idle", states: { ["idle"]: { on: { ["save"]: "saving" } }, ["saving"]: { invoke: { src: SAVE_DATA_ACTOR_NAME, input: ({ event })=>({ event }), onDone: { target: "saved" }, onError: { target: "error", actions: ({ event })=>{ const { error } = event; _common_logger__rspack_import_0/* .logger.error */.v.error('[ext.savingFSM]: failed to save data: ', error); } } } }, ["saved"]: { after: { [SAVED_DISPLAY_TIMEOUT_MS]: "idle" } }, ["error"]: { on: { ["save"]: "saving" } } } }); const actor = (0,xstate__rspack_import_3.A)(workflow); actor.subscribe((snapshot)=>{ _common_logger__rspack_import_0/* .logger.trace */.v.trace('[ext.savingFSM]: current state: ', { id, currentState: snapshot.value }); }); return actor.start(); }; }, 24316(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { a: () => (/* reexport */ Loader) }); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/jsx-runtime.js var jsx_runtime = __webpack_require__(7357); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/index.js var react = __webpack_require__(33353); // EXTERNAL MODULE: ./Extension/src/common/translators/translator.ts var translator = __webpack_require__(78466); // EXTERNAL MODULE: ./Extension/src/pages/common/components/AttachmentPortal/index.ts + 1 modules var AttachmentPortal = __webpack_require__(62112); // EXTERNAL MODULE: ./Extension/src/pages/common/components/ui/Icon.tsx var Icon = __webpack_require__(82006); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js var injectStylesIntoStyleTag = __webpack_require__(42604); var injectStylesIntoStyleTag_default = /*#__PURE__*/__webpack_require__.n(injectStylesIntoStyleTag); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/styleDomAPI.js var styleDomAPI = __webpack_require__(91605); var styleDomAPI_default = /*#__PURE__*/__webpack_require__.n(styleDomAPI); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/insertBySelector.js var insertBySelector = __webpack_require__(70103); var insertBySelector_default = /*#__PURE__*/__webpack_require__.n(insertBySelector); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js var setAttributesWithoutAttributes = __webpack_require__(11556); var setAttributesWithoutAttributes_default = /*#__PURE__*/__webpack_require__.n(setAttributesWithoutAttributes); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/insertStyleElement.js var insertStyleElement = __webpack_require__(71712); var insertStyleElement_default = /*#__PURE__*/__webpack_require__.n(insertStyleElement); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/styleTagTransform.js var styleTagTransform = __webpack_require__(16077); var styleTagTransform_default = /*#__PURE__*/__webpack_require__.n(styleTagTransform); // EXTERNAL MODULE: ./node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.6.6_webpack@5.97.1_@swc+core@1.11.21_/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/.pnpm/postcss-loader@8.1.1_@rspack+core@1.6.6_postcss@8.4.49_typescript@5.6.3_webpack@5.97.1_@swc+core@1.11.21_/node_modules/postcss-loader/dist/cjs.js!./Extension/src/pages/common/components/Loader/loader.pcss var loader = __webpack_require__(46040); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/Loader/loader.pcss var options = {}; options.styleTagTransform = (styleTagTransform_default()); options.setAttributes = (setAttributesWithoutAttributes_default()); options.insert = insertBySelector_default().bind(null, "head"); options.domAPI = (styleDomAPI_default()); options.insertStyleElement = (insertStyleElement_default()); var update = injectStylesIntoStyleTag_default()(loader/* ["default"] */.A, options); /* export default */ const Loader_loader = (loader/* ["default"] */.A && loader/* ["default"].locals */.A.locals ? loader/* ["default"].locals */.A.locals : undefined); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/Loader/Loader.tsx /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ const Loader = ({ showLoader })=>{ const LOADER_POSITION = { x: 0, y: 0 }; if (!showLoader) { return null; } return /*#__PURE__*/ (0,jsx_runtime.jsx)(AttachmentPortal/* .AttachmentPortal */.c, { rootId: "root-portal", position: LOADER_POSITION, children: /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { className: "loader", children: /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { className: "loader__background", children: /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { className: "loader__container", children: /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { className: "loader__content", children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)(Icon/* .Icon */.I, { id: "#loading", className: "icon--24 icon--green-default", animationCondition: showLoader, animationClassName: "icon--loading" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { className: "loader__text", children: translator/* .translator.getMessage */.N.getMessage('options_loader_applying_changes') }) ] }) }) }) }) }); }; ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/Loader/index.ts /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ }, 58114(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { E: () => (/* reexport */ Notification) }); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/jsx-runtime.js var jsx_runtime = __webpack_require__(7357); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/index.js var react = __webpack_require__(33353); // EXTERNAL MODULE: ./node_modules/.pnpm/classnames@2.3.2/node_modules/classnames/index.js var classnames = __webpack_require__(52996); var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames); // EXTERNAL MODULE: ./Extension/src/common/constants.ts var constants = __webpack_require__(88819); // EXTERNAL MODULE: ./Extension/src/pages/common/constants.ts var common_constants = __webpack_require__(81166); // EXTERNAL MODULE: ./Extension/src/pages/common/components/ui/CloseIcon.tsx var CloseIcon = __webpack_require__(83898); // EXTERNAL MODULE: ./Extension/src/pages/common/types.ts var types = __webpack_require__(39046); // EXTERNAL MODULE: ./Extension/src/common/translators/translator.ts var translator = __webpack_require__(78466); // EXTERNAL MODULE: ./Extension/src/pages/common/components/ui/Icon.tsx var Icon = __webpack_require__(82006); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/Notification/Notification.tsx /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * Notification component. * * @param props Notification component props. */ const Notification = (props)=>{ const [notificationIsClosed, setNotificationIsClosed] = (0,react.useState)(false); const [shouldCloseOnTimeout, setShouldCloseOnTimeout] = (0,react.useState)(true); const { id, text, type, buttons, onRemove } = props; (0,react.useEffect)(()=>{ const closeTimeout = setTimeout(()=>{ if (shouldCloseOnTimeout) { setNotificationIsClosed(true); } }, constants/* .NOTIFICATION_TTL_MS */.UA); const removeTimeout = setTimeout(()=>{ if (shouldCloseOnTimeout) { onRemove(id); } }, constants/* .NOTIFICATION_TTL_MS */.UA + common_constants/* .TIME_TO_REMOVE_NOTIFICATION_MS */.it); return ()=>{ clearTimeout(closeTimeout); clearTimeout(removeTimeout); }; }, [ id, onRemove, shouldCloseOnTimeout ]); const notificationClassnames = classnames_default()(`notification notification--${type}`, { 'notification--close': notificationIsClosed }); const removeOnClickTimeoutRef = (0,react.useRef)(); (0,react.useEffect)(()=>{ return ()=>{ clearTimeout(removeOnClickTimeoutRef.current); }; }, []); /** * Handles close button click: * 1. marks notification as closed, * 2. removes notification from UI store after a delay. */ const handleCloseClick = ()=>{ setNotificationIsClosed(true); removeOnClickTimeoutRef.current = window.setTimeout(()=>{ onRemove(id); }, common_constants/* .TIME_TO_REMOVE_NOTIFICATION_MS */.it); }; /** * Handles mouse over event which prevents notification from closing. */ const handleMouseOver = ()=>{ setShouldCloseOnTimeout(false); }; return /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { className: notificationClassnames, onMouseEnter: handleMouseOver, children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)(Icon/* .Icon */.I, { id: type === types/* .NotificationType.Success */._.Success ? '#tick' : '#info', className: "icon--24", "aria-hidden": "true" }), /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { role: "status", className: "notification__content", "aria-live": "assertive", children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)("p", { children: text }), buttons === null || buttons === void 0 ? void 0 : buttons.map((btn)=>/*#__PURE__*/ (0,jsx_runtime.jsx)("button", { type: "button", role: "link", onClick: ()=>{ handleCloseClick(); btn.onClick(); }, title: btn.title, children: btn.title }, btn.title)) ] }), /*#__PURE__*/ (0,jsx_runtime.jsx)("button", { type: "button", className: "notification__btn-close", onClick: handleCloseClick, "aria-label": translator/* .translator.getMessage */.N.getMessage('close_button_title'), children: /*#__PURE__*/ (0,jsx_runtime.jsx)(CloseIcon/* .CloseIcon */.U, {}) }) ] }); }; ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/Notification/index.ts /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ }, 30052(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { e: () => (/* reexport */ SavingErrorMessage), v: () => (/* reexport */ SavingButton) }); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/jsx-runtime.js var jsx_runtime = __webpack_require__(7357); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/index.js var react = __webpack_require__(33353); // EXTERNAL MODULE: ./Extension/src/pages/common/components/Editor/savingFSM.ts var savingFSM = __webpack_require__(12968); // EXTERNAL MODULE: ./Extension/src/common/translators/translator.ts var translator = __webpack_require__(78466); // EXTERNAL MODULE: ./Extension/src/common/user-agent.ts var user_agent = __webpack_require__(27903); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/SavingButton/SavingButton.tsx /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ const SavingButton = ({ onClick, savingState, contentChanged })=>{ const indicatorTextMap = { [savingFSM/* .SavingFSMState.Idle */.A3.Idle]: translator/* .translator.getMessage */.N.getMessage('options_editor_save'), [savingFSM/* .SavingFSMState.Saved */.A3.Saved]: translator/* .translator.getMessage */.N.getMessage('options_editor_indicator_saved'), [savingFSM/* .SavingFSMState.Saving */.A3.Saving]: translator/* .translator.getMessage */.N.getMessage('options_editor_indicator_saving'), [savingFSM/* .SavingFSMState.Error */.A3.Error]: translator/* .translator.getMessage */.N.getMessage('options_editor_save') }; const isSaving = savingState === savingFSM/* .SavingFSMState.Saving */.A3.Saving; const indicatorText = indicatorTextMap[savingState]; return /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { className: "actions__saving", children: /*#__PURE__*/ (0,jsx_runtime.jsx)("button", { type: "button", className: "button button--l button--green-bg actions__btn actions__btn--saving", onClick: onClick, title: translator/* .translator.getMessage */.N.getMessage('options_editor_save'), disabled: !contentChanged || isSaving, "aria-keyshortcuts": user_agent/* .UserAgent.isMacOs */.B.isMacOs ? 'Meta+S' : 'Ctrl+S', children: indicatorText }) }); }; // EXTERNAL MODULE: ./Extension/src/pages/common/components/SavingButton/SavingErrorMessage.module.pcss var SavingErrorMessage_module = __webpack_require__(30595); var SavingErrorMessage_module_default = /*#__PURE__*/__webpack_require__.n(SavingErrorMessage_module); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/SavingButton/SavingErrorMessage.tsx /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * Displays error message when saving fails. * Returns null if not in error state. * * @param SavingErrorMessageProps Component props. */ const SavingErrorMessage = ({ savingState })=>{ if (savingState === savingFSM/* .SavingFSMState.Error */.A3.Error) { return /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { className: (SavingErrorMessage_module_default()).errorMessage, children: translator/* .translator.getMessage */.N.getMessage('options_editor_save_error') }); } return null; }; ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/SavingButton/index.ts /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ }, 59819(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { u: () => (/* reexport */ UserRulesEditor) }); // EXTERNAL MODULE: ./node_modules/.pnpm/core-js@3.40.0/node_modules/core-js/modules/es.error.cause.js var es_error_cause = __webpack_require__(38796); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/jsx-runtime.js var jsx_runtime = __webpack_require__(7357); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/index.js var react = __webpack_require__(33353); // EXTERNAL MODULE: ./node_modules/.pnpm/mobx-react@7.6.0_mobx@6.9.0_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/mobx-react/dist/mobxreact.esm.js + 14 modules var mobxreact_esm = __webpack_require__(99732); // EXTERNAL MODULE: ./node_modules/.pnpm/classnames@2.3.2/node_modules/classnames/index.js var classnames = __webpack_require__(52996); var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames); // EXTERNAL MODULE: ./Extension/src/pages/common/components/Editor/index.ts + 5 modules var Editor = __webpack_require__(44950); // EXTERNAL MODULE: ./Extension/src/common/translators/translator.ts var translator = __webpack_require__(78466); // EXTERNAL MODULE: ./Extension/src/pages/common/components/ui/Checkbox/index.ts + 2 modules var Checkbox = __webpack_require__(62132); // EXTERNAL MODULE: ./Extension/src/pages/services/messenger/index.ts var messenger = __webpack_require__(32706); // EXTERNAL MODULE: ./Extension/src/common/telemetry.ts var telemetry = __webpack_require__(74825); // EXTERNAL MODULE: ./Extension/src/background/schema/settings/index.ts var settings = __webpack_require__(20417); // EXTERNAL MODULE: ./Extension/src/common/constants.ts var constants = __webpack_require__(88819); // EXTERNAL MODULE: ./Extension/src/common/utils/user-rules.ts var user_rules = __webpack_require__(53279); // EXTERNAL MODULE: ./Extension/src/pages/common/utils/dom.ts var dom = __webpack_require__(48225); // EXTERNAL MODULE: ./Extension/src/pages/helpers.ts var helpers = __webpack_require__(91788); // EXTERNAL MODULE: ./Extension/src/common/logger.ts var logger = __webpack_require__(42228); // EXTERNAL MODULE: ./Extension/src/pages/common/utils/export.ts var utils_export = __webpack_require__(9899); // EXTERNAL MODULE: ./Extension/src/pages/common/components/helpers.ts var components_helpers = __webpack_require__(33681); // EXTERNAL MODULE: ./Extension/src/pages/common/constants.ts var common_constants = __webpack_require__(81166); // EXTERNAL MODULE: ./Extension/src/pages/common/hooks/usePreventUnload.ts var usePreventUnload = __webpack_require__(67502); // EXTERNAL MODULE: ./Extension/src/pages/common/types.ts var types = __webpack_require__(39046); // EXTERNAL MODULE: ./Extension/src/pages/common/components/Editor/savingFSM.ts var savingFSM = __webpack_require__(12968); // EXTERNAL MODULE: ./Extension/src/pages/common/components/SavingButton/index.ts + 2 modules var SavingButton = __webpack_require__(30052); // EXTERNAL MODULE: ./Extension/src/pages/common/components/ui/Popover/index.ts var Popover = __webpack_require__(87757); // EXTERNAL MODULE: ./Extension/src/pages/common/components/ui/Icon.tsx var Icon = __webpack_require__(82006); // EXTERNAL MODULE: ./Extension/src/pages/common/components/UserRulesEditor/UserRulesEditorStore.js var UserRulesEditorStore = __webpack_require__(91901); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/UserRulesEditor/ToggleWrapButton.jsx /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * This button is extracted in the separate file * to stop editor re-renderings on wrap mode changes */ const ToggleWrapButton = (0,mobxreact_esm/* .observer */.PA)(({ onClick })=>{ const store = (0,react.useContext)(UserRulesEditorStore/* .userRulesEditorStore */.D); const lineBreakClassNames = classnames_default()('button actions__btn actions__btn--icon', { 'actions__btn--active': store.userRulesEditorWrapState }); const iconId = store.userRulesEditorWrapState ? '#line-break-on' : '#line-break-off'; const tooltipText = store.userRulesEditorWrapState ? translator/* .translator.getMessage */.N.getMessage('options_userfilter_line_break_on') : translator/* .translator.getMessage */.N.getMessage('options_userfilter_line_break_off'); return /*#__PURE__*/ (0,jsx_runtime.jsx)(Popover/* .Popover */.A, { text: tooltipText, children: /*#__PURE__*/ (0,jsx_runtime.jsx)("button", { type: "button", role: "switch", className: lineBreakClassNames, onClick: onClick, "aria-checked": store.userRulesEditorWrapState, "aria-label": translator/* .translator.getMessage */.N.getMessage('options_userfilter_line_break'), children: /*#__PURE__*/ (0,jsx_runtime.jsx)(Icon/* .Icon */.I, { id: iconId, className: "icon--24 icon--gray-default", "aria-hidden": "true" }) }) }); }); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/UserRulesEditor/ToggleFullscreenButton.tsx /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ const ToggleFullscreenButton = ({ fullscreen, onClick })=>{ const iconId = fullscreen ? '#reduce' : '#extend'; const tooltipText = fullscreen ? translator/* .translator.getMessage */.N.getMessage('options_editor_close_fullscreen_button_tooltip') : translator/* .translator.getMessage */.N.getMessage('options_editor_open_fullscreen_button_tooltip'); return /*#__PURE__*/ (0,jsx_runtime.jsx)(Popover/* .Popover */.A, { text: tooltipText, children: /*#__PURE__*/ (0,jsx_runtime.jsx)("button", { type: "button", className: "button actions__btn actions__btn--icon", onClick: onClick, "aria-label": tooltipText, children: /*#__PURE__*/ (0,jsx_runtime.jsx)(Icon/* .Icon */.I, { id: iconId, className: "icon--24 icon--gray-default", "aria-hidden": "true" }) }) }); }; ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/UserRulesEditor/UserRulesSavingButton.tsx /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ const UserRulesSavingButton = (0,mobxreact_esm/* .observer */.PA)(({ onClick })=>{ const store = (0,react.useContext)(UserRulesEditorStore/* .userRulesEditorStore */.D); return /*#__PURE__*/ (0,jsx_runtime.jsx)(SavingButton/* .SavingButton */.v, { onClick: onClick, contentChanged: store.userRulesEditorContentChanged, savingState: store.savingUserRulesState }); }); // EXTERNAL MODULE: ./Extension/src/pages/common/styles/theme.ts var theme = __webpack_require__(66491); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/UserRulesEditor/UserRulesEditor.tsx /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ const UserRulesEditor = (0,mobxreact_esm/* .observer */.PA)(({ fullscreen, setShowLoader, addNotification, updateSetting, checkLimitations, sendTelemetryCustomEvent, extraIcons = null })=>{ const store = (0,react.useContext)(UserRulesEditorStore/* .userRulesEditorStore */.D); const editorRef = (0,react.useRef)(null); const inputRef = (0,react.useRef)(null); const actionsRef = (0,react.useRef)(null); const getEditor = ()=>{ if (!editorRef.current) { throw new Error('User rules editor is not initialized.'); } return editorRef.current; }; const switchId = store.userFilterEnabledSettingId; const switchTitleId = `${switchId}-title`; let shouldResetSize = false; if (store.userRulesEditorPrefsDropped) { store.setUserRulesEditorPrefsDropped(false); shouldResetSize = true; } (0,react.useEffect)(()=>{ let removeListenerCallback = ()=>{}; (async ()=>{ await store.requestSettingsData(); const events = [ constants/* .NotifierType.SettingUpdated */.DY.SettingUpdated ]; removeListenerCallback = await messenger/* .messenger.createEventListener */.ee.createEventListener(events, async (message)=>{ const { type } = message; switch(type){ // This event will be triggered when the user rules status is toggled. case constants/* .NotifierType.SettingUpdated */.DY.SettingUpdated: { await store.requestSettingsData(); break; } default: { logger/* .logger.debug */.v.debug('[ext.UserRulesEditor]: undefined message type:', type); break; } } }); })(); return ()=>{ removeListenerCallback(); }; }, [ store ]); // Get initial storage content and set to the editor (0,react.useEffect)(()=>{ (async ()=>{ let editorContent = await messenger/* .messenger.getEditorStorageContent */.ee.getEditorStorageContent(); // clear editor content from storage after reading it await messenger/* .messenger.setEditorStorageContent */.ee.setEditorStorageContent(''); let resetInfoThatContentChanged = false; if (!editorContent) { const { content } = await messenger/* .messenger.getUserRules */.ee.getUserRules(); editorContent = content; resetInfoThatContentChanged = true; } if (editorRef.current) { editorRef.current.setValue(editorContent); // Apply a cursor position requested by the list view (Create / // Edit) and focus the editor so the user can type immediately. const cursorPosition = store.getCursorPosition(); if (cursorPosition) { editorRef.current.setCursor(cursorPosition); editorRef.current.focus(); store.setCursorPosition(null); } } if (resetInfoThatContentChanged) { store.setUserRulesEditorContentChangedState(false); } // initial export button state const { userRules } = await messenger/* .messenger.getUserRulesEditorData */.ee.getUserRulesEditorData(); if (userRules.trim().length > 0) { store.setUserRulesExportAvailableState(true); } else { store.setUserRulesExportAvailableState(false); } })(); }, [ store ]); /** * One of the reasons for request filter to update * may be adding user rules from other places like assistant and others * * @returns {Promise} */ const handleUserFilterUpdated = (0,react.useCallback)(async ()=>{ const { userRules } = await messenger/* .messenger.getUserRulesEditorData */.ee.getUserRulesEditorData(); if (!store.userRulesEditorContentChanged) { if (editorRef.current) { editorRef.current.setValue(userRules); const cursorPosition = store.getCursorPosition(); if (cursorPosition) { editorRef.current.setCursor(cursorPosition); store.setCursorPosition(null); } } store.setUserRulesEditorContentChangedState(false); await messenger/* .messenger.setEditorStorageContent */.ee.setEditorStorageContent(''); } // disable or enable export button if (userRules.trim().length > 0) { store.setUserRulesExportAvailableState(true); } else { store.setUserRulesExportAvailableState(false); } }, [ store ]); // Append listeners (0,react.useEffect)(()=>{ let removeListenerCallback = ()=>{}; (async ()=>{ // Subscribe to events of request filter update // to have actual user rules in the editor const events = [ constants/* .NotifierType.UserFilterUpdated */.DY.UserFilterUpdated ]; removeListenerCallback = await messenger/* .messenger.createEventListener */.ee.createEventListener(events, async (message)=>{ const { type } = message; switch(type){ case constants/* .NotifierType.UserFilterUpdated */.DY.UserFilterUpdated: { await handleUserFilterUpdated(); break; } default: { logger/* .logger.debug */.v.debug('[ext.UserRulesEditor]: undefined message type:', type); break; } } }); })(); return ()=>{ removeListenerCallback(); }; }, [ handleUserFilterUpdated ]); // save editor content to the storage after close of fullscreen (0,react.useEffect)(()=>{ if (fullscreen) { const beforeUnloadListener = async ()=>{ if (store.userRulesEditorContentChanged) { var _editorRef_current; // send content to the storage only before switching editors const content = (_editorRef_current = editorRef.current) === null || _editorRef_current === void 0 ? void 0 : _editorRef_current.getValue(); if (content !== undefined) { await messenger/* .messenger.setEditorStorageContent */.ee.setEditorStorageContent(content); } } }; window.addEventListener('beforeunload', beforeUnloadListener); return ()=>{ window.removeEventListener('beforeunload', beforeUnloadListener); }; } return undefined; }, [ store.userRulesEditorContentChanged, fullscreen ]); // set initial wrap mode (0,react.useEffect)(()=>{ var _editorRef_current; (_editorRef_current = editorRef.current) === null || _editorRef_current === void 0 ? void 0 : _editorRef_current.setWrap(Boolean(store.userRulesEditorWrapState)); }, [ store.userRulesEditorWrapState ]); const isSaving = store.savingUserRulesState === savingFSM/* .SavingFSMState.Saving */.A3.Saving; const hasUnsavedChanges = !isSaving && store.userRulesEditorContentChanged; const unsavedChangesTitle = translator/* .translator.getMessage */.N.getMessage('options_editor_leave_title'); const unsavedChangesSubtitle = translator/* .translator.getMessage */.N.getMessage('options_userfilter_leave_subtitle'); (0,usePreventUnload/* .usePreventUnload */.D)(hasUnsavedChanges || isSaving, `${unsavedChangesTitle} ${unsavedChangesSubtitle}`); /** * Saves user rules. * * @param userRules User rules content. */ const saveUserRules = async (userRules)=>{ var _editorRef_current; sendTelemetryCustomEvent(telemetry/* .TelemetryEventName.UserRulesSaveClick */.lr.UserRulesSaveClick, telemetry/* .TelemetryScreenName.UserRulesScreen */.Jh.UserRulesScreen); if (isSaving) { return; } var _editorRef_current_getCursor; store.setCursorPosition((_editorRef_current_getCursor = (_editorRef_current = editorRef.current) === null || _editorRef_current === void 0 ? void 0 : _editorRef_current.getCursor()) !== null && _editorRef_current_getCursor !== void 0 ? _editorRef_current_getCursor : null); setShowLoader(true); try { await store.saveUserRules(userRules); await checkLimitations(); } finally{ setShowLoader(false); } store.setUserRulesEditorContentChangedState(false); store.setCursorPosition(null); }; const inputChangeHandler = async (event)=>{ event.persist(); var _event_target_files; const [file] = (_event_target_files = event.target.files) !== null && _event_target_files !== void 0 ? _event_target_files : []; try { if (!file) { return; } const rawNewRules = await (0,helpers/* .handleFileUpload */.i_)(file, 'txt'); if (rawNewRules.trim().length === 0) { return; } const oldRulesString = getEditor().getValue(); const { merged, addedCount } = (0,user_rules/* .mergeImportedRules */.C)(oldRulesString, rawNewRules); if (addedCount > 0 && oldRulesString !== merged) { getEditor().setValue(merged); await saveUserRules(merged); } } catch (e) { logger/* .logger.debug */.v.debug('[ext.UserRulesEditor]: import error:', e); if (e instanceof Error && e.cause === common_constants/* .FILE_WRONG_EXTENSION_CAUSE */.VD) { addNotification({ type: types/* .NotificationType.Error */._.Error, text: e.message }); } else { addNotification({ type: types/* .NotificationType.Error */._.Error, text: translator/* .translator.getMessage */.N.getMessage('options_popup_import_error_file_description') }); } } // eslint-disable-next-line no-param-reassign event.target.value = ''; }; const importClickHandler = (0,react.useCallback)((event)=>{ event.preventDefault(); sendTelemetryCustomEvent(telemetry/* .TelemetryEventName.UserRulesImportClick */.lr.UserRulesImportClick, telemetry/* .TelemetryScreenName.UserRulesScreen */.Jh.UserRulesScreen); if (!inputRef.current) { return; } inputRef.current.click(); }, [ sendTelemetryCustomEvent ]); const saveClickHandler = async ()=>{ if (!store.userRulesEditorContentChanged) { return; } const value = getEditor().getValue(); await saveUserRules(value); }; const editorChangeHandler = async (value)=>{ const { content } = await messenger/* .messenger.getUserRules */.ee.getUserRules(); store.setUserRulesEditorContentChangedState(content !== value); }; const focusFirstEnabledAction = ()=>{ const actionsEl = actionsRef.current; if (!actionsEl) { return; } const firstNonDisabledButton = (0,dom/* .getFirstNonDisabledElement */.g)(actionsEl, '.actions__btn'); if (firstNonDisabledButton) { // Before focusing on element we need to add info about shortcut // so Screen Reader can tell user that editor can be closed with Escape firstNonDisabledButton.ariaKeyShortcuts = 'Escape'; firstNonDisabledButton.focus(); } }; const exportClickHandler = ()=>{ (0,utils_export/* .exportData */.Rz)(utils_export/* .ExportTypes.UserFilter */.m6.UserFilter); }; // Wrap mode is applied in-place via the `useEffect` above using CM6 compartment // reconfiguration, so the editor is not destroyed and unsaved content is preserved. const toggleWrap = async ()=>{ await store.toggleUserRulesEditorWrapMode(); await checkLimitations(); }; const toggleFullscreen = async ()=>{ if (fullscreen) { await closeEditorFullscreen(); } else { await openEditorFullscreen(); } }; const openEditorFullscreen = async ()=>{ sendTelemetryCustomEvent(telemetry/* .TelemetryEventName.EditorInNewWindowClick */.lr.EditorInNewWindowClick, telemetry/* .TelemetryScreenName.UserRulesScreen */.Jh.UserRulesScreen); // send dirty content to the storage only before switching editors if (store.userRulesEditorContentChanged) { const content = getEditor().getValue(); await messenger/* .messenger.setEditorStorageContent */.ee.setEditorStorageContent(content); } await messenger/* .messenger.openFullscreenUserRules */.ee.openFullscreenUserRules(); }; const closeEditorFullscreen = async ()=>{ // send dirty content to the storage only before switching editors if (store.userRulesEditorContentChanged) { const content = getEditor().getValue(); await messenger/* .messenger.setEditorStorageContent */.ee.setEditorStorageContent(content); } window.close(); }; const updateSettingWithLimitCheck = async (settingId, value)=>{ await updateSetting(settingId, value); await checkLimitations(); }; const handleUserRulesToggle = async ({ id, data })=>{ if (id !== settings/* .SettingOption.UserFilterEnabled */.GZ.UserFilterEnabled) { logger/* .logger.error */.v.error('[ext.UserRulesEditor]: unsupported setting:', id); return; } sendTelemetryCustomEvent(telemetry/* .TelemetryEventName.UserRulesSwitchClick */.lr.UserRulesSwitchClick, telemetry/* .TelemetryScreenName.UserRulesScreen */.Jh.UserRulesScreen); await (0,components_helpers/* .addMinDelayLoader */.C)(setShowLoader, updateSettingWithLimitCheck)(id, data); }; return /*#__PURE__*/ (0,jsx_runtime.jsxs)(jsx_runtime.Fragment, { children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)(Editor/* .Editor */.K, { name: "user-rules", editorRef: editorRef, fullscreen: fullscreen, shouldResetSize: shouldResetSize, onChange: editorChangeHandler, onSave: saveClickHandler, onExit: focusFirstEnabledAction, highlightRules: true, readOnly: isSaving }), !fullscreen && hasUnsavedChanges && /*#__PURE__*/ (0,jsx_runtime.jsx)(Editor/* .EditorLeaveModal */.S, { title: unsavedChangesTitle, subtitle: unsavedChangesSubtitle }), /*#__PURE__*/ (0,jsx_runtime.jsx)(SavingButton/* .SavingErrorMessage */.e, { savingState: store.savingUserRulesState }), /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { ref: actionsRef, className: classnames_default()('actions actions--grid', { 'actions--fullscreen-user-rules': fullscreen, 'actions--user-rules': !fullscreen }), children: [ fullscreen && /*#__PURE__*/ (0,jsx_runtime.jsxs)("label", { className: "actions__label", htmlFor: switchId, children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { id: switchTitleId, className: "actions__title", "aria-hidden": "true", children: translator/* .translator.getMessage */.N.getMessage('fullscreen_user_rules_title') }), /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { className: "actions__control", children: /*#__PURE__*/ (0,jsx_runtime.jsx)(Checkbox/* .Checkbox */.S, { id: switchId, handler: handleUserRulesToggle, value: store.userFilterEnabled, label: "", className: "checkbox__label--actions", labelId: switchTitleId }) }) ] }), /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { className: "actions--grid actions--buttons", children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)(UserRulesSavingButton, { onClick: saveClickHandler }), fullscreen && /*#__PURE__*/ (0,jsx_runtime.jsxs)(jsx_runtime.Fragment, { children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)("input", { type: "file", accept: "text/plain", ref: inputRef, onChange: inputChangeHandler, className: "actions__input-file" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("button", { type: "button", className: classnames_default()('button button--l button--transparent actions__btn', theme/* ["default"].common.hideOnMobile */.A.common.hideOnMobile), onClick: importClickHandler, title: translator/* .translator.getMessage */.N.getMessage('options_userfilter_import'), children: translator/* .translator.getMessage */.N.getMessage('options_userfilter_import') }), /*#__PURE__*/ (0,jsx_runtime.jsx)("button", { type: "button", className: classnames_default()('button button--l', 'button--transparent actions__btn', theme/* ["default"].common.hideOnMobile */.A.common.hideOnMobile), onClick: exportClickHandler, disabled: !store.userRulesExportAvailable, title: translator/* .translator.getMessage */.N.getMessage('options_userfilter_export'), children: translator/* .translator.getMessage */.N.getMessage('options_userfilter_export') }) ] }) ] }), /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { className: "actions--grid actions--icons", children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)(ToggleWrapButton, { onClick: toggleWrap }), extraIcons, /*#__PURE__*/ (0,jsx_runtime.jsx)(ToggleFullscreenButton, { fullscreen: Boolean(fullscreen), onClick: toggleFullscreen }) ] }) ] }) ] }); }); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/UserRulesEditor/index.ts /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ }, 33681(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { C: () => (addMinDelayLoader) }); /* import */ var _common_sleep_utils__rspack_import_0 = __webpack_require__(13953); /* import */ var _constants__rspack_import_1 = __webpack_require__(81166); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * Checks if the extension is MV3, and * - if so it returns a new callback and shows a loader for at least {@link MIN_LOADER_SHOWING_TIME_MS}, * - otherwise (for MV2) it returns the callback as it is. * * @param setShowLoaderCb Callback to set the loader visibility. * @param callback Async callback to run. * * @returns Async callback with the loader showing for at least {@link MIN_LOADER_SHOWING_TIME_MS}. */ const addMinDelayLoader = (setShowLoaderCb, callback)=>{ if (false) {} const callbackWithMinDuration = (0,_common_sleep_utils__rspack_import_0/* .addMinDurationTime */.pM)(callback, _constants__rspack_import_1/* .MIN_LOADER_SHOWING_TIME_MS */.kG); return async (...args)=>{ setShowLoaderCb(true); try { const response = await callbackWithMinDuration(...args); setShowLoaderCb(false); return response; } catch (e) { setShowLoaderCb(false); throw e; } }; }; }, 62132(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { S: () => (/* reexport */ Checkbox) }); // EXTERNAL MODULE: ./node_modules/.pnpm/core-js@3.40.0/node_modules/core-js/modules/es.array.includes.js var es_array_includes = __webpack_require__(45403); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/jsx-runtime.js var jsx_runtime = __webpack_require__(7357); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/index.js var react = __webpack_require__(33353); // EXTERNAL MODULE: ./node_modules/.pnpm/classnames@2.3.2/node_modules/classnames/index.js var classnames = __webpack_require__(52996); var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames); // EXTERNAL MODULE: ./node_modules/.pnpm/@adguard+logger@2.0.0/node_modules/@adguard/logger/dist/es/index.mjs var es = __webpack_require__(44469); // EXTERNAL MODULE: ./Extension/src/common/logger.ts var logger = __webpack_require__(42228); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js var injectStylesIntoStyleTag = __webpack_require__(42604); var injectStylesIntoStyleTag_default = /*#__PURE__*/__webpack_require__.n(injectStylesIntoStyleTag); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/styleDomAPI.js var styleDomAPI = __webpack_require__(91605); var styleDomAPI_default = /*#__PURE__*/__webpack_require__.n(styleDomAPI); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/insertBySelector.js var insertBySelector = __webpack_require__(70103); var insertBySelector_default = /*#__PURE__*/__webpack_require__.n(insertBySelector); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js var setAttributesWithoutAttributes = __webpack_require__(11556); var setAttributesWithoutAttributes_default = /*#__PURE__*/__webpack_require__.n(setAttributesWithoutAttributes); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/insertStyleElement.js var insertStyleElement = __webpack_require__(71712); var insertStyleElement_default = /*#__PURE__*/__webpack_require__.n(insertStyleElement); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/styleTagTransform.js var styleTagTransform = __webpack_require__(16077); var styleTagTransform_default = /*#__PURE__*/__webpack_require__.n(styleTagTransform); // EXTERNAL MODULE: ./node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.6.6_webpack@5.97.1_@swc+core@1.11.21_/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/.pnpm/postcss-loader@8.1.1_@rspack+core@1.6.6_postcss@8.4.49_typescript@5.6.3_webpack@5.97.1_@swc+core@1.11.21_/node_modules/postcss-loader/dist/cjs.js!./Extension/src/pages/common/components/ui/Checkbox/checkbox.pcss var Checkbox_checkbox = __webpack_require__(67197); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/ui/Checkbox/checkbox.pcss var options = {}; options.styleTagTransform = (styleTagTransform_default()); options.setAttributes = (setAttributesWithoutAttributes_default()); options.insert = insertBySelector_default().bind(null, "head"); options.domAPI = (styleDomAPI_default()); options.insertStyleElement = (insertStyleElement_default()); var update = injectStylesIntoStyleTag_default()(Checkbox_checkbox/* ["default"] */.A, options); /* export default */ const ui_Checkbox_checkbox = (Checkbox_checkbox/* ["default"] */.A && Checkbox_checkbox/* ["default"].locals */.A.locals ? Checkbox_checkbox/* ["default"].locals */.A.locals : undefined); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/ui/Checkbox/Checkbox.tsx /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * Checkbox component that supports both optimistic and pessimistic state updates. * - When `optimistic` is true, the checkbox state updates immediately upon user interaction. * - When `optimistic` is false, the checkbox state updates only after the handler completes. * * @param props CheckboxProps */ const Checkbox = (props)=>{ const { id, handler, inverted = false, label = '', labelId, value = false, className, disabled, optimistic = true } = props; const computedValue = inverted ? !value : value; const [state, setState] = (0,react.useState)(computedValue); const [pending, setPending] = (0,react.useState)(false); (0,react.useEffect)(()=>{ setState(computedValue); }, [ computedValue ]); const changeHandler = async (e)=>{ const newValue = !state; if (optimistic) { setState(newValue); } else { setPending(true); } try { const { target: { name: targetId, checked: data } } = e; await handler({ id: targetId, data: inverted ? !data : data }); if (!optimistic) { setState(newValue); } } catch (error) { // TODO: Dirty hack, need to refactor. Maybe pass some new prop like 'revertOnError'? if (!(0,es/* .getErrorMessage */.u1)(error).includes('[revert-checkbox]')) { logger/* .logger.error */.v.error('[ext.Checkbox]: handler execution failed:', error); } if (optimistic) { setState(!newValue); // revert state on error } } finally{ if (!optimistic) { setPending(false); } } }; return /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { className: "checkbox", children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)("input", { type: "checkbox", name: String(id), checked: state, onChange: changeHandler, id: String(id), className: "checkbox__in", tabIndex: 0, disabled: disabled || pending, "aria-labelledby": labelId }), /*#__PURE__*/ (0,jsx_runtime.jsx)("label", { htmlFor: String(id), className: classnames_default()('checkbox__label', className), // We hide from Screen Readers if labelId is provided to avoid duplication "aria-hidden": !!labelId, children: label }) ] }); }; ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/ui/Checkbox/index.ts /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ }, 24085(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { F: () => (/* binding */ Icons) }); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/jsx-runtime.js var jsx_runtime = __webpack_require__(7357); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/index.js var react = __webpack_require__(33353); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js var injectStylesIntoStyleTag = __webpack_require__(42604); var injectStylesIntoStyleTag_default = /*#__PURE__*/__webpack_require__.n(injectStylesIntoStyleTag); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/styleDomAPI.js var styleDomAPI = __webpack_require__(91605); var styleDomAPI_default = /*#__PURE__*/__webpack_require__.n(styleDomAPI); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/insertBySelector.js var insertBySelector = __webpack_require__(70103); var insertBySelector_default = /*#__PURE__*/__webpack_require__.n(insertBySelector); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js var setAttributesWithoutAttributes = __webpack_require__(11556); var setAttributesWithoutAttributes_default = /*#__PURE__*/__webpack_require__.n(setAttributesWithoutAttributes); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/insertStyleElement.js var insertStyleElement = __webpack_require__(71712); var insertStyleElement_default = /*#__PURE__*/__webpack_require__.n(insertStyleElement); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/styleTagTransform.js var styleTagTransform = __webpack_require__(16077); var styleTagTransform_default = /*#__PURE__*/__webpack_require__.n(styleTagTransform); // EXTERNAL MODULE: ./node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.6.6_webpack@5.97.1_@swc+core@1.11.21_/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/.pnpm/postcss-loader@8.1.1_@rspack+core@1.6.6_postcss@8.4.49_typescript@5.6.3_webpack@5.97.1_@swc+core@1.11.21_/node_modules/postcss-loader/dist/cjs.js!./Extension/src/pages/common/styles/icons.pcss var icons = __webpack_require__(39003); ;// CONCATENATED MODULE: ./Extension/src/pages/common/styles/icons.pcss var options = {}; options.styleTagTransform = (styleTagTransform_default()); options.setAttributes = (setAttributesWithoutAttributes_default()); options.insert = insertBySelector_default().bind(null, "head"); options.domAPI = (styleDomAPI_default()); options.insertStyleElement = (insertStyleElement_default()); var update = injectStylesIntoStyleTag_default()(icons/* ["default"] */.A, options); /* export default */ const styles_icons = (icons/* ["default"] */.A && icons/* ["default"].locals */.A.locals ? icons/* ["default"].locals */.A.locals : undefined); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/ui/Icons.tsx /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /* eslint-disable max-len */ const Icons = ()=>{ return /*#__PURE__*/ (0,jsx_runtime.jsxs)("svg", { xmlns: "http://www.w3.org/2000/svg", display: "none", children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)("symbol", { id: "arrow-left", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /*#__PURE__*/ (0,jsx_runtime.jsx)("g", { fill: "none", fillRule: "evenodd", children: /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { stroke: "currentColor", d: "m15 18-6-6 6-6", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }) }), /*#__PURE__*/ (0,jsx_runtime.jsxs)("symbol", { id: "cross", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { stroke: "currentColor", d: "M6.42857 6.42857L17.6043 17.6043", strokeWidth: "1.5", strokeLinecap: "round" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { stroke: "currentColor", d: "M6.42871 17.5714L17.6045 6.39563", strokeWidth: "1.5", strokeLinecap: "round" }) ] }), /*#__PURE__*/ (0,jsx_runtime.jsx)("symbol", { id: "checked", viewBox: "0 0 20 20", children: /*#__PURE__*/ (0,jsx_runtime.jsxs)("g", { fill: "none", fillRule: "evenodd", children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)("rect", { fill: "#67b279", width: "20", height: "20", rx: "2" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { stroke: "#fff", d: "m5.05 9.04 4.47 4.47 5.43-7.02", strokeWidth: "1.5", strokeLinecap: "round" }) ] }) }), /*#__PURE__*/ (0,jsx_runtime.jsxs)("symbol", { id: "magnifying", viewBox: "0 0 24 24", children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)("circle", { cx: "9.5", cy: "9.5", r: "5.5", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { d: "M14 14L19 19", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) ] }), /*#__PURE__*/ (0,jsx_runtime.jsx)("symbol", { id: "tick", viewBox: "0 0 24 24", children: /*#__PURE__*/ (0,jsx_runtime.jsx)("g", { fill: "none", fillRule: "evenodd", children: /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { stroke: "currentColor", d: "m5 12 6 6 8-9", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }) }), /*#__PURE__*/ (0,jsx_runtime.jsx)("symbol", { id: "trash", viewBox: "0 0 24 24", children: /*#__PURE__*/ (0,jsx_runtime.jsxs)("g", { fill: "none", fillRule: "evenodd", stroke: "currentColor", children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { clipRule: "evenodd", d: "M7 9h10l-.7633 10.0755c-.0395.5215-.4742.9245-.9971.9245H8.76044c-.52298 0-.95763-.403-.99714-.9245L7 9Z", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { d: "M6 6.5h12M14 6V4h-4v2", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { clipRule: "evenodd", d: "M13.5 12v5-5ZM10.5 12v5-5Z", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) ] }) }), /*#__PURE__*/ (0,jsx_runtime.jsx)("symbol", { id: "reload", viewBox: "0 0 24 24", children: /*#__PURE__*/ (0,jsx_runtime.jsxs)("g", { fill: "none", fillRule: "evenodd", children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { stroke: "currentColor", d: "M6 6.99999C9.6 1.79999 19.5 3.49996 20 12v1.5M18 16.9999c-3.6 5.2-13.5 3.5001-14-5V11", strokeWidth: "1.5", strokeLinecap: "round" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { stroke: "currentColor", d: "m22 12-2 2-2-2M2 12l2-2 2 2", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) ] }) }), /*#__PURE__*/ (0,jsx_runtime.jsx)("symbol", { id: "select", viewBox: "0 0 14 8", children: /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { d: "m6 10 6 6 6-6", fill: "none", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "1.5", transform: "translate(-5 -9)" }) }), /*#__PURE__*/ (0,jsx_runtime.jsxs)("symbol", { id: "extend", viewBox: "0 0 24 24", children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)("rect", { width: "24", height: "24", fill: "none" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { d: "M6 10V6H10M6 14V18H10M18 10V6H14M18 14V18H14", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) ] }), /*#__PURE__*/ (0,jsx_runtime.jsxs)("symbol", { id: "more-vertical", viewBox: "0 0 24 24", children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M12 7C11.1716 7 10.5 6.32843 10.5 5.5C10.5 4.67157 11.1716 4 12 4C12.8284 4 13.5 4.67157 13.5 5.5C13.5 6.32843 12.8284 7 12 7Z", fill: "currentColor" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M12 13.5C11.1716 13.5 10.5 12.8284 10.5 12C10.5 11.1716 11.1716 10.5 12 10.5C12.8284 10.5 13.5 11.1716 13.5 12C13.5 12.8284 12.8284 13.5 12 13.5Z", fill: "currentColor" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M12 20C11.1716 20 10.5 19.3284 10.5 18.5C10.5 17.6716 11.1716 17 12 17C12.8284 17 13.5 17.6716 13.5 18.5C13.5 19.3284 12.8284 20 12 20Z", fill: "currentColor" }) ] }), /*#__PURE__*/ (0,jsx_runtime.jsx)("symbol", { id: "line-break-on", viewBox: "0 0 24 24", children: /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { fill: "currentColor", fillRule: "evenodd", clipRule: "evenodd", d: "M4.08 4.74a.75.75 0 0 0 0 1.5h15.54a.75.75 0 0 0 0-1.5H4.08ZM4 8.96a.75.75 0 0 0 0 1.5h11.54a3.25 3.25 0 0 1 .02 6.48l.73-.73a.75.75 0 0 0-1.06-1.06L13.3 17.1c-.3.29-.3.76 0 1.06l1.94 1.94a.75.75 0 0 0 1.06-1.06l-.6-.6a4.75 4.75 0 0 0-.15-9.49H4Zm-.67 4.78c0-.41.34-.75.75-.75h6.8a.75.75 0 0 1 0 1.5h-6.8a.75.75 0 0 1-.75-.75Zm0 3.89c0-.42.34-.75.75-.75h6.8a.75.75 0 0 1 0 1.5h-6.8a.75.75 0 0 1-.75-.75Z" }) }), /*#__PURE__*/ (0,jsx_runtime.jsx)("symbol", { id: "line-break-off", viewBox: "0 0 24 24", children: /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { stroke: "currentColor", d: "M4 6h16M4 18h16M4 14h16M4 10h16", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }), /*#__PURE__*/ (0,jsx_runtime.jsxs)("symbol", { id: "info", viewBox: "0 0 24 24", children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)("circle", { stroke: "currentColor", fill: "none", cx: "12", cy: "12", r: "9", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { stroke: "currentColor", d: "M12 16V10", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { stroke: "currentColor", d: "M11.997 7.59552C12.009 7.59745 11.997 7.40446 11.997 7.40446", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) ] }), /*#__PURE__*/ (0,jsx_runtime.jsx)("symbol", { id: "reduce", viewBox: "0 0 24 24", children: /*#__PURE__*/ (0,jsx_runtime.jsx)("g", { fill: "none", fillRule: "evenodd", children: /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { stroke: "currentColor", d: "M10 6v4H6M10 18v-4H6M14 6v4h4M14 18v-4h4", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }) }), /*#__PURE__*/ (0,jsx_runtime.jsx)("symbol", { id: "cross", width: "24", height: "24", children: /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { stroke: "currentColor", d: "M6.429 6.796 17.604 18.61M6.429 18.576 17.605 6.76" }) }), /*#__PURE__*/ (0,jsx_runtime.jsx)("symbol", { id: "question", width: "24", height: "24", children: /*#__PURE__*/ (0,jsx_runtime.jsxs)("g", { fill: "none", fillRule: "evenodd", children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { stroke: "currentColor", clipRule: "evenodd", d: "M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { stroke: "currentColor", d: "M10 9.3c.02-.82 1-1.52 2-1.52s1.6.39 2 1.22c.32.7.01 1.55-1.06 2.28-.87.56-1.14 1.13-1.14 2.18M11.8 15.9v-.2", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) ] }) }), /*#__PURE__*/ (0,jsx_runtime.jsx)("symbol", { id: "no-search-match", viewBox: "0 0 48 51", children: /*#__PURE__*/ (0,jsx_runtime.jsxs)("g", { fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { d: "M31.631 18.31a15.16 15.16 0 0 1-4.196 12.723c-5.872 5.999-15.504 6.099-21.503.226-6-5.872-6.108-15.505-.227-21.503 4.377-4.477 10.838-5.673 16.33-3.553M27.436 31.033 47 50.172" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { d: "M31.522 15.564a7.023 7.023 0 1 0 0-14.046 7.023 7.023 0 0 0 0 14.046ZM27.752 4.645l7.54 7.539M27.752 12.157l7.54-7.54" }) ] }) }), /*#__PURE__*/ (0,jsx_runtime.jsx)("symbol", { id: "no-filters-yet", viewBox: "0 0 63 35", children: /*#__PURE__*/ (0,jsx_runtime.jsxs)("g", { fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { d: "M54.5 36.886a7 7 0 1 0 0-14 7 7 0 0 0 0 14Z" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { d: "M54.5 26.776v4.67-4.67Z" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { d: "M54.5 26.776v4.67" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { d: "M54.491 33.31v.152-.152Z" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { d: "M54.491 33.31v.152M9.802 10.302V31.84h35.34M52.277 20.591v-9.985M9.802 1.5h42.475M35.086 1.5v30.34" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { d: "m35.283 1.5-8.801 8.802H1L9.802 1.5" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { d: "m34.978 1.805 8.802 8.801h17.594L52.277 1.5" }) ] }) }), /*#__PURE__*/ (0,jsx_runtime.jsx)("symbol", { id: "loading", viewBox: "0 0 24 24", children: /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { fill: "none", stroke: "currentColor", d: "M6.29054 5.04252c.11374-.09345.22981-.18417.34812-.27205M8.55511 3.68292c.2649-.10985.53619-.20741.81315-.29197.14206-.04337.28562-.08333.43057-.11976M12 3c4.9706 0 9 4.02944 9 9 0 4.9706-4.0294 9-9 9-2.48528 0-4.73528-1.0074-6.36396-2.636-.829-.829-1.49703-1.819-1.95318-2.9191" }) }), /*#__PURE__*/ (0,jsx_runtime.jsx)("symbol", { id: "update-available", viewBox: "0 0 24 24", children: /*#__PURE__*/ (0,jsx_runtime.jsx)("g", { fill: "none", fillRule: "evenodd", children: /*#__PURE__*/ (0,jsx_runtime.jsx)("path", { stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5", d: "m12 4 7 10.49h-3.5V20h-7v-5.51H5L12 4Z", clipRule: "evenodd" }) }) }) ] }); }; }, 88960(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { j: () => (/* reexport */ MenuDropDown) }); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/jsx-runtime.js var jsx_runtime = __webpack_require__(7357); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/index.js var react = __webpack_require__(33353); // EXTERNAL MODULE: ./node_modules/.pnpm/classnames@2.3.2/node_modules/classnames/index.js var classnames = __webpack_require__(52996); var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames); // EXTERNAL MODULE: ./Extension/src/pages/common/components/ui/Icon.tsx var Icon = __webpack_require__(82006); // EXTERNAL MODULE: ./Extension/src/pages/common/hooks/useOutsideClick.js var useOutsideClick = __webpack_require__(71365); // EXTERNAL MODULE: ./Extension/src/pages/common/components/ui/MenuDropDown/MenuDropDown.module.pcss var MenuDropDown_module = __webpack_require__(90819); var MenuDropDown_module_default = /*#__PURE__*/__webpack_require__.n(MenuDropDown_module); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/ui/MenuDropDown/MenuDropDown.tsx /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ const MenuDropDown = ({ children, className, ariaLabel, onButtonClick })=>{ const [isOpen, setIsOpen] = (0,react.useState)(false); const menuRef = (0,react.useRef)(null); (0,useOutsideClick/* .useOutsideClick */.j)(menuRef, ()=>setIsOpen(false)); const handleButtonKeyDown = (e)=>{ if (e.key === 'Escape' && isOpen) { setIsOpen(false); } }; return /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { className: classnames_default()((MenuDropDown_module_default()).dropdownContainer, className), ref: menuRef, children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)("button", { type: "button", className: (MenuDropDown_module_default()).menuButton, onClick: ()=>{ onButtonClick === null || onButtonClick === void 0 ? void 0 : onButtonClick(); setIsOpen((prev)=>!prev); }, onKeyDown: handleButtonKeyDown, "aria-label": ariaLabel, "aria-expanded": isOpen, "aria-haspopup": "menu", children: /*#__PURE__*/ (0,jsx_runtime.jsx)(Icon/* .Icon */.I, { id: "#more-vertical", className: "icon--24 icon--gray-default", "aria-hidden": "true" }) }), isOpen && /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { className: (MenuDropDown_module_default()).dropdown, role: "menu", tabIndex: -1, onClick: ()=>setIsOpen(false), onKeyDown: handleButtonKeyDown, children: children }) ] }); }; ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/ui/MenuDropDown/index.ts /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ }, 64020(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (Popover) }); /* import */ var react_jsx_runtime__rspack_import_0 = __webpack_require__(7357); /* import */ var react__rspack_import_1 = __webpack_require__(33353); /* import */ var _AttachmentPortal__rspack_import_2 = __webpack_require__(62112); /* import */ var _Tooltip__rspack_import_3 = __webpack_require__(14876); /* import */ var _popover_module_pcss__rspack_import_4 = __webpack_require__(95573); /* import */ var _popover_module_pcss__rspack_import_4_default = /*#__PURE__*/__webpack_require__.n(_popover_module_pcss__rspack_import_4); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * Default delay before showing popover. */ const POPOVER_SHOW_DELAY_MS = 500; /** * Wrap child container for handle tooltips rendering in overlay on hover * * @param PopoverParams Component props. */ const Popover = ({ text, delay, comingSoon, children, ...props })=>{ const defaultTooltip = { visible: false, position: null }; const [tooltip, setTooltip] = (0,react__rspack_import_1.useState)(defaultTooltip); const timer = (0,react__rspack_import_1.useRef)(); // clear timer on unmounting (0,react__rspack_import_1.useEffect)(()=>{ return ()=>{ clearTimeout(timer.current); }; }, []); const handleMouseEnter = (e)=>{ const { left, bottom } = e.currentTarget.getBoundingClientRect(); timer.current = setTimeout(()=>{ setTooltip({ visible: true, position: { x: left + window.scrollX, y: bottom + window.scrollY } }); }, delay || POPOVER_SHOW_DELAY_MS); }; const handleMouseLeave = ()=>{ clearTimeout(timer.current); setTooltip({ visible: false, position: null }); }; const popoverClassName = comingSoon ? (_popover_module_pcss__rspack_import_4_default().popoverComingSoon) : (_popover_module_pcss__rspack_import_4_default().popoverDefault); return /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsxs)("div", { className: popoverClassName, ...props, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, children: [ tooltip.visible && tooltip.position && /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_AttachmentPortal__rspack_import_2/* .AttachmentPortal */.c, { rootId: "root-portal", position: tooltip.position, children: /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(_Tooltip__rspack_import_3/* .Tooltip */.m, { text: text, visible: tooltip.visible, fixedWidth: true }) }), children ] }); }; }, 87757(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (/* reexport safe */ _Popover__rspack_import_0.A) }); /* import */ var _Popover__rspack_import_0 = __webpack_require__(64020); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ }, 22681(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { Mr: () => (SelectProvider), WM: () => (useSelect) }); /* import */ var react_jsx_runtime__rspack_import_0 = __webpack_require__(7357); /* import */ var react__rspack_import_1 = __webpack_require__(33353); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ const noop = ()=>{}; const SelectContext = /*#__PURE__*/ (0,react__rspack_import_1.createContext)({ currentSelect: null, setCurrentSelect: noop }); const SelectProvider = ({ currentSelect: currentSelectProp = null, children })=>{ const [currentSelect, setCurrentSelect] = (0,react__rspack_import_1.useState)(currentSelectProp); const context = (0,react__rspack_import_1.useMemo)(()=>{ return { currentSelect, setCurrentSelect }; }, [ currentSelect ]); return /*#__PURE__*/ (0,react_jsx_runtime__rspack_import_0.jsx)(SelectContext.Provider, { value: context, children: children }); }; const useSelect = (id)=>{ const { currentSelect, setCurrentSelect } = (0,react__rspack_import_1.useContext)(SelectContext); const hidden = currentSelect !== id; const setHidden = (0,react__rspack_import_1.useCallback)((hide)=>{ setCurrentSelect(hide ? null : id); }, [ setCurrentSelect, id ]); return [ hidden, setHidden ]; }; }, 85571(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { l: () => (/* reexport */ SelectWrapper) }); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/jsx-runtime.js var jsx_runtime = __webpack_require__(7357); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/index.js var react = __webpack_require__(33353); // EXTERNAL MODULE: ./Extension/src/pages/common/components/ui/Select/SelectProvider.tsx var SelectProvider = __webpack_require__(22681); // EXTERNAL MODULE: ./node_modules/.pnpm/classnames@2.3.2/node_modules/classnames/index.js var classnames = __webpack_require__(52996); var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames); // EXTERNAL MODULE: ./Extension/src/pages/common/hooks/useOutsideClick.js var useOutsideClick = __webpack_require__(71365); // EXTERNAL MODULE: ./Extension/src/pages/common/components/ui/Icon.tsx var Icon = __webpack_require__(82006); // EXTERNAL MODULE: ./node_modules/.pnpm/core-js@3.40.0/node_modules/core-js/modules/es.array.push.js var es_array_push = __webpack_require__(75126); // EXTERNAL MODULE: ./node_modules/.pnpm/core-js@3.40.0/node_modules/core-js/modules/es.array.includes.js var es_array_includes = __webpack_require__(45403); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/ui/Select/helpers.ts /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * Select action. */ var helpers_SelectAction = /*#__PURE__*/ function(SelectAction) { SelectAction[SelectAction["Close"] = 0] = "Close"; SelectAction[SelectAction["Select"] = 1] = "Select"; SelectAction[SelectAction["First"] = 2] = "First"; SelectAction[SelectAction["Last"] = 3] = "Last"; SelectAction[SelectAction["Next"] = 4] = "Next"; SelectAction[SelectAction["Open"] = 5] = "Open"; SelectAction[SelectAction["PageDown"] = 6] = "PageDown"; SelectAction[SelectAction["PageUp"] = 7] = "PageUp"; SelectAction[SelectAction["Previous"] = 8] = "Previous"; SelectAction[SelectAction["Type"] = 9] = "Type"; SelectAction[SelectAction["None"] = 10] = "None"; return SelectAction; }({}); /** * Keyboard keys supported by the select. */ var helpers_SelectKey = /*#__PURE__*/ function(SelectKey) { SelectKey["Enter"] = "Enter"; SelectKey["Space"] = " "; SelectKey["Escape"] = "Escape"; SelectKey["ArrowDown"] = "ArrowDown"; SelectKey["ArrowUp"] = "ArrowUp"; SelectKey["Home"] = "Home"; SelectKey["End"] = "End"; SelectKey["PageUp"] = "PageUp"; SelectKey["PageDown"] = "PageDown"; SelectKey["Backspace"] = "Backspace"; SelectKey["Clear"] = "Clear"; SelectKey["Character"] = "Character"; return SelectKey; }({}); /** * Map a key press to an action. */ const SELECT_KEY_TO_ACTION_MAP = new Map([ [ "Home", 2 ], [ "End", 3 ], [ "Backspace", 9 ], [ "Clear", 9 ], [ "Character", 9 ] ]); /** * Map a key press to an action when the select is closed. */ const SELECT_CLOSED_KEY_TO_ACTION_MAP = new Map([ ...SELECT_KEY_TO_ACTION_MAP.entries(), [ "ArrowDown", 5 ], [ "ArrowUp", 5 ], [ "Enter", 5 ], [ " ", 5 ] ]); /** * Map a key press to an action when the select is open. */ const SELECT_OPENED_KEY_TO_ACTION_MAP = new Map([ ...SELECT_KEY_TO_ACTION_MAP.entries(), [ "ArrowDown", 4 ], [ "ArrowUp", 8 ], [ "PageUp", 7 ], [ "PageDown", 6 ], [ "Escape", 0 ], [ "Enter", 1 ], [ " ", 1 ] ]); /** * Filter an array of options against an input string by using `option.title` property. * The filter is case-insensitive and will match any option that starts with or contains the filter string. * Filtering prioritizes: * 1) Options that starts with filter string. * 2) Options that contains filter string. * * @param options Options to filter. * @param filter Filter string. * * @returns Filtered options. */ function filterOptions(options, filter) { const filterLower = filter.toLowerCase(); const startsWith = []; const contains = []; options.forEach((option)=>{ const titleLower = option.title.toLowerCase(); if (titleLower.startsWith(filterLower)) { startsWith.push(option); } else if (titleLower.includes(filterLower)) { contains.push(option); } }); return [ ...startsWith, ...contains ]; } /** * Get the select key from a keyboard event. * * @param event Keyboard event. * * @returns Select key. */ function getSelectKeyFromEvent(event) { const { key, altKey, ctrlKey, metaKey } = event; // get matching key from enum, 'Character' not overlaps with any native key if (Object.values(helpers_SelectKey).includes(key)) { return key; } // check if key is a single character if (key.length === 1 && key !== ' ' && !altKey && !ctrlKey && !metaKey) { return "Character"; } return null; } /** * Map a key press to an action. * * @see {@link https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/ | Specs} * * @param event Event. * @param selectHidden Is select hidden. * * @returns Select action to perform. */ function getActionFromKey(event, selectHidden) { const selectKey = getSelectKeyFromEvent(event); // if key is not supported, do nothing if (!selectKey) { return 10; } // Special case: ArrowUp + Alt updates select value if (!selectHidden && selectKey === "ArrowUp" && event.altKey) { return 1; } // get action map based on select visibility const map = selectHidden ? SELECT_CLOSED_KEY_TO_ACTION_MAP : SELECT_OPENED_KEY_TO_ACTION_MAP; var _map_get; return (_map_get = map.get(selectKey)) !== null && _map_get !== void 0 ? _map_get : 10; } /** * Check if all characters in an string are the same. * * @param str String to check. * * @returns True if all letters are the same. */ function areAllLettersSame(str) { const array = str.split(''); return array.every((letter)=>letter === array[0]); } /** * Return the index of an option from an array of options, based on a search string. * If the filter is multiple iterations of the same letter (e.g "aaa"), * then cycle through first-letter matches. * * @param options Options to filter. * @param filter Filter string. * @param startIndex Start index. * * @returns Index of the option. */ function getIndexByLetter(options, filter, startIndex = 0) { if (filter === '') { return -1; } const orderedOptions = [ ...options.slice(startIndex), ...options.slice(0, startIndex) ]; const firstMatch = filterOptions(orderedOptions, filter)[0]; // first check if there is an exact match for the typed string if (firstMatch) { return options.indexOf(firstMatch); } // if the same letter is being repeated, cycle through first-letter matches if (areAllLettersSame(filter)) { var _filter_; const firstMatchByLetter = filterOptions(orderedOptions, (_filter_ = filter[0]) !== null && _filter_ !== void 0 ? _filter_ : '')[0]; if (!firstMatchByLetter) { return -1; } return options.findIndex(({ title })=>title === firstMatchByLetter.title); } // if no matches, return -1 return -1; } /** * Get an updated option index after performing an action. * * @param currentIndex Current index. * @param maxIndex Maximum index. * @param action Action to perform. * @param pageSize Page size. * * @returns Updated index. */ function getUpdatedIndex(currentIndex, maxIndex, action, pageSize = 4) { switch(action){ case 2: return 0; case 3: return maxIndex; case 8: return Math.max(0, currentIndex - 1); case 4: return Math.min(maxIndex, currentIndex + 1); case 7: return Math.max(0, currentIndex - pageSize); case 6: return Math.min(maxIndex, currentIndex + pageSize); default: return currentIndex; } } /** * Check if element is visible in browser view port. * * @param element Element to check. * * @returns True if element is visible. */ function isElementInView(element) { const bounding = element.getBoundingClientRect(); return bounding.top >= 0 && bounding.left >= 0 && bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) && bounding.right <= (window.innerWidth || document.documentElement.clientWidth); } /** * Check if an element is currently scrollable. * * @param element Element to check. * * @returns True if element is scrollable. */ function isScrollable(element) { return element && element.clientHeight < element.scrollHeight; } /** * Ensure a given child element is within the parent's visible scroll area. * If the child is not visible, scroll the parent. * * @param activeElement * @param scrollParent */ function maintainScrollVisibility(activeElement, scrollParent) { const { offsetHeight, offsetTop } = activeElement; const { offsetHeight: parentOffsetHeight, scrollTop } = scrollParent; const isAbove = offsetTop < scrollTop; const isBelow = offsetTop + offsetHeight > scrollTop + parentOffsetHeight; if (isAbove) { scrollParent.scrollTo(0, offsetTop); } else if (isBelow) { scrollParent.scrollTo(0, offsetTop - parentOffsetHeight + offsetHeight); } } // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js var injectStylesIntoStyleTag = __webpack_require__(42604); var injectStylesIntoStyleTag_default = /*#__PURE__*/__webpack_require__.n(injectStylesIntoStyleTag); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/styleDomAPI.js var styleDomAPI = __webpack_require__(91605); var styleDomAPI_default = /*#__PURE__*/__webpack_require__.n(styleDomAPI); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/insertBySelector.js var insertBySelector = __webpack_require__(70103); var insertBySelector_default = /*#__PURE__*/__webpack_require__.n(insertBySelector); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js var setAttributesWithoutAttributes = __webpack_require__(11556); var setAttributesWithoutAttributes_default = /*#__PURE__*/__webpack_require__.n(setAttributesWithoutAttributes); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/insertStyleElement.js var insertStyleElement = __webpack_require__(71712); var insertStyleElement_default = /*#__PURE__*/__webpack_require__.n(insertStyleElement); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/styleTagTransform.js var styleTagTransform = __webpack_require__(16077); var styleTagTransform_default = /*#__PURE__*/__webpack_require__.n(styleTagTransform); // EXTERNAL MODULE: ./node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.6.6_webpack@5.97.1_@swc+core@1.11.21_/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/.pnpm/postcss-loader@8.1.1_@rspack+core@1.6.6_postcss@8.4.49_typescript@5.6.3_webpack@5.97.1_@swc+core@1.11.21_/node_modules/postcss-loader/dist/cjs.js!./Extension/src/pages/common/components/ui/Select/select.pcss var Select_select = __webpack_require__(60987); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/ui/Select/select.pcss var select_options = {}; select_options.styleTagTransform = (styleTagTransform_default()); select_options.setAttributes = (setAttributesWithoutAttributes_default()); select_options.insert = insertBySelector_default().bind(null, "head"); select_options.domAPI = (styleDomAPI_default()); select_options.insertStyleElement = (insertStyleElement_default()); var update = injectStylesIntoStyleTag_default()(Select_select/* ["default"] */.A, select_options); /* export default */ const ui_Select_select = (Select_select/* ["default"] */.A && Select_select/* ["default"].locals */.A.locals ? Select_select/* ["default"].locals */.A.locals : undefined); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/ui/Select/Select.tsx /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ const Select = ({ id, handler, options, value, hidden, setHidden, popupModification = false, label, labelId })=>{ const ref = (0,react.useRef)(null); const comboRef = (0,react.useRef)(null); const listRef = (0,react.useRef)(null); const optionRefs = (0,react.useRef)([]); const activeIndex = options.findIndex((option)=>option.value === value); const activeOption = options[activeIndex]; const [focusedIndex, setFocusedIndex] = (0,react.useState)(activeIndex === -1 ? 0 : activeIndex); const [isKeyboardUsed, setIsKeyboardUsed] = (0,react.useState)(false); const searchString = (0,react.useRef)(''); const searchTimeoutId = (0,react.useRef)(); const ignoreBlur = (0,react.useRef)(false); const comboId = `${id}-combo`; const listId = `${id}-list`; const getOptionId = (index)=>{ if (index < 0 || index >= options.length) { return undefined; } return `${id}-option-${index}`; }; const classes = classnames_default()('select', popupModification && 'popup-modification'); const listClasses = classnames_default()('select__list', hidden && 'select__list--hidden'); const getOptionClasses = (index)=>classnames_default()('select__item', index === focusedIndex && isKeyboardUsed && 'select__item--focused'); const openSelect = (0,react.useCallback)(()=>{ setHidden(false); }, [ setHidden ]); const closeSelect = (0,react.useCallback)(()=>{ setHidden(true); setIsKeyboardUsed(false); }, [ setHidden ]); const updateOption = (0,react.useCallback)((index)=>{ const option = options[index]; if (!option) { return; } setFocusedIndex(index); handler(option.value); }, [ handler, options ]); const updateSelectHiddenState = (0,react.useCallback)((nextHidden, shouldFocus = true)=>{ const comboEl = comboRef.current; if (!comboEl || hidden === nextHidden) { return; } if (nextHidden) { closeSelect(); } else { openSelect(); } if (nextHidden && !isElementInView(comboEl)) { comboEl.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); } // move focus back to the combobox, if needed if (shouldFocus) { comboEl.focus(); } }, [ closeSelect, openSelect, hidden ]); const onComboClick = ()=>{ updateSelectHiddenState(!hidden, false); }; // We are using custom event type because this method // used by both react-synthetic events and native events const onBlur = (0,react.useCallback)((event)=>{ const listEl = listRef.current; // do nothing if relatedTarget is contained within listboxEl if (!listEl || listEl.contains(event.relatedTarget)) { return; } // do nothing if the blur event is ignored if (ignoreBlur.current) { ignoreBlur.current = false; return; } // select current option and close if (!hidden) { updateOption(focusedIndex); updateSelectHiddenState(true, false); } }, [ updateOption, updateSelectHiddenState, hidden, focusedIndex ]); const focusOnOption = (index)=>{ const listEl = listRef.current; const optionEl = optionRefs.current[index]; if (!listEl || !optionEl) { return; } setFocusedIndex(index); // ensure the new option is in view if (isScrollable(listEl)) { maintainScrollVisibility(optionEl, listEl); } // ensure the new option is visible on screen if (!isElementInView(optionEl)) { optionEl.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); } }; /** * Depending on key it updates search string: * - if key is a letter, it appends it to the search string * - if key is backspace, it removes the last character from the search string * - if key is clear, it clears the search string * * And also setups a timeout to clear the search string after a certain time. * * @param key New character to append to the search string. * * @returns The updated search string. */ const getSearchString = (key)=>{ // reset typing timeout and start new timeout // this allows us to make multiple-letter matches, like a native select clearTimeout(searchTimeoutId.current); const CLEAR_TIMEOUT = 500; searchTimeoutId.current = setTimeout(()=>{ searchString.current = ''; }, CLEAR_TIMEOUT); if (key === helpers_SelectKey.Backspace) { searchString.current = searchString.current.slice(0, -1); } else if (key === helpers_SelectKey.Clear) { searchString.current = ''; } else { searchString.current += key; } return searchString.current; }; const onComboType = (key)=>{ // open the listbox if it is closed updateSelectHiddenState(false); // find the index of the first matching option const searchStringFromLetter = getSearchString(key); const searchIndex = getIndexByLetter(options, searchStringFromLetter, focusedIndex + 1); if (searchIndex >= 0) { // if a match was found, go to it focusOnOption(searchIndex); } else { // if no matches, clear the timeout and search string clearTimeout(searchTimeoutId.current); searchString.current = ''; } }; const onComboKeyDown = (event)=>{ const action = getActionFromKey(event, hidden); setIsKeyboardUsed(true); switch(action){ case helpers_SelectAction.Last: case helpers_SelectAction.First: updateSelectHiddenState(false); // intentional fallthrough case helpers_SelectAction.Next: case helpers_SelectAction.Previous: case helpers_SelectAction.PageUp: case helpers_SelectAction.PageDown: event.preventDefault(); return focusOnOption(getUpdatedIndex(focusedIndex, options.length - 1, action)); case helpers_SelectAction.Select: event.preventDefault(); updateOption(focusedIndex); // intentional fallthrough case helpers_SelectAction.Close: event.preventDefault(); return updateSelectHiddenState(true); case helpers_SelectAction.Type: return onComboType(event.key); case helpers_SelectAction.Open: event.preventDefault(); return updateSelectHiddenState(false); default: break; } }; const onOptionClick = (event, index)=>{ event.preventDefault(); focusOnOption(index); updateOption(index); updateSelectHiddenState(true); }; const onOptionMouseDown = ()=>{ ignoreBlur.current = true; }; (0,useOutsideClick/* .useOutsideClick */.j)(ref, closeSelect); (0,react.useLayoutEffect)(()=>{ const listEl = listRef.current; if (!listEl) { return; } // Use 'focusout' instead of 'blur', because 'blur' doesn't bubble listEl.addEventListener('focusout', onBlur); return ()=>{ listEl.removeEventListener('focusout', onBlur); }; }, [ onBlur ]); // cleanup refs after unmount (0,react.useEffect)(()=>{ return ()=>{ clearTimeout(searchTimeoutId.current); searchString.current = ''; }; }, []); if (!activeOption) { return null; } return /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { ref: ref, id: id, className: classes, children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)("button", { ref: comboRef, id: comboId, type: "button", role: "combobox", className: "select__value", "aria-controls": listId, "aria-expanded": !hidden, "aria-haspopup": "listbox", "aria-label": labelId ? undefined : label, "aria-labelledby": labelId, "aria-activedescendant": hidden ? undefined : getOptionId(focusedIndex), onClick: onComboClick, onBlur: onBlur, onKeyDown: onComboKeyDown, children: activeOption.title }), /*#__PURE__*/ (0,jsx_runtime.jsx)(Icon/* .Icon */.I, { id: "#select", className: "icon--select icon--gray-default select__ico", "aria-hidden": "true" }), /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { ref: listRef, id: listId, role: "listbox", className: listClasses, "aria-label": label, "aria-multiselectable": "false", tabIndex: -1, children: options.map((option, index)=>/* eslint-disable jsx-a11y/click-events-have-key-events */ /* eslint-disable jsx-a11y/interactive-supports-focus */ /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { ref: (ref)=>{ optionRefs.current[index] = ref; }, id: getOptionId(index), role: "option", className: getOptionClasses(index), "aria-selected": index === activeIndex, onClick: (event)=>onOptionClick(event, index), onMouseDown: onOptionMouseDown, children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)("span", { className: "select__item-text", children: option.title }), /*#__PURE__*/ (0,jsx_runtime.jsx)(Icon/* .Icon */.I, { id: "#tick", className: "icon icon--24 icon--green-default select__item-icon", "aria-hidden": "true" }) ] }, option.value)) }) ] }); }; ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/ui/Select/SelectWithContext.tsx /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ const SelectWithContext = ({ id, handler, options, value, popupModification = false, label, labelId })=>{ const [hidden, setHidden] = (0,SelectProvider/* .useSelect */.WM)(id); return /*#__PURE__*/ (0,jsx_runtime.jsx)(Select, { id: id, handler: handler, options: options, value: value, hidden: hidden, setHidden: setHidden, popupModification: popupModification, label: label, labelId: labelId }); }; ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/ui/Select/SelectWithoutContext.tsx /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ const SelectWithoutContext = ({ id, handler, options, value, popupModification = false, label, labelId })=>{ const [hidden, setHidden] = (0,react.useState)(true); return /*#__PURE__*/ (0,jsx_runtime.jsx)(Select, { id: id, handler: handler, options: options, value: value, hidden: hidden, setHidden: setHidden, popupModification: popupModification, label: label, labelId: labelId }); }; ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/ui/Select/SelectWrapper.tsx /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ const SelectWrapper = ({ id, handler, options, value, // Boolean flag indicating the need to render Select in a popup page with // almost the same business logic (useState instead of a hook with // Context.Provider), but a different layout: reverse order of icons, // smaller text, using all the space of the parent element. popupModification, label, labelId, withContext })=>{ const props = { id, handler, options, value, popupModification, label, labelId }; return withContext ? /*#__PURE__*/ (0,jsx_runtime.jsx)(SelectWithContext, { ...props }) : /*#__PURE__*/ (0,jsx_runtime.jsx)(SelectWithoutContext, { ...props }); }; ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/ui/Select/index.ts /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ }, 14876(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { m: () => (/* reexport */ Tooltip) }); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/jsx-runtime.js var jsx_runtime = __webpack_require__(7357); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/index.js var react = __webpack_require__(33353); // EXTERNAL MODULE: ./node_modules/.pnpm/classnames@2.3.2/node_modules/classnames/index.js var classnames = __webpack_require__(52996); var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js var injectStylesIntoStyleTag = __webpack_require__(42604); var injectStylesIntoStyleTag_default = /*#__PURE__*/__webpack_require__.n(injectStylesIntoStyleTag); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/styleDomAPI.js var styleDomAPI = __webpack_require__(91605); var styleDomAPI_default = /*#__PURE__*/__webpack_require__.n(styleDomAPI); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/insertBySelector.js var insertBySelector = __webpack_require__(70103); var insertBySelector_default = /*#__PURE__*/__webpack_require__.n(insertBySelector); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js var setAttributesWithoutAttributes = __webpack_require__(11556); var setAttributesWithoutAttributes_default = /*#__PURE__*/__webpack_require__.n(setAttributesWithoutAttributes); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/insertStyleElement.js var insertStyleElement = __webpack_require__(71712); var insertStyleElement_default = /*#__PURE__*/__webpack_require__.n(insertStyleElement); // EXTERNAL MODULE: ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.97.1_@swc+core@1.11.21_/node_modules/style-loader/dist/runtime/styleTagTransform.js var styleTagTransform = __webpack_require__(16077); var styleTagTransform_default = /*#__PURE__*/__webpack_require__.n(styleTagTransform); // EXTERNAL MODULE: ./node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.6.6_webpack@5.97.1_@swc+core@1.11.21_/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/.pnpm/postcss-loader@8.1.1_@rspack+core@1.6.6_postcss@8.4.49_typescript@5.6.3_webpack@5.97.1_@swc+core@1.11.21_/node_modules/postcss-loader/dist/cjs.js!./Extension/src/pages/common/components/ui/Tooltip/tooltip.pcss var tooltip = __webpack_require__(33965); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/ui/Tooltip/tooltip.pcss var options = {}; options.styleTagTransform = (styleTagTransform_default()); options.setAttributes = (setAttributesWithoutAttributes_default()); options.insert = insertBySelector_default().bind(null, "head"); options.domAPI = (styleDomAPI_default()); options.insertStyleElement = (insertStyleElement_default()); var update = injectStylesIntoStyleTag_default()(tooltip/* ["default"] */.A, options); /* export default */ const Tooltip_tooltip = (tooltip/* ["default"] */.A && tooltip/* ["default"].locals */.A.locals ? tooltip/* ["default"].locals */.A.locals : undefined); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/ui/Tooltip/Tooltip.tsx /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ const Tooltip = ({ text, visible, fixedWidth })=>{ return /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { className: classnames_default()('tooltip', { 'tooltip--on': visible, 'tooltip--off': !visible, 'tooltip--fixed-width': fixedWidth }), children: text }); }; ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/ui/Tooltip/index.ts /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ }, 17948(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { H: () => (useAppearanceTheme) }); /* import */ var react__rspack_import_0 = __webpack_require__(33353); /* import */ var lodash_es__rspack_import_1 = __webpack_require__(69395); /* import */ var _common_constants__rspack_import_2 = __webpack_require__(88819); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ const useAppearanceTheme = (appearanceTheme)=>{ (0,react__rspack_import_0.useLayoutEffect)(()=>{ const STORAGE_KEY = 'appearance_theme'; const DARK_THEME_CLASS = 'dark-mode'; const LIGHT_THEME_CLASS = 'light-mode'; const SET_TO_STORAGE_TIMEOUT = 500; const throttledSetToStorage = (0,lodash_es__rspack_import_1/* ["default"] */.A)((mode)=>{ localStorage.setItem(STORAGE_KEY, mode); }, SET_TO_STORAGE_TIMEOUT); let theme = appearanceTheme; if (!theme) { theme = localStorage.getItem(STORAGE_KEY); } else { throttledSetToStorage(theme); } switch(theme){ case _common_constants__rspack_import_2/* .AppearanceTheme.Dark */.i0.Dark: { document.documentElement.classList.add(DARK_THEME_CLASS); document.documentElement.classList.remove(LIGHT_THEME_CLASS); break; } case _common_constants__rspack_import_2/* .AppearanceTheme.Light */.i0.Light: { document.documentElement.classList.add(LIGHT_THEME_CLASS); document.documentElement.classList.remove(DARK_THEME_CLASS); break; } default: { document.documentElement.classList.remove(DARK_THEME_CLASS); document.documentElement.classList.remove(LIGHT_THEME_CLASS); } } }, [ appearanceTheme ]); }; }, 67502(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { D: () => (usePreventUnload) }); /* import */ var react__rspack_import_0 = __webpack_require__(33353); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * The main use case for this hook is to trigger a browser-generated confirmation * dialog depending on `blockCondition` flag that asks users to confirm if they really * want to leave the page when they try to close or reload it, * or navigate somewhere else (by manually typing url in search bar). * This is intended to help prevent loss of unsaved data. * * @param shouldPreventUnload If true, blocks unload of page and show browser-generated dialog. * @param browserDialogMessage Custom message for browser-generated dialog (Browser support list: https://caniuse.com/mdn-api_beforeunloadevent_returnvalue). Keep in mind that some browsers can support custom messages, but in fact can ignore that value. */ const usePreventUnload = (shouldPreventUnload, browserDialogMessage)=>{ (0,react__rspack_import_0.useEffect)(()=>{ const onBeforeUnload = (e)=>{ if (!shouldPreventUnload) { return; } e.preventDefault(); e.returnValue = browserDialogMessage; return browserDialogMessage; }; window.addEventListener('beforeunload', onBeforeUnload); return ()=>{ window.removeEventListener('beforeunload', onBeforeUnload); }; }, [ shouldPreventUnload, browserDialogMessage ]); }; }, 85268(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { q: () => (/* reexport */ LocalPageStorage) }); // EXTERNAL MODULE: ./Extension/src/common/logger.ts var logger = __webpack_require__(42228); ;// CONCATENATED MODULE: ./Extension/src/pages/common/storage/LocalPageStorage.ts /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /** * Base class for page-level localStorage wrappers. * * Provides a consistent interface for storing and retrieving page-specific UI settings * that don't require extension-level persistence or cross-device synchronization. * Uses localStorage for storage, which persists data locally within the browser profile. * * Child classes must define DEFAULTS object with default values for all storage keys. * * @example * ```ts * class MyPageStorage extends LocalPageStorage { * protected DEFAULTS = { mySetting: 'defaultValue' }; * } * ``` */ class LocalPageStorage { /** * Set item to storage. * * @param key Key to set. * @param value Value to set. */ setItem(key, value) { try { this.storage.setItem(key, JSON.stringify(value)); } catch (e) { logger/* .logger.error */.v.error('[ext.LocalPageStorage.setItem]: error: ', e); } } /** * Get item from storage. * * @param key Key to get. * * @returns Value from storage. */ getItem(key) { let storedValue = null; const item = this.storage.getItem(key); if (item !== null) { try { storedValue = JSON.parse(item); } catch (e) { logger/* .logger.error */.v.error('[ext.LocalPageStorage.getItem]: error: ', e); } } return storedValue === null ? this.DEFAULTS[key] : storedValue; } constructor(){ /** * Storage object */ _define_property(this, "storage", void 0); this.storage = localStorage; } } ;// CONCATENATED MODULE: ./Extension/src/pages/common/storage/index.ts /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ }, 51169(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { F: () => (/* reexport */ TelemetryStore), p: () => (/* reexport */ useTelemetryPageViewEvent) }); // EXTERNAL MODULE: ./node_modules/.pnpm/mobx@6.9.0/node_modules/mobx/dist/mobx.esm.js var mobx_esm = __webpack_require__(37350); // EXTERNAL MODULE: ./Extension/src/common/logger.ts var logger = __webpack_require__(42228); // EXTERNAL MODULE: ./Extension/src/pages/services/messenger/index.ts var messenger = __webpack_require__(32706); ;// CONCATENATED MODULE: ./Extension/src/pages/common/telemetry/TelemetryStore.ts /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _ts_decorate(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; } function _ts_metadata(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); } /** * Telemetry store. * * This store is integrated into both popup and option page's * global stores. This is why it's located in the common folder. */ class TelemetryStore { /** * Gets whether anonymized usage data is allowed. */ get isAnonymizedUsageDataAllowed() { return this.allowAnonymizedUsageData; } constructor(){ /** * Is anonymized usage data allowed. */ _define_property(this, "allowAnonymizedUsageData", false); /** * ID of the current page. */ _define_property(this, "pageId", null); /** * Sets the "is anonymized usage data allowed" setting. * * NOTE: This method should be called only on initialization * and when value is changed from background, never call it directly. * * @param isAnonymizedUsageDataAllowed Is anonymized usage data allowed. */ _define_property(this, "setIsAnonymizedUsageDataAllowed", (isAnonymizedUsageDataAllowed)=>{ this.allowAnonymizedUsageData = isAnonymizedUsageDataAllowed; }); /** * Sets the page ID. * * @param pageId Page ID. */ _define_property(this, "setPageId", (pageId)=>{ // Guard against multiple calls, allow to set page ID only once or to `null` if (this.pageId && pageId) { logger/* .logger.error */.v.error(`[ext.TelemetryStore]: Cannot set page ID: already set to '${this.pageId}'`); return; } this.pageId = pageId; }); /** * Removes previously added opened page from telemetry service. * * Note: This method should be called only from options page, * for popup page we have separate handling based on background connection, * since popup page does not fires unload event. */ _define_property(this, "removeOpenedPage", async ()=>{ try { if (!this.pageId) { return; } // Delete from store first to prevent race condition const { pageId } = this; (0,mobx_esm/* .runInAction */.h5)(()=>{ this.pageId = null; }); await messenger/* .messenger.removeTelemetryOpenedPage */.ee.removeTelemetryOpenedPage(pageId); } catch (e) { logger/* .logger.debug */.v.debug('[ext.TelemetryStore]: Failed to remove opened page from telemetry service', e); } }); /** * Sends a message to the background to send a page view telemetry event if telemetry is enabled. * * NOTE: Do not await this function, as it is not necessary to wait for the response. * * @param screenName Name of the screen. */ _define_property(this, "sendPageViewEvent", async (screenName)=>{ try { if (!this.isAnonymizedUsageDataAllowed) { return; } if (!this.pageId) { logger/* .logger.error */.v.error(`[ext.TelemetryStore]: Cannot send page view telemetry event: missing page ID for screen '${screenName}'`); return; } await messenger/* .messenger.sendTelemetryPageViewEvent */.ee.sendTelemetryPageViewEvent(screenName, this.pageId); } catch (e) { logger/* .logger.debug */.v.debug('[ext.TelemetryStore]: Failed to send page view telemetry event', e); } }); /** * Sends a message to the background to send a custom telemetry event if telemetry is enabled. * * NOTE: Do not await this function, as it is not necessary to wait for the response. * * @param eventName Name of the custom telemetry event. * @param screenName Name of the screen where the event occurred. */ _define_property(this, "sendCustomEvent", async (eventName, screenName)=>{ try { if (!this.isAnonymizedUsageDataAllowed) { return; } await messenger/* .messenger.sendTelemetryCustomEvent */.ee.sendTelemetryCustomEvent(screenName, eventName); } catch (e) { logger/* .logger.debug */.v.debug('[ext.TelemetryStore]: Failed to send custom telemetry event', e); } }); } } _ts_decorate([ mobx_esm/* .observable */.sH ], TelemetryStore.prototype, "allowAnonymizedUsageData", void 0); _ts_decorate([ mobx_esm/* .computed */.EW, _ts_metadata("design:type", Boolean), _ts_metadata("design:paramtypes", []) ], TelemetryStore.prototype, "isAnonymizedUsageDataAllowed", null); _ts_decorate([ mobx_esm/* .observable */.sH, _ts_metadata("design:type", Object) ], TelemetryStore.prototype, "pageId", void 0); _ts_decorate([ mobx_esm/* .action */.XI ], TelemetryStore.prototype, "setIsAnonymizedUsageDataAllowed", void 0); _ts_decorate([ mobx_esm/* .action */.XI ], TelemetryStore.prototype, "setPageId", void 0); _ts_decorate([ mobx_esm/* .action */.XI ], TelemetryStore.prototype, "removeOpenedPage", void 0); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/index.js var react = __webpack_require__(33353); ;// CONCATENATED MODULE: ./Extension/src/pages/common/telemetry/useTelemetryPageViewEvent.ts /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * Hook that sends a page view telemetry event when the component is mounted. * * The event is sent once on component mount with the specified screen name. * The backend tracks screen navigation using pageId from the telemetry store. * * @param telemetryStore Telemetry store instance. * @param screenName Name of the screen to be logged in telemetry. */ function useTelemetryPageViewEvent(telemetryStore, screenName) { (0,react.useEffect)(()=>{ if (!telemetryStore.pageId) { return; } telemetryStore.sendPageViewEvent(screenName); }, [ telemetryStore, screenName, telemetryStore.pageId, telemetryStore.isAnonymizedUsageDataAllowed ]); } ;// CONCATENATED MODULE: ./Extension/src/pages/common/telemetry/index.ts /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ }, 39046(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { _: () => (NotificationType) }); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * Notification type. */ var NotificationType = /*#__PURE__*/ function(NotificationType) { /** * Notification type for loading state. The icon should be animated. */ NotificationType["Loading"] = "loading"; /** * Notification type for success state. */ NotificationType["Success"] = "success"; /** * Notification type for error state. */ NotificationType["Error"] = "error"; return NotificationType; }({}); }, 48225(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { g: () => (getFirstNonDisabledElement) }); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * Retrieves first non-disabled element from parent element * * @param root Root element to search for descendant elements * @param selectors Descendants selector * * @returns First non-disabled element or null if not found */ function getFirstNonDisabledElement(root, selectors) { const elements = root.querySelectorAll(selectors); for(let i = 0; i < elements.length; i += 1){ const element = elements[i]; if (element instanceof HTMLElement && (!('disabled' in element) || !element.disabled)) { return element; } } return null; } }, 9899(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { Rz: () => (exportData), m6: () => (ExportTypes) }); /* import */ var core_js_modules_web_url_search_params_delete_js__rspack_import_0 = __webpack_require__(70279); /* import */ var core_js_modules_web_url_search_params_delete_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_delete_js__rspack_import_0); /* import */ var core_js_modules_web_url_search_params_has_js__rspack_import_1 = __webpack_require__(16786); /* import */ var core_js_modules_web_url_search_params_has_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_has_js__rspack_import_1); /* import */ var core_js_modules_web_url_search_params_size_js__rspack_import_2 = __webpack_require__(77269); /* import */ var core_js_modules_web_url_search_params_size_js__rspack_import_2_default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_size_js__rspack_import_2); /* import */ var date_fns__rspack_import_4 = __webpack_require__(72664); /* import */ var _services_messenger__rspack_import_3 = __webpack_require__(32706); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * Export types. * * @readonly * @enum {string} */ var ExportTypes = /*#__PURE__*/ function(ExportTypes) { ExportTypes["UserFilter"] = "user_filter"; ExportTypes["Allowlist"] = "allow_list"; ExportTypes["Settings"] = "settings"; return ExportTypes; }({}); const exportMetadata = { ["user_filter"]: { name: 'user_rules', getData: ()=>_services_messenger__rspack_import_3/* .messenger.getUserRules */.ee.getUserRules(), ext: 'txt' }, ["allow_list"]: { name: 'allowlist', getData: ()=>_services_messenger__rspack_import_3/* .messenger.getAllowlistDomains */.ee.getAllowlistDomains(), ext: 'txt' }, ["settings"]: { name: 'settings', getData: ()=>_services_messenger__rspack_import_3/* .messenger.loadSettingsJson */.ee.loadSettingsJson(), ext: 'json' } }; /** * Generates filename for exported `type`. * * @param type Type of export * @param appVersion App version * * @returns Filename */ const getExportedSettingsFilename = (type, appVersion)=>{ const { name, ext } = exportMetadata[type]; const product = `adg_ext_${name}`; const currentTimeString = (0,date_fns__rspack_import_4/* .format */.GP)(Date.now(), 'ddMMyy-HHmmss'); return `${product}_${appVersion}_${currentTimeString}.${ext}`; }; /** * Exports data to file and downloads it in browser. * * @param type Type of export */ const exportData = async (type)=>{ const { getData } = exportMetadata[type]; const { content, appVersion } = await getData(); const filename = getExportedSettingsFilename(type, appVersion); const blob = new Blob([ content ]); const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.style.display = 'none'; link.href = url; link.download = filename; document.body.appendChild(link); link.click(); link.remove(); URL.revokeObjectURL(url); }; }, 66137(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { l: () => (isDuplicateNotification) }); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * Checks whether an existing notification is a duplicate of the one being added. * * Two notifications are considered duplicates when their `type` matches and: * - either side provides a `dedupeKey`: compared by `dedupeKey` (required for * `ReactNode`/JSX text, which is never referentially equal); OR * - neither provides a `dedupeKey`: falls back to `text` comparison (only * meaningful for plain-string notifications). * * @param existing Notification already present in the list. * @param params Notification parameters about to be added. * * @returns `true` if `existing` is a duplicate of `params`. */ const isDuplicateNotification = (existing, params)=>{ if (existing.type !== params.type) { return false; } if (params.dedupeKey !== undefined || existing.dedupeKey !== undefined) { return existing.dedupeKey === params.dedupeKey; } return existing.text === params.text; }; }, 37688(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { $: () => (getDynamicWarningMessage), E: () => (getStaticWarningMessage) }); /* import */ var _common_translators_translator__rspack_import_0 = __webpack_require__(78466); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ /** * Returns a warning message based on the data. * * @param data Result of limits check of static rules. * * @returns Warning message or null if the data is invalid. */ const getStaticWarningMessage = (data)=>{ const { filtersCount, rulesCount, rulesRegexpsCount } = data; if (filtersCount) { if (filtersCount.expected !== undefined && filtersCount.current !== undefined) { return _common_translators_translator__rspack_import_0/* .translator.getMessage */.N.getMessage('options_all_limits_exceeded_warning_browser', { current: filtersCount.current, expected: filtersCount.expected }); } if (filtersCount.maximum !== undefined && filtersCount.current !== undefined) { return _common_translators_translator__rspack_import_0/* .translator.getMessage */.N.getMessage('options_limits_warning_static_filters_browser', { current: filtersCount.current, maximum: filtersCount.maximum }); } } if (rulesCount) { return _common_translators_translator__rspack_import_0/* .translator.getMessage */.N.getMessage('options_limits_warning_static_filters_browser', { current: rulesCount.current, maximum: rulesCount.maximum }); } if (rulesRegexpsCount) { return _common_translators_translator__rspack_import_0/* .translator.getMessage */.N.getMessage('options_limits_warning_static_regex_rules_no_counter'); } return null; }; /** * Returns a warning message based on the data. * * @param data Result of limits check of dynamic rules. * * @returns Warning message or null if the data is invalid. */ const getDynamicWarningMessage = (data)=>{ const { rulesCount, rulesRegexpsCount, rulesUnsafeCount } = data; if (rulesCount) { return _common_translators_translator__rspack_import_0/* .translator.getMessage */.N.getMessage('options_limits_warning_dynamic_rules_hint', { current: rulesCount.current, maximum: rulesCount.maximum }); } if (rulesRegexpsCount) { return _common_translators_translator__rspack_import_0/* .translator.getMessage */.N.getMessage('options_limits_warning_dynamic_regex_rules_hint', { current: rulesRegexpsCount.current, maximum: rulesRegexpsCount.maximum }); } if (rulesUnsafeCount) { return _common_translators_translator__rspack_import_0/* .translator.getMessage */.N.getMessage('options_limits_warning_dynamic_unsafe_rules', { current: rulesUnsafeCount.current, maximum: rulesUnsafeCount.maximum }); } return null; }; }, 91788(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { Gt: () => (containsIgnoreCase), K2: () => (updateFilterDescription), UK: () => (isVerticalScroll), WI: () => (measureTextWidth), i_: () => (handleFileUpload), lW: () => (copyToClipboard), mJ: () => (getFilterName), w5: () => (findChunks), wh: () => (passiveEventSupported) }); /* import */ var core_js_modules_es_error_cause_js__rspack_import_0 = __webpack_require__(38796); /* import */ var core_js_modules_es_error_cause_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_error_cause_js__rspack_import_0); /* import */ var core_js_modules_es_array_push_js__rspack_import_1 = __webpack_require__(75126); /* import */ var core_js_modules_es_array_push_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__rspack_import_1); /* import */ var _common_constants__rspack_import_5 = __webpack_require__(88819); /* import */ var _common_translators_translator__rspack_import_2 = __webpack_require__(78466); /* import */ var _common_constants__rspack_import_3 = __webpack_require__(81166); /* import */ var _common_types__rspack_import_4 = __webpack_require__(39046); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ const getFilenameExtension = (filename)=>{ if (!filename) { return undefined; } const parts = filename.split('.'); if (parts.length < 2) { return undefined; } return parts[parts.length - 1]; }; /** * Handles file upload * * @param file File to upload. * @param requiredExtension Required file extension. * * @returns Promise that resolves with file content as string if file is uploaded successfully, * and rejects with error message otherwise. */ const handleFileUpload = (file, requiredExtension)=>{ return new Promise((resolve, reject)=>{ if (getFilenameExtension(file.name) !== requiredExtension) { reject(new Error(_common_translators_translator__rspack_import_2/* .translator.getMessage */.N.getMessage('options_popup_import_settings_wrong_file_ext', { extension: requiredExtension }), { cause: _common_constants__rspack_import_3/* .FILE_WRONG_EXTENSION_CAUSE */.VD })); } const reader = new FileReader(); reader.readAsText(file, 'UTF-8'); reader.onload = (event)=>{ if (event.target) { // @ts-ignore resolve(event.target.result); } }; reader.onerror = ()=>{ reject(new Error(_common_translators_translator__rspack_import_2/* .translator.getMessage */.N.getMessage('options_popup_import_error_file_description'))); }; }); }; const indexOfIgnoreCase = (str, searchString)=>{ return str.toLowerCase().indexOf(searchString.toLowerCase()); }; const containsIgnoreCase = (str, searchString)=>{ return !!(str && searchString && indexOfIgnoreCase(str, searchString) >= 0); }; const findChunks = (str, searchString, chunks = [])=>{ const ind = indexOfIgnoreCase(str, searchString); if (ind > -1) { chunks.push(str.slice(0, ind)); chunks.push(str.slice(ind, ind + searchString.length)); const restStr = str.slice(ind + searchString.length); if (containsIgnoreCase(restStr, searchString)) { findChunks(restStr, searchString, chunks); } else { chunks.push(restStr); } } return chunks.filter((i)=>!!i); }; const passiveEventSupported = (()=>{ let passiveSupported = null; return ()=>{ // memoize support to avoid adding multiple test events if (typeof passiveSupported === 'boolean') { return passiveSupported; } let supported = false; try { const options = { get passive () { supported = true; return false; } }; // @ts-ignore window.addEventListener('test', null, options); // @ts-ignore window.removeEventListener('test', null, options); } catch (err) { supported = false; } passiveSupported = supported; return passiveSupported; }; })(); const copyToClipboard = (text)=>{ const textarea = document.createElement('textarea'); textarea.innerText = text; // @ts-ignore textarea.style = ` position: absolute; display: hidden; width: 0; height: 0; `; document.body.appendChild(textarea); textarea.select(); document.execCommand('copy'); textarea.remove(); }; const measureTextWidth = (text)=>{ const el = document.createElement('p'); el.innerText = text; // @ts-ignore el.style = ` position: absolute; display: hidden; height: 0; white-space: nowrap; font-family: 'Roboto Flex', system-ui; font-size: 14px; `; document.body.appendChild(el); const pxLength = el.clientWidth; el.remove(); return pxLength; }; /** * Calculates the angle of radius vector of the scroll motion * and detect whether scroll is vertical * * @param deltaY Wheel event deltaY value. * @param deltaX Wheel event deltaX value. * * @returns True if scroll is vertical, false otherwise. */ const isVerticalScroll = (()=>{ const degToRad = (deg)=>deg * (Math.PI / 180); const deg60ToRad = degToRad(60); const deg90ToRad = degToRad(90); const deg120ToRad = degToRad(120); const deg240ToRad = degToRad(240); const deg270ToRad = degToRad(270); const deg300ToRad = degToRad(300); return (deltaY, deltaX)=>{ if (deltaY === 0) { return false; } let angle = Math.atan(deltaX / deltaY); angle = deltaY > 0 ? angle + deg90ToRad : angle + deg270ToRad; return angle > deg60ToRad && angle < deg120ToRad || angle > deg240ToRad && angle < deg300ToRad; }; })(); /** * Checks the length of the array with filters and returns the contents for notification. * * @param updatedFilters Array with updated filters. * * @returns Object with title and description describing error if `updatedFilters` is not provided, * otherwise description with information about updated filters. */ const updateFilterDescription = (updatedFilters)=>{ if (!updatedFilters) { return { type: _common_types__rspack_import_4/* .NotificationType.Error */._.Error, text: _common_translators_translator__rspack_import_2/* .translator.getMessage */.N.getMessage('options_popup_update_error') }; } const filterNames = updatedFilters.map((filter)=>filter.name).join(', '); // no updated filters let text = `${filterNames} ${_common_translators_translator__rspack_import_2/* .translator.getMessage */.N.getMessage('options_popup_update_not_found')}`; if (updatedFilters.length === 1) { text = `${filterNames} ${_common_translators_translator__rspack_import_2/* .translator.getMessage */.N.getMessage('options_popup_update_filter')}`; } else if (updatedFilters.length > 1) { text = `${filterNames} ${_common_translators_translator__rspack_import_2/* .translator.getMessage */.N.getMessage('options_popup_update_filters')}`; } return { type: _common_types__rspack_import_4/* .NotificationType.Success */._.Success, text }; }; /** * Returns filter name for filterId. * * @param filterId Filter id. * @param filtersMetadata Filters metadata. * * @returns Filter name for filterId. */ const getFilterName = (filterId, filtersMetadata)=>{ if (filterId === undefined || !filtersMetadata) { return null; } if (filterId === _common_constants__rspack_import_5/* .AntiBannerFiltersId.UserFilterId */.j8.UserFilterId) { return _common_translators_translator__rspack_import_2/* .translator.getMessage */.N.getMessage('options_userfilter'); } if (filterId === _common_constants__rspack_import_5/* .AntiBannerFiltersId.AllowlistFilterId */.j8.AllowlistFilterId) { return _common_translators_translator__rspack_import_2/* .translator.getMessage */.N.getMessage('options_allowlist'); } const filterMetadata = filtersMetadata.find((el)=>el.filterId === filterId); return filterMetadata ? filterMetadata.name : null; }; }, 52433(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { CY: () => (WEBSITE_URL), Do: () => (CHANGELOG_URL), Dt: () => (GLOBAL_PRIVACY_CONTROL_URL), Kv: () => (HOW_TO_CREATE_RULES_URL), LN: () => (ACCEPTABLE_ADS_LEARN_MORE_URL), Oe: () => (GITHUB_URL), Vx: () => (ACKNOWLEDGMENTS_URL), Z0: () => (BUG_REPORT_MV3_URL), e2: () => (DO_NOT_TRACK_URL), eY: () => (FILTER_POLICY_URL), kk: () => (FILTERING_LOG_ASSUMED_RULE_URL), pk: () => (PRIVACY_URL), qo: () => (USER_SCRIPTS_API_REQUIRED_URL), vM: () => (DISCUSS_URL), zV: () => (COLLECT_HITS_LEARN_MORE_URL) }); /* import */ var _common_forward__rspack_import_0 = __webpack_require__(59387); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ const PRIVACY_URL = _common_forward__rspack_import_0/* .Forward.get */.w8.get({ action: _common_forward__rspack_import_0/* .ForwardAction.Privacy */.u2.Privacy, from: _common_forward__rspack_import_0/* .ForwardFrom.Options */.S9.Options }); const ACKNOWLEDGMENTS_URL = _common_forward__rspack_import_0/* .Forward.get */.w8.get({ action: _common_forward__rspack_import_0/* .ForwardAction.Acknowledgments */.u2.Acknowledgments, from: _common_forward__rspack_import_0/* .ForwardFrom.Options */.S9.Options }); const GITHUB_URL = _common_forward__rspack_import_0/* .Forward.get */.w8.get({ action: _common_forward__rspack_import_0/* .ForwardAction.Github */.u2.Github, from: _common_forward__rspack_import_0/* .ForwardFrom.Options */.S9.Options }); const WEBSITE_URL = _common_forward__rspack_import_0/* .Forward.get */.w8.get({ action: _common_forward__rspack_import_0/* .ForwardAction.Website */.u2.Website, from: _common_forward__rspack_import_0/* .ForwardFrom.OptionsFooter */.S9.OptionsFooter }); const DISCUSS_URL = _common_forward__rspack_import_0/* .Forward.get */.w8.get({ action: _common_forward__rspack_import_0/* .ForwardAction.Discuss */.u2.Discuss, from: _common_forward__rspack_import_0/* .ForwardFrom.Options */.S9.Options }); const COMPARE_URL = _common_forward__rspack_import_0/* .Forward.get */.w8.get({ action: _common_forward__rspack_import_0/* .ForwardAction.Compare */.u2.Compare, from: _common_forward__rspack_import_0/* .ForwardFrom.Options */.S9.Options }); const CHANGELOG_URL = _common_forward__rspack_import_0/* .Forward.get */.w8.get({ action: _common_forward__rspack_import_0/* .ForwardAction.Changelog */.u2.Changelog, from: _common_forward__rspack_import_0/* .ForwardFrom.Options */.S9.Options }); const GLOBAL_PRIVACY_CONTROL_URL = _common_forward__rspack_import_0/* .Forward.get */.w8.get({ action: _common_forward__rspack_import_0/* .ForwardAction.GlobalPrivacyControl */.u2.GlobalPrivacyControl, from: _common_forward__rspack_import_0/* .ForwardFrom.Options */.S9.Options }); const DO_NOT_TRACK_URL = _common_forward__rspack_import_0/* .Forward.get */.w8.get({ action: _common_forward__rspack_import_0/* .ForwardAction.DoNotTrack */.u2.DoNotTrack, from: _common_forward__rspack_import_0/* .ForwardFrom.Options */.S9.Options }); const HOW_TO_CREATE_RULES_URL = _common_forward__rspack_import_0/* .Forward.get */.w8.get({ action: _common_forward__rspack_import_0/* .ForwardAction.HowToCreateRules */.u2.HowToCreateRules, from: _common_forward__rspack_import_0/* .ForwardFrom.Options */.S9.Options }); const FILTER_POLICY_URL = _common_forward__rspack_import_0/* .Forward.get */.w8.get({ action: _common_forward__rspack_import_0/* .ForwardAction.FilterPolicy */.u2.FilterPolicy, from: _common_forward__rspack_import_0/* .ForwardFrom.Options */.S9.Options }); const ACCEPTABLE_ADS_LEARN_MORE_URL = _common_forward__rspack_import_0/* .Forward.get */.w8.get({ action: _common_forward__rspack_import_0/* .ForwardAction.SelfPromotion */.u2.SelfPromotion, from: _common_forward__rspack_import_0/* .ForwardFrom.Options */.S9.Options }); const SAFEBROWSING_LEARN_MORE_URL = _common_forward__rspack_import_0/* .Forward.get */.w8.get({ action: _common_forward__rspack_import_0/* .ForwardAction.ProtectionWorks */.u2.ProtectionWorks, from: _common_forward__rspack_import_0/* .ForwardFrom.Options */.S9.Options }); const BUG_REPORT_URL = _common_forward__rspack_import_0/* .Forward.get */.w8.get({ action: _common_forward__rspack_import_0/* .ForwardAction.BugReport */.u2.BugReport, from: _common_forward__rspack_import_0/* .ForwardFrom.Options */.S9.Options }); const BUG_REPORT_MV3_URL = _common_forward__rspack_import_0/* .Forward.get */.w8.get({ action: _common_forward__rspack_import_0/* .ForwardAction.BugReportMv3 */.u2.BugReportMv3, from: _common_forward__rspack_import_0/* .ForwardFrom.Options */.S9.Options }); const FILTERING_LOG_ASSUMED_RULE_URL = _common_forward__rspack_import_0/* .Forward.get */.w8.get({ action: _common_forward__rspack_import_0/* .ForwardAction.FilteringLogAssumedRule */.u2.FilteringLogAssumedRule, from: _common_forward__rspack_import_0/* .ForwardFrom.FilteringLog */.S9.FilteringLog }); const COLLECT_HITS_LEARN_MORE_URL = _common_forward__rspack_import_0/* .Forward.get */.w8.get({ action: _common_forward__rspack_import_0/* .ForwardAction.CollectHitsLearnMore */.u2.CollectHitsLearnMore, from: _common_forward__rspack_import_0/* .ForwardFrom.Options */.S9.Options }); const USER_SCRIPTS_API_REQUIRED_URL = _common_forward__rspack_import_0/* .Forward.get */.w8.get({ action: _common_forward__rspack_import_0/* .ForwardAction.UserScriptsApiRequired */.u2.UserScriptsApiRequired, from: _common_forward__rspack_import_0/* .ForwardFrom.Options */.S9.Options }); }, 32706(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { YW: () => (/* reexport safe */ _messenger_common__rspack_import_1.Y), e0: () => (/* reexport safe */ _messenger_common__rspack_import_1.H), ee: () => (/* reexport safe */ messenger__rspack_import_0.N) }); /* import */ var messenger__rspack_import_0 = __webpack_require__(2036); /* import */ var _messenger_common__rspack_import_1 = __webpack_require__(28339); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ }, 28339(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { H: () => (MessengerCommon), Y: () => (Page) }); /* import */ var core_js_modules_es_array_includes_js__rspack_import_0 = __webpack_require__(45403); /* import */ var core_js_modules_es_array_includes_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__rspack_import_0); /* import */ var webextension_polyfill__rspack_import_1 = __webpack_require__(28467); /* import */ var webextension_polyfill__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(webextension_polyfill__rspack_import_1); /* import */ var nanoid__rspack_import_4 = __webpack_require__(6500); /* import */ var _common_logger__rspack_import_2 = __webpack_require__(42228); /* import */ var _common_messages__rspack_import_3 = __webpack_require__(8115); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var Page = /*#__PURE__*/ function(Page) { Page["FullscreenUserRules"] = "fullscreen-user-rules"; Page["FilteringLog"] = "filtering-log"; Page["Popup"] = "popup"; return Page; }({}); /** * MessengerCommon class, used to communicate with the background page from the UI. * Actually, it's a wrapper around the browser.runtime.sendMessage method. */ class MessengerCommon { /** * Sends a message to the background page. * * All messages described in the {@link MessageType} enum. * All answers described in the {@link MessageMap} type. * * @param type Message type. * @param data Message data. Optional because not all messages have data. * * @returns Promise that resolves with the response from the background page. * Type of the response depends on the message type. Go to {@link MessageMap} * to see all possible message types and their responses. */ // eslint-disable-next-line class-methods-use-this async sendMessage(type, data) { const response = await webextension_polyfill__rspack_import_1_default().runtime.sendMessage({ handlerName: _common_messages__rspack_import_3/* .APP_MESSAGE_HANDLER_NAME */.zk, type, data }); return response; } constructor(){ _define_property(this, "onMessage", (webextension_polyfill__rspack_import_1_default().runtime.onMessage)); /** * Method subscribes to notifier module events. * * @param events List of events to which subscribe. * @param callback Callback called when event fires. * @param onUnloadCallback Callback used to remove listener on unload. * * @returns Function to remove listener on unload. */ _define_property(this, "createEventListener", async (events, callback, onUnloadCallback)=>{ let listenerId; const response = await this.sendMessage(_common_messages__rspack_import_3/* .MessageType.CreateEventListener */.Go.CreateEventListener, { events }); listenerId = response.listenerId; const onUpdateListeners = async ()=>{ const updatedResponse = await this.sendMessage(_common_messages__rspack_import_3/* .MessageType.CreateEventListener */.Go.CreateEventListener, { events }); listenerId = updatedResponse.listenerId; }; const messageHandler = (message)=>{ if (!(0,_common_messages__rspack_import_3/* .messageHasTypeField */.Et)(message)) { _common_logger__rspack_import_2/* .logger.error */.v.error('[ext.MessengerCommon]: received message in MessengerCommon.createEventListener has no type field:', message); return undefined; } if (message.type === _common_messages__rspack_import_3/* .MessageType.NotifyListeners */.Go.NotifyListeners) { if (!(0,_common_messages__rspack_import_3/* .messageHasTypeAndDataFields */.oL)(message)) { _common_logger__rspack_import_2/* .logger.error */.v.error('[ext.MessengerCommon]: received message with type MessageType.NotifyListeners has no data:', message); return undefined; } const castedMessage = message; const [type, ...data] = castedMessage.data; if (events.includes(type)) { callback({ type, data }); } } if (message.type === _common_messages__rspack_import_3/* .MessageType.UpdateListeners */.Go.UpdateListeners) { onUpdateListeners(); } }; const onUnload = ()=>{ if (!listenerId) { return; } webextension_polyfill__rspack_import_1_default().runtime.onMessage.removeListener(messageHandler); window.removeEventListener('beforeunload', onUnload); window.removeEventListener('unload', onUnload); this.sendMessage(_common_messages__rspack_import_3/* .MessageType.RemoveListener */.Go.RemoveListener, { listenerId }); listenerId = null; if (typeof onUnloadCallback === 'function') { onUnloadCallback(); } }; webextension_polyfill__rspack_import_1_default().runtime.onMessage.addListener(messageHandler); window.addEventListener('beforeunload', onUnload); window.addEventListener('unload', onUnload); return onUnload; }); /** * Sends a message from background page to update listeners on the UI. * * @returns Promise that resolves when the message is sent. */ _define_property(this, "updateListeners", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.UpdateListeners */.Go.UpdateListeners); }); /** * Sends a message to the background page to get the settings data for * the options page with some additional info. * * @returns Promise that resolves with the settings data for * the options page with some additional info. */ _define_property(this, "getOptionsData", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.GetOptionsData */.Go.GetOptionsData); }); /** * Sends a message to the background page to get all filters * with current version timestamps and state data. * Lightweight alternative to {@link getOptionsData} for refreshing * only filter timestamps. * * @returns Promise that resolves with the list of filters. */ _define_property(this, "getCategoriesFilters", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.GetCategoriesFilters */.Go.GetCategoriesFilters); }); /** * Sends a message to the background page to change the user setting. * * @param settingId Setting identifier. * @param value Setting value. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "changeUserSetting", async (settingId, value)=>{ await this.sendMessage(_common_messages__rspack_import_3/* .MessageType.ChangeUserSettings */.Go.ChangeUserSettings, { key: settingId, value }); }); /** * Sends a message to the background page to open the extension store. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "openExtensionStore", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.OpenExtensionStore */.Go.OpenExtensionStore); }); /** * Sends a message to the background page to open the Chrome extensions settings page. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "openChromeExtensionsPage", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.OpenChromeExtensionsSettingsPage */.Go.OpenChromeExtensionsSettingsPage); }); /** * Sends a message to the background page to open the extension details page. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "openExtensionDetailsPage", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.OpenExtensionDetailsPage */.Go.OpenExtensionDetailsPage); }); /** * Sends a message to the background page to enable a filter by filter id. * * @param filterId Filter identifier. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "enableFilter", async (filterId)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.AddAndEnableFilter */.Go.AddAndEnableFilter, { filterId }); }); /** * Sends a message to the background page to disable a filter by filter id. * * @param filterId Filter identifier. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "disableFilter", async (filterId)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.DisableFilter */.Go.DisableFilter, { filterId }); }); /** * Sends a message to the background page to apply settings from a JSON object. * * @param json JSON object representing the settings to apply. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "applySettingsJson", async (json)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.ApplySettingsJson */.Go.ApplySettingsJson, { json }); }); /** * Sends a message to the background page to open the filtering log. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "openFilteringLog", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.OpenFilteringLog */.Go.OpenFilteringLog); }); /** * Sends a message to the background page to save filtering log window state. * * @param windowState Window state (position and size) to save. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "saveFilteringLogWindowState", async (windowState)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.SetFilteringLogWindowState */.Go.SetFilteringLogWindowState, { windowState }); }); /** * Sends a message to the background page to reset the blocked ads statistics. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "resetStatistics", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.ResetBlockedAdsCount */.Go.ResetBlockedAdsCount); }); /** * Sends a message to the background page to reset the settings. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "resetSettings", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.ResetSettings */.Go.ResetSettings); }); /** * Sends a message to the background page to get the user rules. * * @returns Promise that resolves with the user rules. */ _define_property(this, "getUserRules", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.GetUserRules */.Go.GetUserRules); }); /** * Sends a message to the background page to save user rules. * * @param value User rules value to save. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "saveUserRules", async (value)=>{ await this.sendMessage(_common_messages__rspack_import_3/* .MessageType.SaveUserRules */.Go.SaveUserRules, { value }); }); /** * Sends a message to the background page to open user rules editor in fullscreen. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "openFullscreenUserRules", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.OpenFullscreenUserRules */.Go.OpenFullscreenUserRules); }); /** * Sends a message to the background page to close the fullscreen user rules * editor window if it is open. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "closeFullscreenUserRules", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.CloseFullscreenUserRules */.Go.CloseFullscreenUserRules); }); /** * Sends a message to the background page to get the allowlist domains. * * @returns Promise that resolves with the list of allowlist domains. */ _define_property(this, "getAllowlist", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.GetAllowlistDomains */.Go.GetAllowlistDomains); }); /** * Sends a message to the background page to save the allowlist domains. * * @param value Allowlist domains value to save. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "saveAllowlist", async (value)=>{ await this.sendMessage(_common_messages__rspack_import_3/* .MessageType.SaveAllowlistDomains */.Go.SaveAllowlistDomains, { value }); }); /** * Sends a message to the background page to mark a notification as viewed. * * @param withDelay Whether the notification should be marked as viewed after a delay. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "setNotificationViewed", async (withDelay)=>{ await this.sendMessage(_common_messages__rspack_import_3/* .MessageType.SetNotificationViewed */.Go.SetNotificationViewed, { withDelay }); }); /** * Sends a message to the background page to update the status of a filter group. * * @param groupId Group identifier. * @param enabled Whether the group should be enabled or disabled. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "updateGroupStatus", async (groupId, enabled)=>{ const type = enabled ? _common_messages__rspack_import_3/* .MessageType.EnableFiltersGroup */.Go.EnableFiltersGroup : _common_messages__rspack_import_3/* .MessageType.DisableFiltersGroup */.Go.DisableFiltersGroup; return this.sendMessage(type, { groupId }); }); /** * Sends a message to the background page to set consented filters. * * @param filterIds List of filter identifiers. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "setConsentedFilters", async (filterIds)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.SetConsentedFilters */.Go.SetConsentedFilters, { filterIds }); }); /** * Sends a message to the background page to check if a filter is consented. * * @param filterId Filter identifier. * * @returns Promise that resolves with the result of the check. */ _define_property(this, "getIsConsentedFilter", async (filterId)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.GetIsConsentedFilter */.Go.GetIsConsentedFilter, { filterId }); }); /** * Sends a message to the background page to check a custom filter URL. * * @param url Custom filter URL. * * @returns Promise that resolves with the result of the check. */ _define_property(this, "checkCustomUrl", async (url)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.LoadCustomFilterInfo */.Go.LoadCustomFilterInfo, { url }); }); /** * Sends a message to the background page to add a custom filter. * * @param {CustomFilterSubscriptionData} filter Custom filter data. * * @returns {Promise} Custom filter metadata. */ _define_property(this, "addCustomFilter", async (filter)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.SubscribeToCustomFilter */.Go.SubscribeToCustomFilter, { filter }); }); /** * Sends a message to the background page to remove a custom filter. * * @param filterId Custom filter ID. * * @returns Promise that resolves after the filter is removed. */ _define_property(this, "removeCustomFilter", async (filterId)=>{ await this.sendMessage(_common_messages__rspack_import_3/* .MessageType.RemoveAntiBannerFilter */.Go.RemoveAntiBannerFilter, { filterId }); }); /** * Sends a message to the background page to check if the application is initialized. * * @returns Promise that resolves to a boolean value: * true if the application is initialized, false otherwise. */ _define_property(this, "getIsAppInitialized", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.GetIsAppInitialized */.Go.GetIsAppInitialized); }); /** * Sends a message to the background to get the tab info for the popup. * * @param tabId Tab ID. * * @returns Promise that resolves with the tab info or undefined. */ _define_property(this, "getTabInfoForPopup", async (tabId)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.GetTabInfoForPopup */.Go.GetTabInfoForPopup, { tabId }); }); /** * Sends a message to the background page to change application filtering state. * * @param state Application filtering state. * * @returns Promise that resolves after the state is changed. */ _define_property(this, "changeApplicationFilteringPaused", async (state)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.ChangeApplicationFilteringPaused */.Go.ChangeApplicationFilteringPaused, { state }); }); /** * Sends a message to the background page to update the theme of the fullscreen user rules. * * @param theme Theme to set. * * @returns Promise that resolves after the theme is updated. */ _define_property(this, "updateFullscreenUserRulesTheme", async (theme)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.UpdateFullscreenUserRulesTheme */.Go.UpdateFullscreenUserRulesTheme, { theme }); }); /** * Sends a message to the background page to open the rules limits tab. * * @returns Promise that resolves after the tab is opened. */ _define_property(this, "openRulesLimitsTab", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.OpenRulesLimitsTab */.Go.OpenRulesLimitsTab); }); /** * Sends a message to the background page to open the settings tab. * * @returns Promise that resolves after the tab is opened. */ _define_property(this, "openSettingsTab", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.OpenSettingsTab */.Go.OpenSettingsTab); }); /** * Sends a message to the background page to open the assistant. * * @returns Promise that resolves after the assistant is opened. */ _define_property(this, "openAssistant", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.OpenAssistant */.Go.OpenAssistant); }); /** * Sends a message to the background page to open the abuse reporting tab for a site. * * @param url The URL of the site to report abuse for. * @param from The source of the request. * * @returns Promise that resolves after the tab is opened. */ _define_property(this, "openAbuseSite", async (url, from)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.OpenAbuseTab */.Go.OpenAbuseTab, { url, from }); }); /** * Sends a message to the background page to check site security. * * @param url The URL of the site to check. * @param from The source of the request. * * @returns Promise that resolves with the site security info. */ _define_property(this, "checkSiteSecurity", async (url, from)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.OpenSiteReportTab */.Go.OpenSiteReportTab, { url, from }); }); /** * Sends a message to the background page to reset user rules for a specific page. * * @param url The URL of the page. * * @returns Promise that resolves after the user rules are reset. */ _define_property(this, "resetUserRulesForPage", async (url)=>{ const [currentTab] = await webextension_polyfill__rspack_import_1_default().tabs.query({ active: true, currentWindow: true }); if (!(currentTab === null || currentTab === void 0 ? void 0 : currentTab.id)) { _common_logger__rspack_import_2/* .logger.warn */.v.warn('[ext.MessengerCommon]: cannot get current tab id'); return; } return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.ResetUserRulesForPage */.Go.ResetUserRulesForPage, { url, tabId: currentTab === null || currentTab === void 0 ? void 0 : currentTab.id }); }); /** * Sends a message to the background page to remove an allowlist domain. * * @param tabId The ID of the tab. * @param tabRefresh Whether the tab should be refreshed. * * @returns Promise that resolves after the domain is removed. */ _define_property(this, "removeAllowlistDomain", async (tabId, tabRefresh)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.RemoveAllowlistDomain */.Go.RemoveAllowlistDomain, { tabId, tabRefresh }); }); /** * Sends a message to the background page to add an allowlist domain for a specific tab. * * @param tabId The ID of the tab. * * @returns Promise that resolves after the domain is added. */ _define_property(this, "addAllowlistDomainForTabId", async (tabId)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.AddAllowlistDomainForTabId */.Go.AddAllowlistDomainForTabId, { tabId }); }); /** * Sends a message to the background page to add an allowlist domain for a specific URL. * * Please note that after adding an allowlist domain, the tab will not be reloaded, * it should be done separately later if needed. * * @param url The URL of the page. * * @returns Promise that resolves after the domain is added. */ _define_property(this, "addAllowlistDomainForUrl", async (url)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.AddAllowlistDomainForUrl */.Go.AddAllowlistDomainForUrl, { url }); }); /** * Works only in MV2, since MV3 doesn't support filtering log yet. * * @returns Promise that resolves after the filtering log page is opened. */ _define_property(this, "onOpenFilteringLogPage", async ()=>{ await this.sendMessage(_common_messages__rspack_import_3/* .MessageType.OnOpenFilteringLogPage */.Go.OnOpenFilteringLogPage); }); /** * Sends a message to the background page to get filtering log data. * * @returns Promise that resolves with filtering log data. */ _define_property(this, "getFilteringLogData", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.GetFilteringLogData */.Go.GetFilteringLogData); }); /** * Sends a message to the background page to close the filtering log page. * * @returns Promise that resolves after the page is closed. */ _define_property(this, "onCloseFilteringLogPage", async ()=>{ await this.sendMessage(_common_messages__rspack_import_3/* .MessageType.OnCloseFilteringLogPage */.Go.OnCloseFilteringLogPage); }); /** * Sends a message to the background page to get filtering info by tab ID. * * @param tabId The ID of the tab. * * @returns Promise that resolves with filtering info about the tab. */ _define_property(this, "getFilteringInfoByTabId", async (tabId)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.GetFilteringInfoByTabId */.Go.GetFilteringInfoByTabId, { tabId }); }); /** * Sends a message to the background page to synchronize the list of open tabs. * * @returns Promise that resolves with an array of filtering info about open tabs. */ _define_property(this, "synchronizeOpenTabs", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.SynchronizeOpenTabs */.Go.SynchronizeOpenTabs); }); /** * Sends a message to the background page to clear events by tab ID. * * @param tabId The ID of the tab. * @param ignorePreserveLog Optional flag to ignore the preserve log state. * * @returns Promise that resolves after the events are cleared. */ _define_property(this, "clearEventsByTabId", async (tabId, ignorePreserveLog)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.ClearEventsByTabId */.Go.ClearEventsByTabId, { tabId, ignorePreserveLog }); }); /** * Sends a message to the background page to refresh the current page by tab ID. * * @param tabId The ID of the tab. * * @returns Promise that resolves after the page is refreshed. */ _define_property(this, "refreshPage", async (tabId)=>{ await this.sendMessage(_common_messages__rspack_import_3/* .MessageType.RefreshPage */.Go.RefreshPage, { tabId }); }); /** * Sends a message to the background page to add a user rule. * * @param ruleText User rule text to be added. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "addUserRule", async (ruleText)=>{ await this.sendMessage(_common_messages__rspack_import_3/* .MessageType.AddUserRule */.Go.AddUserRule, { ruleText }); }); /** * Sends a message to the background page to remove a user rule. * * @param ruleText User rule text to be removed. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "removeUserRule", async (ruleText)=>{ await this.sendMessage(_common_messages__rspack_import_3/* .MessageType.RemoveUserRule */.Go.RemoveUserRule, { ruleText }); }); /** * Sends a message to the background page to set the preserve log state. * * @param state State indicating whether to preserve the log. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "setPreserveLogState", async (state)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.SetPreserveLogState */.Go.SetPreserveLogState, { state }); }); /** * Sends a message to the background page to get the editor storage content. * * @returns Promise that resolves with the editor storage content. */ _define_property(this, "getEditorStorageContent", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.GetEditorStorageContent */.Go.GetEditorStorageContent); }); /** * Sends a message to the background page to set the editor storage content. * * @param content Content to be stored in the editor. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "setEditorStorageContent", async (content)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.SetEditorStorageContent */.Go.SetEditorStorageContent, { content }); }); /** * Sends a message to the background page to get the rules limits counters for MV3. * * @returns Promise that resolves with the rules limits counters for MV3. */ _define_property(this, "getRulesLimitsCounters", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.GetRulesLimitsCountersMv3 */.Go.GetRulesLimitsCountersMv3); }); /** * Sends a message to the background page to check if it is possible to enable a static filter. * * @param filterId Filter ID to check. * * @returns Promise that resolves with the result of the static filter check. * * @throws Error If the filter is not static. */ _define_property(this, "canEnableStaticFilter", async (filterId)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.CanEnableStaticFilterMv3 */.Go.CanEnableStaticFilterMv3, { filterId }); }); /** * Sends a message to the background page to check if all dynamic rules for a user rules' group can be enabled. * * @param groupId Group identifier to check. * * @returns Promise that resolves with the result of the static group check. */ _define_property(this, "canEnableStaticGroup", async (groupId)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.CanEnableStaticGroupMv3 */.Go.CanEnableStaticGroupMv3, { groupId }); }); /** * Sends a message to the background page to get the current static filters limits. * * @returns Promise that resolves with the current static filters limits. */ _define_property(this, "getCurrentLimits", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.CurrentLimitsMv3 */.Go.CurrentLimitsMv3); }); /** * Sends a message to the background page to check if the request filter is ready. * * @returns Promise that resolves to a boolean indicating if the request filter is ready. */ _define_property(this, "checkRequestFilterReady", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.CheckRequestFilterReady */.Go.CheckRequestFilterReady); }); /** * Sends a message to the background page to add a URL to the trusted list. * * @param url URL to be added to the trusted list. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "addUrlToTrusted", async (url)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.AddUrlToTrusted */.Go.AddUrlToTrusted, { url }); }); /** * Sends a message to the background page to get user rules editor data. * * @returns Promise that resolves with the user rules editor data. */ _define_property(this, "getUserRulesEditorData", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.GetUserRulesEditorData */.Go.GetUserRulesEditorData); }); /** * Sends a message to the background page to restore filters in MV3. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "restoreFiltersMv3", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.RestoreFiltersMv3 */.Go.RestoreFiltersMv3); }); /** * Sends a message to the background page to clear the rules limits warning in MV3. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "clearRulesLimitsWarningMv3", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.ClearRulesLimitsWarningMv3 */.Go.ClearRulesLimitsWarningMv3); }); /** * Sends a message to the background page to get the allowlist domains. * * @returns Promise that resolves with the allowlist domains. */ _define_property(this, "getAllowlistDomains", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.GetAllowlistDomains */.Go.GetAllowlistDomains); }); /** * Sends a message to the background page to load the settings JSON. * * @returns Promise that resolves with the loaded settings JSON. */ _define_property(this, "loadSettingsJson", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.LoadSettingsJson */.Go.LoadSettingsJson); }); /** * Sends a message to the background to generate a share settings URL. * * @returns Promise that resolves with the share URL string. */ _define_property(this, "generateShareUrl", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.GenerateShareUrl */.Go.GenerateShareUrl); }); /** * Sends a message to the background page to open the thank you page. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "openThankYouPage", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.OpenThankYouPage */.Go.OpenThankYouPage); }); /** * Sends a message to the background page to initialize the frame script. * * @returns Promise that resolves with the initialization data for the frame script. */ _define_property(this, "initializeFrameScript", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.InitializeFrameScript */.Go.InitializeFrameScript); }); /** * Sends a message to the background page to initialize the blocking page script. * * @returns Promise that resolves with the initialization data for the blocking page script. */ _define_property(this, "initializeBlockingPageScript", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.InitializeBlockingPageScript */.Go.InitializeBlockingPageScript); }); /** * Sends a message to the background page to mark url as trusted and ignore * safebrowsing checks for it. * * @param url URL to mark as trusted. * * @returns Promise that resolves with the initialization data for the frame script. */ _define_property(this, "openSafebrowsingTrusted", async (url)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.OpenSafebrowsingTrusted */.Go.OpenSafebrowsingTrusted, { url }); }); /** * Sends a message to the background page to send a telemetry page view event. * * @param screenName Screen name of the page. * @param pageId Page ID of the page. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "sendTelemetryPageViewEvent", async (screenName, pageId)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.SendTelemetryPageViewEvent */.Go.SendTelemetryPageViewEvent, { screenName, pageId }); }); /** * Sends a message to the background page to send a telemetry custom event. * * @param screenName Screen name of the page. * @param eventName Name of the event. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "sendTelemetryCustomEvent", async (screenName, eventName)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.SendTelemetryCustomEvent */.Go.SendTelemetryCustomEvent, { screenName, eventName }); }); /** * Adds opened page to telemetry tracking. * * @returns Promise that resolves with the page ID. */ _define_property(this, "addTelemetryOpenedPage", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.AddTelemetryOpenedPage */.Go.AddTelemetryOpenedPage); }); /** * Removes opened page from telemetry tracking. * * @param pageId Page ID to remove. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "removeTelemetryOpenedPage", async (pageId)=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.RemoveTelemetryOpenedPage */.Go.RemoveTelemetryOpenedPage, { pageId }); }); /** * Dismisses the search page access notification permanently. * * @returns Promise that resolves after the notification is dismissed. */ _define_property(this, "dismissSearchPageAccessNotification", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.DismissSearchPageAccessNotification */.Go.DismissSearchPageAccessNotification); }); /** * Checks whether there is a pending import configuration in the background. * * @returns `true` if there is a pending import config, `false` otherwise. */ _define_property(this, "isPendingForImport", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.IsPendingForImport */.Go.IsPendingForImport); }); /** * Returns whether the pending import configuration requests WebRTC blocking. * * @returns `true` if the pending config sets `blockWebrtc` to `true`. */ _define_property(this, "getPendingImportBlockWebrtc", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.GetPendingImportBlockWebrtc */.Go.GetPendingImportBlockWebrtc); }); /** * Applies the pending import configuration. * * @returns `true` if the import succeeded, `false` otherwise. */ _define_property(this, "applyImportConfiguration", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.ApplyImportConfiguration */.Go.ApplyImportConfiguration); }); /** * Cancels and discards the pending import configuration. * * @returns Promise that resolves after the message is sent. */ _define_property(this, "cancelImportConfiguration", async ()=>{ return this.sendMessage(_common_messages__rspack_import_3/* .MessageType.CancelImportConfiguration */.Go.CancelImportConfiguration); }); } } /** * Creates long-lived connections between an extension page and the background page. * * @param page Page name. * @param events List of events to which subscribe. * @param callback Callback called when event fires. * * @returns Object with onUnload callback and portId. */ _define_property(MessengerCommon, "createLongLivedConnection", (page, events, callback)=>{ let port; let forceDisconnected = false; const portId = `${page}_${(0,nanoid__rspack_import_4/* .nanoid */.Ak)()}`; const connect = ()=>{ port = webextension_polyfill__rspack_import_1_default().runtime.connect({ name: portId }); port.postMessage({ type: _common_messages__rspack_import_3/* .MessageType.AddLongLivedConnection */.Go.AddLongLivedConnection, data: { events } }); port.onMessage.addListener((message)=>{ if (!(0,_common_messages__rspack_import_3/* .messageHasTypeField */.Et)(message)) { _common_logger__rspack_import_2/* .logger.error */.v.error('[ext.MessengerCommon]: received message in MessengerCommon.createLongLivedConnection has no type field:', message); return; } if (message.type === _common_messages__rspack_import_3/* .MessageType.NotifyListeners */.Go.NotifyListeners) { if (!(0,_common_messages__rspack_import_3/* .messageHasTypeAndDataFields */.oL)(message)) { _common_logger__rspack_import_2/* .logger.error */.v.error('[ext.MessengerCommon]: received message with type MessageType.NotifyListeners has no data:', message); return; } const castedMessage = message; const [type, ...data] = castedMessage.data; callback({ type, data }); } }); port.onDisconnect.addListener(()=>{ if ((webextension_polyfill__rspack_import_1_default().runtime.lastError)) { _common_logger__rspack_import_2/* .logger.error */.v.error('[ext.MessengerCommon]: received error on disconnect:', (webextension_polyfill__rspack_import_1_default().runtime.lastError.message)); } // we try to connect again if the background page was terminated if (!forceDisconnected) { connect(); } }); }; connect(); const onUnload = ()=>{ if (port) { forceDisconnected = true; port.disconnect(); } }; window.addEventListener('beforeunload', onUnload); window.addEventListener('unload', onUnload); return { onUnload, portId }; }); }, 2036(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { N: () => (messenger) }); /* import */ var _common_messages__rspack_import_0 = __webpack_require__(8115); /* import */ var _messenger_common__rspack_import_1 = __webpack_require__(28339); /** * Copyright (c) 2015-2026 Adguard Software Ltd. * * @file * This file is part of AdGuard Browser Extension (https://github.com/AdguardTeam/AdguardBrowserExtension). * * AdGuard Browser Extension is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * AdGuard Browser Extension is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with AdGuard Browser Extension. If not, see . */ function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } class Messenger extends _messenger_common__rspack_import_1/* .MessengerCommon */.H { constructor(...args){ super(...args), /** * Sends a message to the background page to check for extension updates. */ _define_property(this, "checkUpdates", async ()=>{ return this.sendMessage(_common_messages__rspack_import_0/* .MessageType.CheckExtensionUpdateMv3 */.Go.CheckExtensionUpdateMv3); }), /** * Sends a message to the background page to update extension. * * @param UpdateExtensionMessageMv3Data Message data with from field. */ _define_property(this, "updateExtension", async ({ from })=>{ return this.sendMessage(_common_messages__rspack_import_0/* .MessageType.UpdateExtensionMv3 */.Go.UpdateExtensionMv3, { from }); }), /** * Sends a message to the background page to get extension status for popup. * * @returns Promise that resolves with extension status */ _define_property(this, "getExtensionStatusForPopup", async ()=>{ return this.sendMessage(_common_messages__rspack_import_0/* .MessageType.GetExtensionStatusForPopupMV3 */.Go.GetExtensionStatusForPopupMV3); }); } } const messenger = new Messenger(); }, 37624(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, { X: () => (/* binding */ useWindowVirtualizer), T: () => (/* binding */ useVirtualizer) }); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/index.js var react = __webpack_require__(33353); // EXTERNAL MODULE: ./node_modules/.pnpm/react-dom@17.0.2_react@17.0.2/node_modules/react-dom/index.js var react_dom = __webpack_require__(71561); ;// CONCATENATED MODULE: ./node_modules/.pnpm/@tanstack+virtual-core@3.13.18/node_modules/@tanstack/virtual-core/dist/esm/utils.js function memo(getDeps, fn, opts) { let deps = opts.initialDeps ?? []; let result; let isInitial = true; function memoizedFunction() { var _a, _b, _c; let depTime; if (opts.key && ((_a = opts.debug) == null ? void 0 : _a.call(opts))) depTime = Date.now(); const newDeps = getDeps(); const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep); if (!depsChanged) { return result; } deps = newDeps; let resultTime; if (opts.key && ((_b = opts.debug) == null ? void 0 : _b.call(opts))) resultTime = Date.now(); result = fn(...newDeps); if (opts.key && ((_c = opts.debug) == null ? void 0 : _c.call(opts))) { const depEndTime = Math.round((Date.now() - depTime) * 100) / 100; const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100; const resultFpsPercentage = resultEndTime / 16; const pad = (str, num) => { str = String(str); while (str.length < num) { str = " " + str; } return str; }; console.info( `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, ` font-size: .6rem; font-weight: bold; color: hsl(${Math.max( 0, Math.min(120 - 120 * resultFpsPercentage, 120) )}deg 100% 31%);`, opts == null ? void 0 : opts.key ); } if ((opts == null ? void 0 : opts.onChange) && !(isInitial && opts.skipInitialOnChange)) { opts.onChange(result); } isInitial = false; return result; } memoizedFunction.updateDeps = (newDeps) => { deps = newDeps; }; return memoizedFunction; } function notUndefined(value, msg) { if (value === void 0) { throw new Error(`Unexpected undefined${msg ? `: ${msg}` : ""}`); } else { return value; } } const approxEqual = (a, b) => Math.abs(a - b) < 1.01; const debounce = (targetWindow, fn, ms) => { let timeoutId; return function(...args) { targetWindow.clearTimeout(timeoutId); timeoutId = targetWindow.setTimeout(() => fn.apply(this, args), ms); }; }; ;// CONCATENATED MODULE: ./node_modules/.pnpm/@tanstack+virtual-core@3.13.18/node_modules/@tanstack/virtual-core/dist/esm/index.js const getRect = (element) => { const { offsetWidth, offsetHeight } = element; return { width: offsetWidth, height: offsetHeight }; }; const defaultKeyExtractor = (index) => index; const defaultRangeExtractor = (range) => { const start = Math.max(range.startIndex - range.overscan, 0); const end = Math.min(range.endIndex + range.overscan, range.count - 1); const arr = []; for (let i = start; i <= end; i++) { arr.push(i); } return arr; }; const observeElementRect = (instance, cb) => { const element = instance.scrollElement; if (!element) { return; } const targetWindow = instance.targetWindow; if (!targetWindow) { return; } const handler = (rect) => { const { width, height } = rect; cb({ width: Math.round(width), height: Math.round(height) }); }; handler(getRect(element)); if (!targetWindow.ResizeObserver) { return () => { }; } const observer = new targetWindow.ResizeObserver((entries) => { const run = () => { const entry = entries[0]; if (entry == null ? void 0 : entry.borderBoxSize) { const box = entry.borderBoxSize[0]; if (box) { handler({ width: box.inlineSize, height: box.blockSize }); return; } } handler(getRect(element)); }; instance.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run(); }); observer.observe(element, { box: "border-box" }); return () => { observer.unobserve(element); }; }; const addEventListenerOptions = { passive: true }; const observeWindowRect = (instance, cb) => { const element = instance.scrollElement; if (!element) { return; } const handler = () => { cb({ width: element.innerWidth, height: element.innerHeight }); }; handler(); element.addEventListener("resize", handler, addEventListenerOptions); return () => { element.removeEventListener("resize", handler); }; }; const supportsScrollend = typeof window == "undefined" ? true : "onscrollend" in window; const observeElementOffset = (instance, cb) => { const element = instance.scrollElement; if (!element) { return; } const targetWindow = instance.targetWindow; if (!targetWindow) { return; } let offset = 0; const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce( targetWindow, () => { cb(offset, false); }, instance.options.isScrollingResetDelay ); const createHandler = (isScrolling) => () => { const { horizontal, isRtl } = instance.options; offset = horizontal ? element["scrollLeft"] * (isRtl && -1 || 1) : element["scrollTop"]; fallback(); cb(offset, isScrolling); }; const handler = createHandler(true); const endHandler = createHandler(false); element.addEventListener("scroll", handler, addEventListenerOptions); const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend; if (registerScrollendEvent) { element.addEventListener("scrollend", endHandler, addEventListenerOptions); } return () => { element.removeEventListener("scroll", handler); if (registerScrollendEvent) { element.removeEventListener("scrollend", endHandler); } }; }; const observeWindowOffset = (instance, cb) => { const element = instance.scrollElement; if (!element) { return; } const targetWindow = instance.targetWindow; if (!targetWindow) { return; } let offset = 0; const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce( targetWindow, () => { cb(offset, false); }, instance.options.isScrollingResetDelay ); const createHandler = (isScrolling) => () => { offset = element[instance.options.horizontal ? "scrollX" : "scrollY"]; fallback(); cb(offset, isScrolling); }; const handler = createHandler(true); const endHandler = createHandler(false); element.addEventListener("scroll", handler, addEventListenerOptions); const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend; if (registerScrollendEvent) { element.addEventListener("scrollend", endHandler, addEventListenerOptions); } return () => { element.removeEventListener("scroll", handler); if (registerScrollendEvent) { element.removeEventListener("scrollend", endHandler); } }; }; const measureElement = (element, entry, instance) => { if (entry == null ? void 0 : entry.borderBoxSize) { const box = entry.borderBoxSize[0]; if (box) { const size = Math.round( box[instance.options.horizontal ? "inlineSize" : "blockSize"] ); return size; } } return element[instance.options.horizontal ? "offsetWidth" : "offsetHeight"]; }; const windowScroll = (offset, { adjustments = 0, behavior }, instance) => { var _a, _b; const toOffset = offset + adjustments; (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, { [instance.options.horizontal ? "left" : "top"]: toOffset, behavior }); }; const elementScroll = (offset, { adjustments = 0, behavior }, instance) => { var _a, _b; const toOffset = offset + adjustments; (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, { [instance.options.horizontal ? "left" : "top"]: toOffset, behavior }); }; class Virtualizer { constructor(opts) { this.unsubs = []; this.scrollElement = null; this.targetWindow = null; this.isScrolling = false; this.currentScrollToIndex = null; this.measurementsCache = []; this.itemSizeCache = /* @__PURE__ */ new Map(); this.laneAssignments = /* @__PURE__ */ new Map(); this.pendingMeasuredCacheIndexes = []; this.prevLanes = void 0; this.lanesChangedFlag = false; this.lanesSettling = false; this.scrollRect = null; this.scrollOffset = null; this.scrollDirection = null; this.scrollAdjustments = 0; this.elementsCache = /* @__PURE__ */ new Map(); this.observer = /* @__PURE__ */ (() => { let _ro = null; const get = () => { if (_ro) { return _ro; } if (!this.targetWindow || !this.targetWindow.ResizeObserver) { return null; } return _ro = new this.targetWindow.ResizeObserver((entries) => { entries.forEach((entry) => { const run = () => { this._measureElement(entry.target, entry); }; this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run(); }); }); }; return { disconnect: () => { var _a; (_a = get()) == null ? void 0 : _a.disconnect(); _ro = null; }, observe: (target) => { var _a; return (_a = get()) == null ? void 0 : _a.observe(target, { box: "border-box" }); }, unobserve: (target) => { var _a; return (_a = get()) == null ? void 0 : _a.unobserve(target); } }; })(); this.range = null; this.setOptions = (opts2) => { Object.entries(opts2).forEach(([key, value]) => { if (typeof value === "undefined") delete opts2[key]; }); this.options = { debug: false, initialOffset: 0, overscan: 1, paddingStart: 0, paddingEnd: 0, scrollPaddingStart: 0, scrollPaddingEnd: 0, horizontal: false, getItemKey: defaultKeyExtractor, rangeExtractor: defaultRangeExtractor, onChange: () => { }, measureElement, initialRect: { width: 0, height: 0 }, scrollMargin: 0, gap: 0, indexAttribute: "data-index", initialMeasurementsCache: [], lanes: 1, isScrollingResetDelay: 150, enabled: true, isRtl: false, useScrollendEvent: false, useAnimationFrameWithResizeObserver: false, ...opts2 }; }; this.notify = (sync) => { var _a, _b; (_b = (_a = this.options).onChange) == null ? void 0 : _b.call(_a, this, sync); }; this.maybeNotify = memo( () => { this.calculateRange(); return [ this.isScrolling, this.range ? this.range.startIndex : null, this.range ? this.range.endIndex : null ]; }, (isScrolling) => { this.notify(isScrolling); }, { key: false && 0, debug: () => this.options.debug, initialDeps: [ this.isScrolling, this.range ? this.range.startIndex : null, this.range ? this.range.endIndex : null ] } ); this.cleanup = () => { this.unsubs.filter(Boolean).forEach((d) => d()); this.unsubs = []; this.observer.disconnect(); this.scrollElement = null; this.targetWindow = null; }; this._didMount = () => { return () => { this.cleanup(); }; }; this._willUpdate = () => { var _a; const scrollElement = this.options.enabled ? this.options.getScrollElement() : null; if (this.scrollElement !== scrollElement) { this.cleanup(); if (!scrollElement) { this.maybeNotify(); return; } this.scrollElement = scrollElement; if (this.scrollElement && "ownerDocument" in this.scrollElement) { this.targetWindow = this.scrollElement.ownerDocument.defaultView; } else { this.targetWindow = ((_a = this.scrollElement) == null ? void 0 : _a.window) ?? null; } this.elementsCache.forEach((cached) => { this.observer.observe(cached); }); this.unsubs.push( this.options.observeElementRect(this, (rect) => { this.scrollRect = rect; this.maybeNotify(); }) ); this.unsubs.push( this.options.observeElementOffset(this, (offset, isScrolling) => { this.scrollAdjustments = 0; this.scrollDirection = isScrolling ? this.getScrollOffset() < offset ? "forward" : "backward" : null; this.scrollOffset = offset; this.isScrolling = isScrolling; this.maybeNotify(); }) ); this._scrollToOffset(this.getScrollOffset(), { adjustments: void 0, behavior: void 0 }); } }; this.getSize = () => { if (!this.options.enabled) { this.scrollRect = null; return 0; } this.scrollRect = this.scrollRect ?? this.options.initialRect; return this.scrollRect[this.options.horizontal ? "width" : "height"]; }; this.getScrollOffset = () => { if (!this.options.enabled) { this.scrollOffset = null; return 0; } this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset === "function" ? this.options.initialOffset() : this.options.initialOffset); return this.scrollOffset; }; this.getFurthestMeasurement = (measurements, index) => { const furthestMeasurementsFound = /* @__PURE__ */ new Map(); const furthestMeasurements = /* @__PURE__ */ new Map(); for (let m = index - 1; m >= 0; m--) { const measurement = measurements[m]; if (furthestMeasurementsFound.has(measurement.lane)) { continue; } const previousFurthestMeasurement = furthestMeasurements.get( measurement.lane ); if (previousFurthestMeasurement == null || measurement.end > previousFurthestMeasurement.end) { furthestMeasurements.set(measurement.lane, measurement); } else if (measurement.end < previousFurthestMeasurement.end) { furthestMeasurementsFound.set(measurement.lane, true); } if (furthestMeasurementsFound.size === this.options.lanes) { break; } } return furthestMeasurements.size === this.options.lanes ? Array.from(furthestMeasurements.values()).sort((a, b) => { if (a.end === b.end) { return a.index - b.index; } return a.end - b.end; })[0] : void 0; }; this.getMeasurementOptions = memo( () => [ this.options.count, this.options.paddingStart, this.options.scrollMargin, this.options.getItemKey, this.options.enabled, this.options.lanes ], (count, paddingStart, scrollMargin, getItemKey, enabled, lanes) => { const lanesChanged = this.prevLanes !== void 0 && this.prevLanes !== lanes; if (lanesChanged) { this.lanesChangedFlag = true; } this.prevLanes = lanes; this.pendingMeasuredCacheIndexes = []; return { count, paddingStart, scrollMargin, getItemKey, enabled, lanes }; }, { key: false } ); this.getMeasurements = memo( () => [this.getMeasurementOptions(), this.itemSizeCache], ({ count, paddingStart, scrollMargin, getItemKey, enabled, lanes }, itemSizeCache) => { if (!enabled) { this.measurementsCache = []; this.itemSizeCache.clear(); this.laneAssignments.clear(); return []; } if (this.laneAssignments.size > count) { for (const index of this.laneAssignments.keys()) { if (index >= count) { this.laneAssignments.delete(index); } } } if (this.lanesChangedFlag) { this.lanesChangedFlag = false; this.lanesSettling = true; this.measurementsCache = []; this.itemSizeCache.clear(); this.laneAssignments.clear(); this.pendingMeasuredCacheIndexes = []; } if (this.measurementsCache.length === 0 && !this.lanesSettling) { this.measurementsCache = this.options.initialMeasurementsCache; this.measurementsCache.forEach((item) => { this.itemSizeCache.set(item.key, item.size); }); } const min = this.lanesSettling ? 0 : this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0; this.pendingMeasuredCacheIndexes = []; if (this.lanesSettling && this.measurementsCache.length === count) { this.lanesSettling = false; } const measurements = this.measurementsCache.slice(0, min); const laneLastIndex = new Array(lanes).fill( void 0 ); for (let m = 0; m < min; m++) { const item = measurements[m]; if (item) { laneLastIndex[item.lane] = m; } } for (let i = min; i < count; i++) { const key = getItemKey(i); const cachedLane = this.laneAssignments.get(i); let lane; let start; if (cachedLane !== void 0 && this.options.lanes > 1) { lane = cachedLane; const prevIndex = laneLastIndex[lane]; const prevInLane = prevIndex !== void 0 ? measurements[prevIndex] : void 0; start = prevInLane ? prevInLane.end + this.options.gap : paddingStart + scrollMargin; } else { const furthestMeasurement = this.options.lanes === 1 ? measurements[i - 1] : this.getFurthestMeasurement(measurements, i); start = furthestMeasurement ? furthestMeasurement.end + this.options.gap : paddingStart + scrollMargin; lane = furthestMeasurement ? furthestMeasurement.lane : i % this.options.lanes; if (this.options.lanes > 1) { this.laneAssignments.set(i, lane); } } const measuredSize = itemSizeCache.get(key); const size = typeof measuredSize === "number" ? measuredSize : this.options.estimateSize(i); const end = start + size; measurements[i] = { index: i, start, size, end, key, lane }; laneLastIndex[lane] = i; } this.measurementsCache = measurements; return measurements; }, { key: false && 0, debug: () => this.options.debug } ); this.calculateRange = memo( () => [ this.getMeasurements(), this.getSize(), this.getScrollOffset(), this.options.lanes ], (measurements, outerSize, scrollOffset, lanes) => { return this.range = measurements.length > 0 && outerSize > 0 ? calculateRange({ measurements, outerSize, scrollOffset, lanes }) : null; }, { key: false && 0, debug: () => this.options.debug } ); this.getVirtualIndexes = memo( () => { let startIndex = null; let endIndex = null; const range = this.calculateRange(); if (range) { startIndex = range.startIndex; endIndex = range.endIndex; } this.maybeNotify.updateDeps([this.isScrolling, startIndex, endIndex]); return [ this.options.rangeExtractor, this.options.overscan, this.options.count, startIndex, endIndex ]; }, (rangeExtractor, overscan, count, startIndex, endIndex) => { return startIndex === null || endIndex === null ? [] : rangeExtractor({ startIndex, endIndex, overscan, count }); }, { key: false && 0, debug: () => this.options.debug } ); this.indexFromElement = (node) => { const attributeName = this.options.indexAttribute; const indexStr = node.getAttribute(attributeName); if (!indexStr) { console.warn( `Missing attribute name '${attributeName}={index}' on measured element.` ); return -1; } return parseInt(indexStr, 10); }; this._measureElement = (node, entry) => { const index = this.indexFromElement(node); const item = this.measurementsCache[index]; if (!item) { return; } const key = item.key; const prevNode = this.elementsCache.get(key); if (prevNode !== node) { if (prevNode) { this.observer.unobserve(prevNode); } this.observer.observe(node); this.elementsCache.set(key, node); } if (node.isConnected) { this.resizeItem(index, this.options.measureElement(node, entry, this)); } }; this.resizeItem = (index, size) => { const item = this.measurementsCache[index]; if (!item) { return; } const itemSize = this.itemSizeCache.get(item.key) ?? item.size; const delta = size - itemSize; if (delta !== 0) { if (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(item, delta, this) : item.start < this.getScrollOffset() + this.scrollAdjustments) { if (false) {} this._scrollToOffset(this.getScrollOffset(), { adjustments: this.scrollAdjustments += delta, behavior: void 0 }); } this.pendingMeasuredCacheIndexes.push(item.index); this.itemSizeCache = new Map(this.itemSizeCache.set(item.key, size)); this.notify(false); } }; this.measureElement = (node) => { if (!node) { this.elementsCache.forEach((cached, key) => { if (!cached.isConnected) { this.observer.unobserve(cached); this.elementsCache.delete(key); } }); return; } this._measureElement(node, void 0); }; this.getVirtualItems = memo( () => [this.getVirtualIndexes(), this.getMeasurements()], (indexes, measurements) => { const virtualItems = []; for (let k = 0, len = indexes.length; k < len; k++) { const i = indexes[k]; const measurement = measurements[i]; virtualItems.push(measurement); } return virtualItems; }, { key: false && 0, debug: () => this.options.debug } ); this.getVirtualItemForOffset = (offset) => { const measurements = this.getMeasurements(); if (measurements.length === 0) { return void 0; } return notUndefined( measurements[findNearestBinarySearch( 0, measurements.length - 1, (index) => notUndefined(measurements[index]).start, offset )] ); }; this.getMaxScrollOffset = () => { if (!this.scrollElement) return 0; if ("scrollHeight" in this.scrollElement) { return this.options.horizontal ? this.scrollElement.scrollWidth - this.scrollElement.clientWidth : this.scrollElement.scrollHeight - this.scrollElement.clientHeight; } else { const doc = this.scrollElement.document.documentElement; return this.options.horizontal ? doc.scrollWidth - this.scrollElement.innerWidth : doc.scrollHeight - this.scrollElement.innerHeight; } }; this.getOffsetForAlignment = (toOffset, align, itemSize = 0) => { if (!this.scrollElement) return 0; const size = this.getSize(); const scrollOffset = this.getScrollOffset(); if (align === "auto") { align = toOffset >= scrollOffset + size ? "end" : "start"; } if (align === "center") { toOffset += (itemSize - size) / 2; } else if (align === "end") { toOffset -= size; } const maxOffset = this.getMaxScrollOffset(); return Math.max(Math.min(maxOffset, toOffset), 0); }; this.getOffsetForIndex = (index, align = "auto") => { index = Math.max(0, Math.min(index, this.options.count - 1)); const item = this.measurementsCache[index]; if (!item) { return void 0; } const size = this.getSize(); const scrollOffset = this.getScrollOffset(); if (align === "auto") { if (item.end >= scrollOffset + size - this.options.scrollPaddingEnd) { align = "end"; } else if (item.start <= scrollOffset + this.options.scrollPaddingStart) { align = "start"; } else { return [scrollOffset, align]; } } if (align === "end" && index === this.options.count - 1) { return [this.getMaxScrollOffset(), align]; } const toOffset = align === "end" ? item.end + this.options.scrollPaddingEnd : item.start - this.options.scrollPaddingStart; return [ this.getOffsetForAlignment(toOffset, align, item.size), align ]; }; this.isDynamicMode = () => this.elementsCache.size > 0; this.scrollToOffset = (toOffset, { align = "start", behavior } = {}) => { if (behavior === "smooth" && this.isDynamicMode()) { console.warn( "The `smooth` scroll behavior is not fully supported with dynamic size." ); } this._scrollToOffset(this.getOffsetForAlignment(toOffset, align), { adjustments: void 0, behavior }); }; this.scrollToIndex = (index, { align: initialAlign = "auto", behavior } = {}) => { if (behavior === "smooth" && this.isDynamicMode()) { console.warn( "The `smooth` scroll behavior is not fully supported with dynamic size." ); } index = Math.max(0, Math.min(index, this.options.count - 1)); this.currentScrollToIndex = index; let attempts = 0; const maxAttempts = 10; const tryScroll = (currentAlign) => { if (!this.targetWindow) return; const offsetInfo = this.getOffsetForIndex(index, currentAlign); if (!offsetInfo) { console.warn("Failed to get offset for index:", index); return; } const [offset, align] = offsetInfo; this._scrollToOffset(offset, { adjustments: void 0, behavior }); this.targetWindow.requestAnimationFrame(() => { const verify = () => { if (this.currentScrollToIndex !== index) return; const currentOffset = this.getScrollOffset(); const afterInfo = this.getOffsetForIndex(index, align); if (!afterInfo) { console.warn("Failed to get offset for index:", index); return; } if (!approxEqual(afterInfo[0], currentOffset)) { scheduleRetry(align); } }; if (this.isDynamicMode()) { this.targetWindow.requestAnimationFrame(verify); } else { verify(); } }); }; const scheduleRetry = (align) => { if (!this.targetWindow) return; if (this.currentScrollToIndex !== index) return; attempts++; if (attempts < maxAttempts) { if (false) {} this.targetWindow.requestAnimationFrame(() => tryScroll(align)); } else { console.warn( `Failed to scroll to index ${index} after ${maxAttempts} attempts.` ); } }; tryScroll(initialAlign); }; this.scrollBy = (delta, { behavior } = {}) => { if (behavior === "smooth" && this.isDynamicMode()) { console.warn( "The `smooth` scroll behavior is not fully supported with dynamic size." ); } this._scrollToOffset(this.getScrollOffset() + delta, { adjustments: void 0, behavior }); }; this.getTotalSize = () => { var _a; const measurements = this.getMeasurements(); let end; if (measurements.length === 0) { end = this.options.paddingStart; } else if (this.options.lanes === 1) { end = ((_a = measurements[measurements.length - 1]) == null ? void 0 : _a.end) ?? 0; } else { const endByLane = Array(this.options.lanes).fill(null); let endIndex = measurements.length - 1; while (endIndex >= 0 && endByLane.some((val) => val === null)) { const item = measurements[endIndex]; if (endByLane[item.lane] === null) { endByLane[item.lane] = item.end; } endIndex--; } end = Math.max(...endByLane.filter((val) => val !== null)); } return Math.max( end - this.options.scrollMargin + this.options.paddingEnd, 0 ); }; this._scrollToOffset = (offset, { adjustments, behavior }) => { this.options.scrollToFn(offset, { behavior, adjustments }, this); }; this.measure = () => { this.itemSizeCache = /* @__PURE__ */ new Map(); this.laneAssignments = /* @__PURE__ */ new Map(); this.notify(false); }; this.setOptions(opts); } } const findNearestBinarySearch = (low, high, getCurrentValue, value) => { while (low <= high) { const middle = (low + high) / 2 | 0; const currentValue = getCurrentValue(middle); if (currentValue < value) { low = middle + 1; } else if (currentValue > value) { high = middle - 1; } else { return middle; } } if (low > 0) { return low - 1; } else { return 0; } }; function calculateRange({ measurements, outerSize, scrollOffset, lanes }) { const lastIndex = measurements.length - 1; const getOffset = (index) => measurements[index].start; if (measurements.length <= lanes) { return { startIndex: 0, endIndex: lastIndex }; } let startIndex = findNearestBinarySearch( 0, lastIndex, getOffset, scrollOffset ); let endIndex = startIndex; if (lanes === 1) { while (endIndex < lastIndex && measurements[endIndex].end < scrollOffset + outerSize) { endIndex++; } } else if (lanes > 1) { const endPerLane = Array(lanes).fill(0); while (endIndex < lastIndex && endPerLane.some((pos) => pos < scrollOffset + outerSize)) { const item = measurements[endIndex]; endPerLane[item.lane] = item.end; endIndex++; } const startPerLane = Array(lanes).fill(scrollOffset + outerSize); while (startIndex >= 0 && startPerLane.some((pos) => pos >= scrollOffset)) { const item = measurements[startIndex]; startPerLane[item.lane] = item.start; startIndex--; } startIndex = Math.max(0, startIndex - startIndex % lanes); endIndex = Math.min(lastIndex, endIndex + (lanes - 1 - endIndex % lanes)); } return { startIndex, endIndex }; } ;// CONCATENATED MODULE: ./node_modules/.pnpm/@tanstack+react-virtual@3.13.18_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/@tanstack/react-virtual/dist/esm/index.js const useIsomorphicLayoutEffect = typeof document !== "undefined" ? react.useLayoutEffect : react.useEffect; function useVirtualizerBase({ useFlushSync = true, ...options }) { const rerender = react.useReducer(() => ({}), {})[1]; const resolvedOptions = { ...options, onChange: (instance2, sync) => { var _a; if (useFlushSync && sync) { (0,react_dom.flushSync)(rerender); } else { rerender(); } (_a = options.onChange) == null ? void 0 : _a.call(options, instance2, sync); } }; const [instance] = react.useState( () => new Virtualizer(resolvedOptions) ); instance.setOptions(resolvedOptions); useIsomorphicLayoutEffect(() => { return instance._didMount(); }, []); useIsomorphicLayoutEffect(() => { return instance._willUpdate(); }); return instance; } function useVirtualizer(options) { return useVirtualizerBase({ observeElementRect: observeElementRect, observeElementOffset: observeElementOffset, scrollToFn: elementScroll, ...options }); } function useWindowVirtualizer(options) { return useVirtualizerBase({ getScrollElement: () => typeof document !== "undefined" ? window : null, observeElementRect: observeWindowRect, observeElementOffset: observeWindowOffset, scrollToFn: windowScroll, initialOffset: () => typeof document !== "undefined" ? window.scrollY : 0, ...options }); } }, 69666(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { F: () => (addLeadingZeros) }); function addLeadingZeros(number, targetLength) { const sign = number < 0 ? "-" : ""; const output = Math.abs(number).toString().padStart(targetLength, "0"); return sign + output; } }, 74499(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { q: () => (getDefaultOptions) }); let defaultOptions = {}; function getDefaultOptions() { return defaultOptions; } function setDefaultOptions(newOptions) { defaultOptions = newOptions; } }, 27643(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { _: () => (formatters) }); /* import */ var _getDayOfYear_js__rspack_import_6 = __webpack_require__(50797); /* import */ var _getISOWeek_js__rspack_import_5 = __webpack_require__(50418); /* import */ var _getISOWeekYear_js__rspack_import_3 = __webpack_require__(35119); /* import */ var _getWeek_js__rspack_import_4 = __webpack_require__(12727); /* import */ var _getWeekYear_js__rspack_import_1 = __webpack_require__(54594); /* import */ var _addLeadingZeros_js__rspack_import_2 = __webpack_require__(69666); /* import */ var _lightFormatters_js__rspack_import_0 = __webpack_require__(33997); const dayPeriodEnum = { am: "am", pm: "pm", midnight: "midnight", noon: "noon", morning: "morning", afternoon: "afternoon", evening: "evening", night: "night", }; /* * | | Unit | | Unit | * |-----|--------------------------------|-----|--------------------------------| * | a | AM, PM | A* | Milliseconds in day | * | b | AM, PM, noon, midnight | B | Flexible day period | * | c | Stand-alone local day of week | C* | Localized hour w/ day period | * | d | Day of month | D | Day of year | * | e | Local day of week | E | Day of week | * | f | | F* | Day of week in month | * | g* | Modified Julian day | G | Era | * | h | Hour [1-12] | H | Hour [0-23] | * | i! | ISO day of week | I! | ISO week of year | * | j* | Localized hour w/ day period | J* | Localized hour w/o day period | * | k | Hour [1-24] | K | Hour [0-11] | * | l* | (deprecated) | L | Stand-alone month | * | m | Minute | M | Month | * | n | | N | | * | o! | Ordinal number modifier | O | Timezone (GMT) | * | p! | Long localized time | P! | Long localized date | * | q | Stand-alone quarter | Q | Quarter | * | r* | Related Gregorian year | R! | ISO week-numbering year | * | s | Second | S | Fraction of second | * | t! | Seconds timestamp | T! | Milliseconds timestamp | * | u | Extended year | U* | Cyclic year | * | v* | Timezone (generic non-locat.) | V* | Timezone (location) | * | w | Local week of year | W* | Week of month | * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) | * | y | Year (abs) | Y | Local week-numbering year | * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) | * * Letters marked by * are not implemented but reserved by Unicode standard. * * Letters marked by ! are non-standard, but implemented by date-fns: * - `o` modifies the previous token to turn it into an ordinal (see `format` docs) * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days, * i.e. 7 for Sunday, 1 for Monday, etc. * - `I` is ISO week of year, as opposed to `w` which is local week of year. * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year. * `R` is supposed to be used in conjunction with `I` and `i` * for universal ISO week-numbering date, whereas * `Y` is supposed to be used in conjunction with `w` and `e` * for week-numbering date specific to the locale. * - `P` is long localized date format * - `p` is long localized time format */ const formatters = { // Era G: function (date, token, localize) { const era = date.getFullYear() > 0 ? 1 : 0; switch (token) { // AD, BC case "G": case "GG": case "GGG": return localize.era(era, { width: "abbreviated" }); // A, B case "GGGGG": return localize.era(era, { width: "narrow" }); // Anno Domini, Before Christ case "GGGG": default: return localize.era(era, { width: "wide" }); } }, // Year y: function (date, token, localize) { // Ordinal number if (token === "yo") { const signedYear = date.getFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript) const year = signedYear > 0 ? signedYear : 1 - signedYear; return localize.ordinalNumber(year, { unit: "year" }); } return _lightFormatters_js__rspack_import_0/* .lightFormatters.y */.C.y(date, token); }, // Local week-numbering year Y: function (date, token, localize, options) { const signedWeekYear = (0,_getWeekYear_js__rspack_import_1/* .getWeekYear */.h)(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript) const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year if (token === "YY") { const twoDigitYear = weekYear % 100; return (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(twoDigitYear, 2); } // Ordinal number if (token === "Yo") { return localize.ordinalNumber(weekYear, { unit: "year" }); } // Padding return (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(weekYear, token.length); }, // ISO week-numbering year R: function (date, token) { const isoWeekYear = (0,_getISOWeekYear_js__rspack_import_3/* .getISOWeekYear */.p)(date); // Padding return (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(isoWeekYear, token.length); }, // Extended year. This is a single number designating the year of this calendar system. // The main difference between `y` and `u` localizers are B.C. years: // | Year | `y` | `u` | // |------|-----|-----| // | AC 1 | 1 | 1 | // | BC 1 | 1 | 0 | // | BC 2 | 2 | -1 | // Also `yy` always returns the last two digits of a year, // while `uu` pads single digit years to 2 characters and returns other years unchanged. u: function (date, token) { const year = date.getFullYear(); return (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(year, token.length); }, // Quarter Q: function (date, token, localize) { const quarter = Math.ceil((date.getMonth() + 1) / 3); switch (token) { // 1, 2, 3, 4 case "Q": return String(quarter); // 01, 02, 03, 04 case "QQ": return (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(quarter, 2); // 1st, 2nd, 3rd, 4th case "Qo": return localize.ordinalNumber(quarter, { unit: "quarter" }); // Q1, Q2, Q3, Q4 case "QQQ": return localize.quarter(quarter, { width: "abbreviated", context: "formatting", }); // 1, 2, 3, 4 (narrow quarter; could be not numerical) case "QQQQQ": return localize.quarter(quarter, { width: "narrow", context: "formatting", }); // 1st quarter, 2nd quarter, ... case "QQQQ": default: return localize.quarter(quarter, { width: "wide", context: "formatting", }); } }, // Stand-alone quarter q: function (date, token, localize) { const quarter = Math.ceil((date.getMonth() + 1) / 3); switch (token) { // 1, 2, 3, 4 case "q": return String(quarter); // 01, 02, 03, 04 case "qq": return (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(quarter, 2); // 1st, 2nd, 3rd, 4th case "qo": return localize.ordinalNumber(quarter, { unit: "quarter" }); // Q1, Q2, Q3, Q4 case "qqq": return localize.quarter(quarter, { width: "abbreviated", context: "standalone", }); // 1, 2, 3, 4 (narrow quarter; could be not numerical) case "qqqqq": return localize.quarter(quarter, { width: "narrow", context: "standalone", }); // 1st quarter, 2nd quarter, ... case "qqqq": default: return localize.quarter(quarter, { width: "wide", context: "standalone", }); } }, // Month M: function (date, token, localize) { const month = date.getMonth(); switch (token) { case "M": case "MM": return _lightFormatters_js__rspack_import_0/* .lightFormatters.M */.C.M(date, token); // 1st, 2nd, ..., 12th case "Mo": return localize.ordinalNumber(month + 1, { unit: "month" }); // Jan, Feb, ..., Dec case "MMM": return localize.month(month, { width: "abbreviated", context: "formatting", }); // J, F, ..., D case "MMMMM": return localize.month(month, { width: "narrow", context: "formatting", }); // January, February, ..., December case "MMMM": default: return localize.month(month, { width: "wide", context: "formatting" }); } }, // Stand-alone month L: function (date, token, localize) { const month = date.getMonth(); switch (token) { // 1, 2, ..., 12 case "L": return String(month + 1); // 01, 02, ..., 12 case "LL": return (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(month + 1, 2); // 1st, 2nd, ..., 12th case "Lo": return localize.ordinalNumber(month + 1, { unit: "month" }); // Jan, Feb, ..., Dec case "LLL": return localize.month(month, { width: "abbreviated", context: "standalone", }); // J, F, ..., D case "LLLLL": return localize.month(month, { width: "narrow", context: "standalone", }); // January, February, ..., December case "LLLL": default: return localize.month(month, { width: "wide", context: "standalone" }); } }, // Local week of year w: function (date, token, localize, options) { const week = (0,_getWeek_js__rspack_import_4/* .getWeek */.N)(date, options); if (token === "wo") { return localize.ordinalNumber(week, { unit: "week" }); } return (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(week, token.length); }, // ISO week of year I: function (date, token, localize) { const isoWeek = (0,_getISOWeek_js__rspack_import_5/* .getISOWeek */.s)(date); if (token === "Io") { return localize.ordinalNumber(isoWeek, { unit: "week" }); } return (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(isoWeek, token.length); }, // Day of the month d: function (date, token, localize) { if (token === "do") { return localize.ordinalNumber(date.getDate(), { unit: "date" }); } return _lightFormatters_js__rspack_import_0/* .lightFormatters.d */.C.d(date, token); }, // Day of year D: function (date, token, localize) { const dayOfYear = (0,_getDayOfYear_js__rspack_import_6/* .getDayOfYear */.F)(date); if (token === "Do") { return localize.ordinalNumber(dayOfYear, { unit: "dayOfYear" }); } return (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(dayOfYear, token.length); }, // Day of week E: function (date, token, localize) { const dayOfWeek = date.getDay(); switch (token) { // Tue case "E": case "EE": case "EEE": return localize.day(dayOfWeek, { width: "abbreviated", context: "formatting", }); // T case "EEEEE": return localize.day(dayOfWeek, { width: "narrow", context: "formatting", }); // Tu case "EEEEEE": return localize.day(dayOfWeek, { width: "short", context: "formatting", }); // Tuesday case "EEEE": default: return localize.day(dayOfWeek, { width: "wide", context: "formatting", }); } }, // Local day of week e: function (date, token, localize, options) { const dayOfWeek = date.getDay(); const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; switch (token) { // Numerical value (Nth day of week with current locale or weekStartsOn) case "e": return String(localDayOfWeek); // Padded numerical value case "ee": return (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(localDayOfWeek, 2); // 1st, 2nd, ..., 7th case "eo": return localize.ordinalNumber(localDayOfWeek, { unit: "day" }); case "eee": return localize.day(dayOfWeek, { width: "abbreviated", context: "formatting", }); // T case "eeeee": return localize.day(dayOfWeek, { width: "narrow", context: "formatting", }); // Tu case "eeeeee": return localize.day(dayOfWeek, { width: "short", context: "formatting", }); // Tuesday case "eeee": default: return localize.day(dayOfWeek, { width: "wide", context: "formatting", }); } }, // Stand-alone local day of week c: function (date, token, localize, options) { const dayOfWeek = date.getDay(); const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; switch (token) { // Numerical value (same as in `e`) case "c": return String(localDayOfWeek); // Padded numerical value case "cc": return (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(localDayOfWeek, token.length); // 1st, 2nd, ..., 7th case "co": return localize.ordinalNumber(localDayOfWeek, { unit: "day" }); case "ccc": return localize.day(dayOfWeek, { width: "abbreviated", context: "standalone", }); // T case "ccccc": return localize.day(dayOfWeek, { width: "narrow", context: "standalone", }); // Tu case "cccccc": return localize.day(dayOfWeek, { width: "short", context: "standalone", }); // Tuesday case "cccc": default: return localize.day(dayOfWeek, { width: "wide", context: "standalone", }); } }, // ISO day of week i: function (date, token, localize) { const dayOfWeek = date.getDay(); const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek; switch (token) { // 2 case "i": return String(isoDayOfWeek); // 02 case "ii": return (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(isoDayOfWeek, token.length); // 2nd case "io": return localize.ordinalNumber(isoDayOfWeek, { unit: "day" }); // Tue case "iii": return localize.day(dayOfWeek, { width: "abbreviated", context: "formatting", }); // T case "iiiii": return localize.day(dayOfWeek, { width: "narrow", context: "formatting", }); // Tu case "iiiiii": return localize.day(dayOfWeek, { width: "short", context: "formatting", }); // Tuesday case "iiii": default: return localize.day(dayOfWeek, { width: "wide", context: "formatting", }); } }, // AM or PM a: function (date, token, localize) { const hours = date.getHours(); const dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am"; switch (token) { case "a": case "aa": return localize.dayPeriod(dayPeriodEnumValue, { width: "abbreviated", context: "formatting", }); case "aaa": return localize .dayPeriod(dayPeriodEnumValue, { width: "abbreviated", context: "formatting", }) .toLowerCase(); case "aaaaa": return localize.dayPeriod(dayPeriodEnumValue, { width: "narrow", context: "formatting", }); case "aaaa": default: return localize.dayPeriod(dayPeriodEnumValue, { width: "wide", context: "formatting", }); } }, // AM, PM, midnight, noon b: function (date, token, localize) { const hours = date.getHours(); let dayPeriodEnumValue; if (hours === 12) { dayPeriodEnumValue = dayPeriodEnum.noon; } else if (hours === 0) { dayPeriodEnumValue = dayPeriodEnum.midnight; } else { dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am"; } switch (token) { case "b": case "bb": return localize.dayPeriod(dayPeriodEnumValue, { width: "abbreviated", context: "formatting", }); case "bbb": return localize .dayPeriod(dayPeriodEnumValue, { width: "abbreviated", context: "formatting", }) .toLowerCase(); case "bbbbb": return localize.dayPeriod(dayPeriodEnumValue, { width: "narrow", context: "formatting", }); case "bbbb": default: return localize.dayPeriod(dayPeriodEnumValue, { width: "wide", context: "formatting", }); } }, // in the morning, in the afternoon, in the evening, at night B: function (date, token, localize) { const hours = date.getHours(); let dayPeriodEnumValue; if (hours >= 17) { dayPeriodEnumValue = dayPeriodEnum.evening; } else if (hours >= 12) { dayPeriodEnumValue = dayPeriodEnum.afternoon; } else if (hours >= 4) { dayPeriodEnumValue = dayPeriodEnum.morning; } else { dayPeriodEnumValue = dayPeriodEnum.night; } switch (token) { case "B": case "BB": case "BBB": return localize.dayPeriod(dayPeriodEnumValue, { width: "abbreviated", context: "formatting", }); case "BBBBB": return localize.dayPeriod(dayPeriodEnumValue, { width: "narrow", context: "formatting", }); case "BBBB": default: return localize.dayPeriod(dayPeriodEnumValue, { width: "wide", context: "formatting", }); } }, // Hour [1-12] h: function (date, token, localize) { if (token === "ho") { let hours = date.getHours() % 12; if (hours === 0) hours = 12; return localize.ordinalNumber(hours, { unit: "hour" }); } return _lightFormatters_js__rspack_import_0/* .lightFormatters.h */.C.h(date, token); }, // Hour [0-23] H: function (date, token, localize) { if (token === "Ho") { return localize.ordinalNumber(date.getHours(), { unit: "hour" }); } return _lightFormatters_js__rspack_import_0/* .lightFormatters.H */.C.H(date, token); }, // Hour [0-11] K: function (date, token, localize) { const hours = date.getHours() % 12; if (token === "Ko") { return localize.ordinalNumber(hours, { unit: "hour" }); } return (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(hours, token.length); }, // Hour [1-24] k: function (date, token, localize) { let hours = date.getHours(); if (hours === 0) hours = 24; if (token === "ko") { return localize.ordinalNumber(hours, { unit: "hour" }); } return (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(hours, token.length); }, // Minute m: function (date, token, localize) { if (token === "mo") { return localize.ordinalNumber(date.getMinutes(), { unit: "minute" }); } return _lightFormatters_js__rspack_import_0/* .lightFormatters.m */.C.m(date, token); }, // Second s: function (date, token, localize) { if (token === "so") { return localize.ordinalNumber(date.getSeconds(), { unit: "second" }); } return _lightFormatters_js__rspack_import_0/* .lightFormatters.s */.C.s(date, token); }, // Fraction of second S: function (date, token) { return _lightFormatters_js__rspack_import_0/* .lightFormatters.S */.C.S(date, token); }, // Timezone (ISO-8601. If offset is 0, output is always `'Z'`) X: function (date, token, _localize) { const timezoneOffset = date.getTimezoneOffset(); if (timezoneOffset === 0) { return "Z"; } switch (token) { // Hours and optional minutes case "X": return formatTimezoneWithOptionalMinutes(timezoneOffset); // Hours, minutes and optional seconds without `:` delimiter // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets // so this token always has the same output as `XX` case "XXXX": case "XX": // Hours and minutes without `:` delimiter return formatTimezone(timezoneOffset); // Hours, minutes and optional seconds with `:` delimiter // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets // so this token always has the same output as `XXX` case "XXXXX": case "XXX": // Hours and minutes with `:` delimiter default: return formatTimezone(timezoneOffset, ":"); } }, // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent) x: function (date, token, _localize) { const timezoneOffset = date.getTimezoneOffset(); switch (token) { // Hours and optional minutes case "x": return formatTimezoneWithOptionalMinutes(timezoneOffset); // Hours, minutes and optional seconds without `:` delimiter // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets // so this token always has the same output as `xx` case "xxxx": case "xx": // Hours and minutes without `:` delimiter return formatTimezone(timezoneOffset); // Hours, minutes and optional seconds with `:` delimiter // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets // so this token always has the same output as `xxx` case "xxxxx": case "xxx": // Hours and minutes with `:` delimiter default: return formatTimezone(timezoneOffset, ":"); } }, // Timezone (GMT) O: function (date, token, _localize) { const timezoneOffset = date.getTimezoneOffset(); switch (token) { // Short case "O": case "OO": case "OOO": return "GMT" + formatTimezoneShort(timezoneOffset, ":"); // Long case "OOOO": default: return "GMT" + formatTimezone(timezoneOffset, ":"); } }, // Timezone (specific non-location) z: function (date, token, _localize) { const timezoneOffset = date.getTimezoneOffset(); switch (token) { // Short case "z": case "zz": case "zzz": return "GMT" + formatTimezoneShort(timezoneOffset, ":"); // Long case "zzzz": default: return "GMT" + formatTimezone(timezoneOffset, ":"); } }, // Seconds timestamp t: function (date, token, _localize) { const timestamp = Math.trunc(+date / 1000); return (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(timestamp, token.length); }, // Milliseconds timestamp T: function (date, token, _localize) { return (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(+date, token.length); }, }; function formatTimezoneShort(offset, delimiter = "") { const sign = offset > 0 ? "-" : "+"; const absOffset = Math.abs(offset); const hours = Math.trunc(absOffset / 60); const minutes = absOffset % 60; if (minutes === 0) { return sign + String(hours); } return sign + String(hours) + delimiter + (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(minutes, 2); } function formatTimezoneWithOptionalMinutes(offset, delimiter) { if (offset % 60 === 0) { const sign = offset > 0 ? "-" : "+"; return sign + (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(Math.abs(offset) / 60, 2); } return formatTimezone(offset, delimiter); } function formatTimezone(offset, delimiter = "") { const sign = offset > 0 ? "-" : "+"; const absOffset = Math.abs(offset); const hours = (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(Math.trunc(absOffset / 60), 2); const minutes = (0,_addLeadingZeros_js__rspack_import_2/* .addLeadingZeros */.F)(absOffset % 60, 2); return sign + hours + delimiter + minutes; } }, 33997(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { C: () => (lightFormatters) }); /* import */ var _addLeadingZeros_js__rspack_import_0 = __webpack_require__(69666); /* * | | Unit | | Unit | * |-----|--------------------------------|-----|--------------------------------| * | a | AM, PM | A* | | * | d | Day of month | D | | * | h | Hour [1-12] | H | Hour [0-23] | * | m | Minute | M | Month | * | s | Second | S | Fraction of second | * | y | Year (abs) | Y | | * * Letters marked by * are not implemented but reserved by Unicode standard. */ const lightFormatters = { // Year y(date, token) { // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens // | Year | y | yy | yyy | yyyy | yyyyy | // |----------|-------|----|-------|-------|-------| // | AD 1 | 1 | 01 | 001 | 0001 | 00001 | // | AD 12 | 12 | 12 | 012 | 0012 | 00012 | // | AD 123 | 123 | 23 | 123 | 0123 | 00123 | // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 | // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 | const signedYear = date.getFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript) const year = signedYear > 0 ? signedYear : 1 - signedYear; return (0,_addLeadingZeros_js__rspack_import_0/* .addLeadingZeros */.F)(token === "yy" ? year % 100 : year, token.length); }, // Month M(date, token) { const month = date.getMonth(); return token === "M" ? String(month + 1) : (0,_addLeadingZeros_js__rspack_import_0/* .addLeadingZeros */.F)(month + 1, 2); }, // Day of the month d(date, token) { return (0,_addLeadingZeros_js__rspack_import_0/* .addLeadingZeros */.F)(date.getDate(), token.length); }, // AM or PM a(date, token) { const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? "pm" : "am"; switch (token) { case "a": case "aa": return dayPeriodEnumValue.toUpperCase(); case "aaa": return dayPeriodEnumValue; case "aaaaa": return dayPeriodEnumValue[0]; case "aaaa": default: return dayPeriodEnumValue === "am" ? "a.m." : "p.m."; } }, // Hour [1-12] h(date, token) { return (0,_addLeadingZeros_js__rspack_import_0/* .addLeadingZeros */.F)(date.getHours() % 12 || 12, token.length); }, // Hour [0-23] H(date, token) { return (0,_addLeadingZeros_js__rspack_import_0/* .addLeadingZeros */.F)(date.getHours(), token.length); }, // Minute m(date, token) { return (0,_addLeadingZeros_js__rspack_import_0/* .addLeadingZeros */.F)(date.getMinutes(), token.length); }, // Second s(date, token) { return (0,_addLeadingZeros_js__rspack_import_0/* .addLeadingZeros */.F)(date.getSeconds(), token.length); }, // Fraction of second S(date, token) { const numberOfDigits = token.length; const milliseconds = date.getMilliseconds(); const fractionalSeconds = Math.trunc( milliseconds * Math.pow(10, numberOfDigits - 3), ); return (0,_addLeadingZeros_js__rspack_import_0/* .addLeadingZeros */.F)(fractionalSeconds, token.length); }, }; }, 13853(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { m: () => (longFormatters) }); const dateLongFormatter = (pattern, formatLong) => { switch (pattern) { case "P": return formatLong.date({ width: "short" }); case "PP": return formatLong.date({ width: "medium" }); case "PPP": return formatLong.date({ width: "long" }); case "PPPP": default: return formatLong.date({ width: "full" }); } }; const timeLongFormatter = (pattern, formatLong) => { switch (pattern) { case "p": return formatLong.time({ width: "short" }); case "pp": return formatLong.time({ width: "medium" }); case "ppp": return formatLong.time({ width: "long" }); case "pppp": default: return formatLong.time({ width: "full" }); } }; const dateTimeLongFormatter = (pattern, formatLong) => { const matchResult = pattern.match(/(P+)(p+)?/) || []; const datePattern = matchResult[1]; const timePattern = matchResult[2]; if (!timePattern) { return dateLongFormatter(pattern, formatLong); } let dateTimeFormat; switch (datePattern) { case "P": dateTimeFormat = formatLong.dateTime({ width: "short" }); break; case "PP": dateTimeFormat = formatLong.dateTime({ width: "medium" }); break; case "PPP": dateTimeFormat = formatLong.dateTime({ width: "long" }); break; case "PPPP": default: dateTimeFormat = formatLong.dateTime({ width: "full" }); break; } return dateTimeFormat .replace("{{date}}", dateLongFormatter(datePattern, formatLong)) .replace("{{time}}", timeLongFormatter(timePattern, formatLong)); }; const longFormatters = { p: timeLongFormatter, P: dateTimeLongFormatter, }; }, 93517(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { G: () => (getTimezoneOffsetInMilliseconds) }); /* import */ var _toDate_js__rspack_import_0 = __webpack_require__(64494); /** * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds. * They usually appear for dates that denote time before the timezones were introduced * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891 * and GMT+01:00:00 after that date) * * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above, * which would lead to incorrect calculations. * * This function returns the timezone offset in milliseconds that takes seconds in account. */ function getTimezoneOffsetInMilliseconds(date) { const _date = (0,_toDate_js__rspack_import_0/* .toDate */.a)(date); const utcDate = new Date( Date.UTC( _date.getFullYear(), _date.getMonth(), _date.getDate(), _date.getHours(), _date.getMinutes(), _date.getSeconds(), _date.getMilliseconds(), ), ); utcDate.setUTCFullYear(_date.getFullYear()); return +date - +utcDate; } }, 14190(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { x: () => (normalizeDates) }); /* import */ var _constructFrom_js__rspack_import_0 = __webpack_require__(79694); function normalizeDates(context, ...dates) { const normalize = _constructFrom_js__rspack_import_0/* .constructFrom.bind */.w.bind( null, context || dates.find((date) => typeof date === "object"), ); return dates.map(normalize); } }, 79764(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { Ss: () => (warnOrThrowProtectedError), ef: () => (isProtectedDayOfYearToken), xM: () => (isProtectedWeekYearToken) }); const dayOfYearTokenRE = /^D+$/; const weekYearTokenRE = /^Y+$/; const throwTokens = ["D", "DD", "YY", "YYYY"]; function isProtectedDayOfYearToken(token) { return dayOfYearTokenRE.test(token); } function isProtectedWeekYearToken(token) { return weekYearTokenRE.test(token); } function warnOrThrowProtectedError(token, format, input) { const _message = message(token, format, input); console.warn(_message); if (throwTokens.includes(token)) throw new RangeError(_message); } function message(token, format, input) { const subject = token[0] === "Y" ? "years" : "days of the month"; return `Use \`${token.toLowerCase()}\` instead of \`${token}\` (in \`${format}\`) for formatting ${subject} to the input \`${input}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`; } }, 89174(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { _P: () => (constructFromSymbol), my: () => (millisecondsInWeek), w4: () => (millisecondsInDay) }); /** * @module constants * @summary Useful constants * @description * Collection of useful date constants. * * The constants could be imported from `date-fns/constants`: * * ```ts * import { maxTime, minTime } from "./constants/date-fns/constants"; * * function isAllowedTime(time) { * return time <= maxTime && time >= minTime; * } * ``` */ /** * @constant * @name daysInWeek * @summary Days in 1 week. */ const daysInWeek = 7; /** * @constant * @name daysInYear * @summary Days in 1 year. * * @description * How many days in a year. * * One years equals 365.2425 days according to the formula: * * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400. * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days */ const daysInYear = 365.2425; /** * @constant * @name maxTime * @summary Maximum allowed time. * * @example * import { maxTime } from "./constants/date-fns/constants"; * * const isValid = 8640000000000001 <= maxTime; * //=> false * * new Date(8640000000000001); * //=> Invalid Date */ const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000; /** * @constant * @name minTime * @summary Minimum allowed time. * * @example * import { minTime } from "./constants/date-fns/constants"; * * const isValid = -8640000000000001 >= minTime; * //=> false * * new Date(-8640000000000001) * //=> Invalid Date */ const minTime = (/* unused pure expression or super */ null && (-maxTime)); /** * @constant * @name millisecondsInWeek * @summary Milliseconds in 1 week. */ const millisecondsInWeek = 604800000; /** * @constant * @name millisecondsInDay * @summary Milliseconds in 1 day. */ const millisecondsInDay = 86400000; /** * @constant * @name millisecondsInMinute * @summary Milliseconds in 1 minute */ const millisecondsInMinute = 60000; /** * @constant * @name millisecondsInHour * @summary Milliseconds in 1 hour */ const millisecondsInHour = 3600000; /** * @constant * @name millisecondsInSecond * @summary Milliseconds in 1 second */ const millisecondsInSecond = 1000; /** * @constant * @name minutesInYear * @summary Minutes in 1 year. */ const minutesInYear = 525600; /** * @constant * @name minutesInMonth * @summary Minutes in 1 month. */ const minutesInMonth = 43200; /** * @constant * @name minutesInDay * @summary Minutes in 1 day. */ const minutesInDay = 1440; /** * @constant * @name minutesInHour * @summary Minutes in 1 hour. */ const minutesInHour = 60; /** * @constant * @name monthsInQuarter * @summary Months in 1 quarter. */ const monthsInQuarter = 3; /** * @constant * @name monthsInYear * @summary Months in 1 year. */ const monthsInYear = 12; /** * @constant * @name quartersInYear * @summary Quarters in 1 year */ const quartersInYear = 4; /** * @constant * @name secondsInHour * @summary Seconds in 1 hour. */ const secondsInHour = 3600; /** * @constant * @name secondsInMinute * @summary Seconds in 1 minute. */ const secondsInMinute = 60; /** * @constant * @name secondsInDay * @summary Seconds in 1 day. */ const secondsInDay = (/* unused pure expression or super */ null && (secondsInHour * 24)); /** * @constant * @name secondsInWeek * @summary Seconds in 1 week. */ const secondsInWeek = (/* unused pure expression or super */ null && (secondsInDay * 7)); /** * @constant * @name secondsInYear * @summary Seconds in 1 year. */ const secondsInYear = (/* unused pure expression or super */ null && (secondsInDay * daysInYear)); /** * @constant * @name secondsInMonth * @summary Seconds in 1 month */ const secondsInMonth = (/* unused pure expression or super */ null && (secondsInYear / 12)); /** * @constant * @name secondsInQuarter * @summary Seconds in 1 quarter. */ const secondsInQuarter = (/* unused pure expression or super */ null && (secondsInMonth * 3)); /** * @constant * @name constructFromSymbol * @summary Symbol enabling Date extensions to inherit properties from the reference date. * * The symbol is used to enable the `constructFrom` function to construct a date * using a reference date and a value. It allows to transfer extra properties * from the reference date to the new date. It's useful for extensions like * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as * a constructor argument. */ const constructFromSymbol = Symbol.for("constructDateFrom"); }, 79694(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { w: () => (constructFrom) }); /* import */ var _constants_js__rspack_import_0 = __webpack_require__(89174); /** * @name constructFrom * @category Generic Helpers * @summary Constructs a date using the reference date and the value * * @description * The function constructs a new date using the constructor from the reference * date and the given value. It helps to build generic functions that accept * date extensions. * * It defaults to `Date` if the passed reference date is a number or a string. * * Starting from v3.7.0, it allows to construct a date using `[Symbol.for("constructDateFrom")]` * enabling to transfer extra properties from the reference date to the new date. * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz) * that accept a time zone as a constructor argument. * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * * @param date - The reference date to take constructor from * @param value - The value to create the date * * @returns Date initialized using the given date and value * * @example * import { constructFrom } from "./constructFrom/date-fns"; * * // A function that clones a date preserving the original type * function cloneDate(date: DateType): DateType { * return constructFrom( * date, // Use constructor from the given date * date.getTime() // Use the date value to create a new date * ); * } */ function constructFrom(date, value) { if (typeof date === "function") return date(value); if (date && typeof date === "object" && _constants_js__rspack_import_0/* .constructFromSymbol */._P in date) return date[_constants_js__rspack_import_0/* .constructFromSymbol */._P](value); if (date instanceof Date) return new date.constructor(value); return new Date(value); } // Fallback for modularized imports: /* unused export default */ var __rspack_default_export = ((/* unused pure expression or super */ null && (constructFrom))); }, 37198(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { m: () => (differenceInCalendarDays) }); /* import */ var _lib_getTimezoneOffsetInMilliseconds_js__rspack_import_2 = __webpack_require__(93517); /* import */ var _lib_normalizeDates_js__rspack_import_0 = __webpack_require__(14190); /* import */ var _constants_js__rspack_import_3 = __webpack_require__(89174); /* import */ var _startOfDay_js__rspack_import_1 = __webpack_require__(19630); /** * The {@link differenceInCalendarDays} function options. */ /** * @name differenceInCalendarDays * @category Day Helpers * @summary Get the number of calendar days between the given dates. * * @description * Get the number of calendar days between the given dates. This means that the times are removed * from the dates and then the difference in days is calculated. * * @param laterDate - The later date * @param earlierDate - The earlier date * @param options - The options object * * @returns The number of calendar days * * @example * // How many calendar days are between * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00? * const result = differenceInCalendarDays( * new Date(2012, 6, 2, 0, 0), * new Date(2011, 6, 2, 23, 0) * ) * //=> 366 * // How many calendar days are between * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00? * const result = differenceInCalendarDays( * new Date(2011, 6, 3, 0, 1), * new Date(2011, 6, 2, 23, 59) * ) * //=> 1 */ function differenceInCalendarDays(laterDate, earlierDate, options) { const [laterDate_, earlierDate_] = (0,_lib_normalizeDates_js__rspack_import_0/* .normalizeDates */.x)( options?.in, laterDate, earlierDate, ); const laterStartOfDay = (0,_startOfDay_js__rspack_import_1/* .startOfDay */.o)(laterDate_); const earlierStartOfDay = (0,_startOfDay_js__rspack_import_1/* .startOfDay */.o)(earlierDate_); const laterTimestamp = +laterStartOfDay - (0,_lib_getTimezoneOffsetInMilliseconds_js__rspack_import_2/* .getTimezoneOffsetInMilliseconds */.G)(laterStartOfDay); const earlierTimestamp = +earlierStartOfDay - (0,_lib_getTimezoneOffsetInMilliseconds_js__rspack_import_2/* .getTimezoneOffsetInMilliseconds */.G)(earlierStartOfDay); // Round the number of days to the nearest integer because the number of // milliseconds in a day is not constant (e.g. it's different in the week of // the daylight saving time clock shift). return Math.round((laterTimestamp - earlierTimestamp) / _constants_js__rspack_import_3/* .millisecondsInDay */.w4); } // Fallback for modularized imports: /* unused export default */ var __rspack_default_export = ((/* unused pure expression or super */ null && (differenceInCalendarDays))); }, 72664(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { GP: () => (format) }); /* import */ var _lib_defaultLocale_js__rspack_import_1 = __webpack_require__(73492); /* import */ var _lib_defaultOptions_js__rspack_import_0 = __webpack_require__(74499); /* import */ var _lib_format_formatters_js__rspack_import_5 = __webpack_require__(27643); /* import */ var _lib_format_longFormatters_js__rspack_import_4 = __webpack_require__(13853); /* import */ var _lib_protectedTokens_js__rspack_import_6 = __webpack_require__(79764); /* import */ var _isValid_js__rspack_import_3 = __webpack_require__(42205); /* import */ var _toDate_js__rspack_import_2 = __webpack_require__(64494); // Rexports of internal for libraries to use. // See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874 // This RegExp consists of three parts separated by `|`: // - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token // (one of the certain letters followed by `o`) // - (\w)\1* matches any sequences of the same letter // - '' matches two quote characters in a row // - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('), // except a single quote symbol, which ends the sequence. // Two quote characters do not end the sequence. // If there is no matching single quote // then the sequence will continue until the end of the string. // - . matches any single character unmatched by previous parts of the RegExps const formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also // sequences of symbols P, p, and the combinations like `PPPPPPPppppp` const longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g; const escapedStringRegExp = /^'([^]*?)'?$/; const doubleQuoteRegExp = /''/g; const unescapedLatinCharacterRegExp = /[a-zA-Z]/; /** * The {@link format} function options. */ /** * @name format * @alias formatDate * @category Common Helpers * @summary Format the date. * * @description * Return the formatted date string in the given format. The result may vary by locale. * * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries. * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md * * The characters wrapped between two single quotes characters (') are escaped. * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote. * (see the last example) * * Format of the string is based on Unicode Technical Standard #35: * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table * with a few additions (see note 7 below the table). * * Accepted patterns: * | Unit | Pattern | Result examples | Notes | * |---------------------------------|---------|-----------------------------------|-------| * | Era | G..GGG | AD, BC | | * | | GGGG | Anno Domini, Before Christ | 2 | * | | GGGGG | A, B | | * | Calendar year | y | 44, 1, 1900, 2017 | 5 | * | | yo | 44th, 1st, 0th, 17th | 5,7 | * | | yy | 44, 01, 00, 17 | 5 | * | | yyy | 044, 001, 1900, 2017 | 5 | * | | yyyy | 0044, 0001, 1900, 2017 | 5 | * | | yyyyy | ... | 3,5 | * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 | * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 | * | | YY | 44, 01, 00, 17 | 5,8 | * | | YYY | 044, 001, 1900, 2017 | 5 | * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 | * | | YYYYY | ... | 3,5 | * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 | * | | RR | -43, 00, 01, 1900, 2017 | 5,7 | * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 | * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 | * | | RRRRR | ... | 3,5,7 | * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 | * | | uu | -43, 01, 1900, 2017 | 5 | * | | uuu | -043, 001, 1900, 2017 | 5 | * | | uuuu | -0043, 0001, 1900, 2017 | 5 | * | | uuuuu | ... | 3,5 | * | Quarter (formatting) | Q | 1, 2, 3, 4 | | * | | Qo | 1st, 2nd, 3rd, 4th | 7 | * | | QQ | 01, 02, 03, 04 | | * | | QQQ | Q1, Q2, Q3, Q4 | | * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 | * | | QQQQQ | 1, 2, 3, 4 | 4 | * | Quarter (stand-alone) | q | 1, 2, 3, 4 | | * | | qo | 1st, 2nd, 3rd, 4th | 7 | * | | qq | 01, 02, 03, 04 | | * | | qqq | Q1, Q2, Q3, Q4 | | * | | qqqq | 1st quarter, 2nd quarter, ... | 2 | * | | qqqqq | 1, 2, 3, 4 | 4 | * | Month (formatting) | M | 1, 2, ..., 12 | | * | | Mo | 1st, 2nd, ..., 12th | 7 | * | | MM | 01, 02, ..., 12 | | * | | MMM | Jan, Feb, ..., Dec | | * | | MMMM | January, February, ..., December | 2 | * | | MMMMM | J, F, ..., D | | * | Month (stand-alone) | L | 1, 2, ..., 12 | | * | | Lo | 1st, 2nd, ..., 12th | 7 | * | | LL | 01, 02, ..., 12 | | * | | LLL | Jan, Feb, ..., Dec | | * | | LLLL | January, February, ..., December | 2 | * | | LLLLL | J, F, ..., D | | * | Local week of year | w | 1, 2, ..., 53 | | * | | wo | 1st, 2nd, ..., 53th | 7 | * | | ww | 01, 02, ..., 53 | | * | ISO week of year | I | 1, 2, ..., 53 | 7 | * | | Io | 1st, 2nd, ..., 53th | 7 | * | | II | 01, 02, ..., 53 | 7 | * | Day of month | d | 1, 2, ..., 31 | | * | | do | 1st, 2nd, ..., 31st | 7 | * | | dd | 01, 02, ..., 31 | | * | Day of year | D | 1, 2, ..., 365, 366 | 9 | * | | Do | 1st, 2nd, ..., 365th, 366th | 7 | * | | DD | 01, 02, ..., 365, 366 | 9 | * | | DDD | 001, 002, ..., 365, 366 | | * | | DDDD | ... | 3 | * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | | * | | EEEE | Monday, Tuesday, ..., Sunday | 2 | * | | EEEEE | M, T, W, T, F, S, S | | * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | | * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 | * | | io | 1st, 2nd, ..., 7th | 7 | * | | ii | 01, 02, ..., 07 | 7 | * | | iii | Mon, Tue, Wed, ..., Sun | 7 | * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 | * | | iiiii | M, T, W, T, F, S, S | 7 | * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 | * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | | * | | eo | 2nd, 3rd, ..., 1st | 7 | * | | ee | 02, 03, ..., 01 | | * | | eee | Mon, Tue, Wed, ..., Sun | | * | | eeee | Monday, Tuesday, ..., Sunday | 2 | * | | eeeee | M, T, W, T, F, S, S | | * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | | * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | | * | | co | 2nd, 3rd, ..., 1st | 7 | * | | cc | 02, 03, ..., 01 | | * | | ccc | Mon, Tue, Wed, ..., Sun | | * | | cccc | Monday, Tuesday, ..., Sunday | 2 | * | | ccccc | M, T, W, T, F, S, S | | * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | | * | AM, PM | a..aa | AM, PM | | * | | aaa | am, pm | | * | | aaaa | a.m., p.m. | 2 | * | | aaaaa | a, p | | * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | | * | | bbb | am, pm, noon, midnight | | * | | bbbb | a.m., p.m., noon, midnight | 2 | * | | bbbbb | a, p, n, mi | | * | Flexible day period | B..BBB | at night, in the morning, ... | | * | | BBBB | at night, in the morning, ... | 2 | * | | BBBBB | at night, in the morning, ... | | * | Hour [1-12] | h | 1, 2, ..., 11, 12 | | * | | ho | 1st, 2nd, ..., 11th, 12th | 7 | * | | hh | 01, 02, ..., 11, 12 | | * | Hour [0-23] | H | 0, 1, 2, ..., 23 | | * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 | * | | HH | 00, 01, 02, ..., 23 | | * | Hour [0-11] | K | 1, 2, ..., 11, 0 | | * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 | * | | KK | 01, 02, ..., 11, 00 | | * | Hour [1-24] | k | 24, 1, 2, ..., 23 | | * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 | * | | kk | 24, 01, 02, ..., 23 | | * | Minute | m | 0, 1, ..., 59 | | * | | mo | 0th, 1st, ..., 59th | 7 | * | | mm | 00, 01, ..., 59 | | * | Second | s | 0, 1, ..., 59 | | * | | so | 0th, 1st, ..., 59th | 7 | * | | ss | 00, 01, ..., 59 | | * | Fraction of second | S | 0, 1, ..., 9 | | * | | SS | 00, 01, ..., 99 | | * | | SSS | 000, 001, ..., 999 | | * | | SSSS | ... | 3 | * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | | * | | XX | -0800, +0530, Z | | * | | XXX | -08:00, +05:30, Z | | * | | XXXX | -0800, +0530, Z, +123456 | 2 | * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | | * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | | * | | xx | -0800, +0530, +0000 | | * | | xxx | -08:00, +05:30, +00:00 | 2 | * | | xxxx | -0800, +0530, +0000, +123456 | | * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | | * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | | * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 | * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 | * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 | * | Seconds timestamp | t | 512969520 | 7 | * | | tt | ... | 3,7 | * | Milliseconds timestamp | T | 512969520900 | 7 | * | | TT | ... | 3,7 | * | Long localized date | P | 04/29/1453 | 7 | * | | PP | Apr 29, 1453 | 7 | * | | PPP | April 29th, 1453 | 7 | * | | PPPP | Friday, April 29th, 1453 | 2,7 | * | Long localized time | p | 12:00 AM | 7 | * | | pp | 12:00:00 AM | 7 | * | | ppp | 12:00:00 AM GMT+2 | 7 | * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 | * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 | * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 | * | | PPPppp | April 29th, 1453 at ... | 7 | * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 | * Notes: * 1. "Formatting" units (e.g. formatting quarter) in the default en-US locale * are the same as "stand-alone" units, but are different in some languages. * "Formatting" units are declined according to the rules of the language * in the context of a date. "Stand-alone" units are always nominative singular: * * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'` * * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'` * * 2. Any sequence of the identical letters is a pattern, unless it is escaped by * the single quote characters (see below). * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`) * the output will be the same as default pattern for this unit, usually * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units * are marked with "2" in the last column of the table. * * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'` * * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'` * * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'` * * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'` * * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'` * * 3. Some patterns could be unlimited length (such as `yyyyyyyy`). * The output will be padded with zeros to match the length of the pattern. * * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'` * * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales. * These tokens represent the shortest form of the quarter. * * 5. The main difference between `y` and `u` patterns are B.C. years: * * | Year | `y` | `u` | * |------|-----|-----| * | AC 1 | 1 | 1 | * | BC 1 | 1 | 0 | * | BC 2 | 2 | -1 | * * Also `yy` always returns the last two digits of a year, * while `uu` pads single digit years to 2 characters and returns other years unchanged: * * | Year | `yy` | `uu` | * |------|------|------| * | 1 | 01 | 01 | * | 14 | 14 | 14 | * | 376 | 76 | 376 | * | 1453 | 53 | 1453 | * * The same difference is true for local and ISO week-numbering years (`Y` and `R`), * except local week-numbering years are dependent on `options.weekStartsOn` * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear) * and [getWeekYear](https://date-fns.org/docs/getWeekYear)). * * 6. Specific non-location timezones are currently unavailable in `date-fns`, * so right now these tokens fall back to GMT timezones. * * 7. These patterns are not in the Unicode Technical Standard #35: * - `i`: ISO day of week * - `I`: ISO week of year * - `R`: ISO week-numbering year * - `t`: seconds timestamp * - `T`: milliseconds timestamp * - `o`: ordinal number modifier * - `P`: long localized date * - `p`: long localized time * * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years. * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md * * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month. * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md * * @param date - The original date * @param format - The string of tokens * @param options - An object with options * * @returns The formatted date string * * @throws `date` must not be Invalid Date * @throws `options.locale` must contain `localize` property * @throws `options.locale` must contain `formatLong` property * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md * @throws format string contains an unescaped latin alphabet character * * @example * // Represent 11 February 2014 in middle-endian format: * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy') * //=> '02/11/2014' * * @example * // Represent 2 July 2014 in Esperanto: * import { eoLocale } from 'date-fns/locale/eo' * const result = format(new Date(2014, 6, 2), "do 'de' MMMM yyyy", { * locale: eoLocale * }) * //=> '2-a de julio 2014' * * @example * // Escape string by single quote characters: * const result = format(new Date(2014, 6, 2, 15), "h 'o''clock'") * //=> "3 o'clock" */ function format(date, formatStr, options) { const defaultOptions = (0,_lib_defaultOptions_js__rspack_import_0/* .getDefaultOptions */.q)(); const locale = options?.locale ?? defaultOptions.locale ?? _lib_defaultLocale_js__rspack_import_1/* .enUS */.c; const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions.firstWeekContainsDate ?? defaultOptions.locale?.options?.firstWeekContainsDate ?? 1; const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions.weekStartsOn ?? defaultOptions.locale?.options?.weekStartsOn ?? 0; const originalDate = (0,_toDate_js__rspack_import_2/* .toDate */.a)(date, options?.in); if (!(0,_isValid_js__rspack_import_3/* .isValid */.f)(originalDate)) { throw new RangeError("Invalid time value"); } let parts = formatStr .match(longFormattingTokensRegExp) .map((substring) => { const firstCharacter = substring[0]; if (firstCharacter === "p" || firstCharacter === "P") { const longFormatter = _lib_format_longFormatters_js__rspack_import_4/* .longFormatters */.m[firstCharacter]; return longFormatter(substring, locale.formatLong); } return substring; }) .join("") .match(formattingTokensRegExp) .map((substring) => { // Replace two single quote characters with one single quote character if (substring === "''") { return { isToken: false, value: "'" }; } const firstCharacter = substring[0]; if (firstCharacter === "'") { return { isToken: false, value: cleanEscapedString(substring) }; } if (_lib_format_formatters_js__rspack_import_5/* .formatters */._[firstCharacter]) { return { isToken: true, value: substring }; } if (firstCharacter.match(unescapedLatinCharacterRegExp)) { throw new RangeError( "Format string contains an unescaped latin alphabet character `" + firstCharacter + "`", ); } return { isToken: false, value: substring }; }); // invoke localize preprocessor (only for french locales at the moment) if (locale.localize.preprocessor) { parts = locale.localize.preprocessor(originalDate, parts); } const formatterOptions = { firstWeekContainsDate, weekStartsOn, locale, }; return parts .map((part) => { if (!part.isToken) return part.value; const token = part.value; if ( (!options?.useAdditionalWeekYearTokens && (0,_lib_protectedTokens_js__rspack_import_6/* .isProtectedWeekYearToken */.xM)(token)) || (!options?.useAdditionalDayOfYearTokens && (0,_lib_protectedTokens_js__rspack_import_6/* .isProtectedDayOfYearToken */.ef)(token)) ) { (0,_lib_protectedTokens_js__rspack_import_6/* .warnOrThrowProtectedError */.Ss)(token, formatStr, String(date)); } const formatter = _lib_format_formatters_js__rspack_import_5/* .formatters */._[token[0]]; return formatter(originalDate, token, locale.localize, formatterOptions); }) .join(""); } function cleanEscapedString(input) { const matched = input.match(escapedStringRegExp); if (!matched) { return input; } return matched[1].replace(doubleQuoteRegExp, "'"); } // Fallback for modularized imports: /* unused export default */ var __rspack_default_export = ((/* unused pure expression or super */ null && (format))); }, 50797(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { F: () => (getDayOfYear) }); /* import */ var _differenceInCalendarDays_js__rspack_import_1 = __webpack_require__(37198); /* import */ var _startOfYear_js__rspack_import_2 = __webpack_require__(17115); /* import */ var _toDate_js__rspack_import_0 = __webpack_require__(64494); /** * The {@link getDayOfYear} function options. */ /** * @name getDayOfYear * @category Day Helpers * @summary Get the day of the year of the given date. * * @description * Get the day of the year of the given date. * * @param date - The given date * @param options - The options * * @returns The day of year * * @example * // Which day of the year is 2 July 2014? * const result = getDayOfYear(new Date(2014, 6, 2)) * //=> 183 */ function getDayOfYear(date, options) { const _date = (0,_toDate_js__rspack_import_0/* .toDate */.a)(date, options?.in); const diff = (0,_differenceInCalendarDays_js__rspack_import_1/* .differenceInCalendarDays */.m)(_date, (0,_startOfYear_js__rspack_import_2/* .startOfYear */.D)(_date)); const dayOfYear = diff + 1; return dayOfYear; } // Fallback for modularized imports: /* unused export default */ var __rspack_default_export = ((/* unused pure expression or super */ null && (getDayOfYear))); }, 50418(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { s: () => (getISOWeek) }); /* import */ var _constants_js__rspack_import_3 = __webpack_require__(89174); /* import */ var _startOfISOWeek_js__rspack_import_1 = __webpack_require__(76525); /* import */ var _startOfISOWeekYear_js__rspack_import_2 = __webpack_require__(40444); /* import */ var _toDate_js__rspack_import_0 = __webpack_require__(64494); /** * The {@link getISOWeek} function options. */ /** * @name getISOWeek * @category ISO Week Helpers * @summary Get the ISO week of the given date. * * @description * Get the ISO week of the given date. * * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date * * @param date - The given date * @param options - The options * * @returns The ISO week * * @example * // Which week of the ISO-week numbering year is 2 January 2005? * const result = getISOWeek(new Date(2005, 0, 2)) * //=> 53 */ function getISOWeek(date, options) { const _date = (0,_toDate_js__rspack_import_0/* .toDate */.a)(date, options?.in); const diff = +(0,_startOfISOWeek_js__rspack_import_1/* .startOfISOWeek */.b)(_date) - +(0,_startOfISOWeekYear_js__rspack_import_2/* .startOfISOWeekYear */.w)(_date); // Round the number of weeks to the nearest integer because the number of // milliseconds in a week is not constant (e.g. it's different in the week of // the daylight saving time clock shift). return Math.round(diff / _constants_js__rspack_import_3/* .millisecondsInWeek */.my) + 1; } // Fallback for modularized imports: /* unused export default */ var __rspack_default_export = ((/* unused pure expression or super */ null && (getISOWeek))); }, 35119(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { p: () => (getISOWeekYear) }); /* import */ var _constructFrom_js__rspack_import_1 = __webpack_require__(79694); /* import */ var _startOfISOWeek_js__rspack_import_2 = __webpack_require__(76525); /* import */ var _toDate_js__rspack_import_0 = __webpack_require__(64494); /** * The {@link getISOWeekYear} function options. */ /** * @name getISOWeekYear * @category ISO Week-Numbering Year Helpers * @summary Get the ISO week-numbering year of the given date. * * @description * Get the ISO week-numbering year of the given date, * which always starts 3 days before the year's first Thursday. * * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date * * @param date - The given date * * @returns The ISO week-numbering year * * @example * // Which ISO-week numbering year is 2 January 2005? * const result = getISOWeekYear(new Date(2005, 0, 2)) * //=> 2004 */ function getISOWeekYear(date, options) { const _date = (0,_toDate_js__rspack_import_0/* .toDate */.a)(date, options?.in); const year = _date.getFullYear(); const fourthOfJanuaryOfNextYear = (0,_constructFrom_js__rspack_import_1/* .constructFrom */.w)(_date, 0); fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4); fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0); const startOfNextYear = (0,_startOfISOWeek_js__rspack_import_2/* .startOfISOWeek */.b)(fourthOfJanuaryOfNextYear); const fourthOfJanuaryOfThisYear = (0,_constructFrom_js__rspack_import_1/* .constructFrom */.w)(_date, 0); fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4); fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0); const startOfThisYear = (0,_startOfISOWeek_js__rspack_import_2/* .startOfISOWeek */.b)(fourthOfJanuaryOfThisYear); if (_date.getTime() >= startOfNextYear.getTime()) { return year + 1; } else if (_date.getTime() >= startOfThisYear.getTime()) { return year; } else { return year - 1; } } // Fallback for modularized imports: /* unused export default */ var __rspack_default_export = ((/* unused pure expression or super */ null && (getISOWeekYear))); }, 12727(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { N: () => (getWeek) }); /* import */ var _constants_js__rspack_import_3 = __webpack_require__(89174); /* import */ var _startOfWeek_js__rspack_import_1 = __webpack_require__(71046); /* import */ var _startOfWeekYear_js__rspack_import_2 = __webpack_require__(71179); /* import */ var _toDate_js__rspack_import_0 = __webpack_require__(64494); /** * The {@link getWeek} function options. */ /** * @name getWeek * @category Week Helpers * @summary Get the local week index of the given date. * * @description * Get the local week index of the given date. * The exact calculation depends on the values of * `options.weekStartsOn` (which is the index of the first day of the week) * and `options.firstWeekContainsDate` (which is the day of January, which is always in * the first week of the week-numbering year) * * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system * * @param date - The given date * @param options - An object with options * * @returns The week * * @example * // Which week of the local week numbering year is 2 January 2005 with default options? * const result = getWeek(new Date(2005, 0, 2)) * //=> 2 * * @example * // Which week of the local week numbering year is 2 January 2005, * // if Monday is the first day of the week, * // and the first week of the year always contains 4 January? * const result = getWeek(new Date(2005, 0, 2), { * weekStartsOn: 1, * firstWeekContainsDate: 4 * }) * //=> 53 */ function getWeek(date, options) { const _date = (0,_toDate_js__rspack_import_0/* .toDate */.a)(date, options?.in); const diff = +(0,_startOfWeek_js__rspack_import_1/* .startOfWeek */.k)(_date, options) - +(0,_startOfWeekYear_js__rspack_import_2/* .startOfWeekYear */.b)(_date, options); // Round the number of weeks to the nearest integer because the number of // milliseconds in a week is not constant (e.g. it's different in the week of // the daylight saving time clock shift). return Math.round(diff / _constants_js__rspack_import_3/* .millisecondsInWeek */.my) + 1; } // Fallback for modularized imports: /* unused export default */ var __rspack_default_export = ((/* unused pure expression or super */ null && (getWeek))); }, 54594(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { h: () => (getWeekYear) }); /* import */ var _lib_defaultOptions_js__rspack_import_1 = __webpack_require__(74499); /* import */ var _constructFrom_js__rspack_import_2 = __webpack_require__(79694); /* import */ var _startOfWeek_js__rspack_import_3 = __webpack_require__(71046); /* import */ var _toDate_js__rspack_import_0 = __webpack_require__(64494); /** * The {@link getWeekYear} function options. */ /** * @name getWeekYear * @category Week-Numbering Year Helpers * @summary Get the local week-numbering year of the given date. * * @description * Get the local week-numbering year of the given date. * The exact calculation depends on the values of * `options.weekStartsOn` (which is the index of the first day of the week) * and `options.firstWeekContainsDate` (which is the day of January, which is always in * the first week of the week-numbering year) * * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system * * @param date - The given date * @param options - An object with options. * * @returns The local week-numbering year * * @example * // Which week numbering year is 26 December 2004 with the default settings? * const result = getWeekYear(new Date(2004, 11, 26)) * //=> 2005 * * @example * // Which week numbering year is 26 December 2004 if week starts on Saturday? * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 }) * //=> 2004 * * @example * // Which week numbering year is 26 December 2004 if the first week contains 4 January? * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 }) * //=> 2004 */ function getWeekYear(date, options) { const _date = (0,_toDate_js__rspack_import_0/* .toDate */.a)(date, options?.in); const year = _date.getFullYear(); const defaultOptions = (0,_lib_defaultOptions_js__rspack_import_1/* .getDefaultOptions */.q)(); const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions.firstWeekContainsDate ?? defaultOptions.locale?.options?.firstWeekContainsDate ?? 1; const firstWeekOfNextYear = (0,_constructFrom_js__rspack_import_2/* .constructFrom */.w)(options?.in || date, 0); firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate); firstWeekOfNextYear.setHours(0, 0, 0, 0); const startOfNextYear = (0,_startOfWeek_js__rspack_import_3/* .startOfWeek */.k)(firstWeekOfNextYear, options); const firstWeekOfThisYear = (0,_constructFrom_js__rspack_import_2/* .constructFrom */.w)(options?.in || date, 0); firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate); firstWeekOfThisYear.setHours(0, 0, 0, 0); const startOfThisYear = (0,_startOfWeek_js__rspack_import_3/* .startOfWeek */.k)(firstWeekOfThisYear, options); if (+_date >= +startOfNextYear) { return year + 1; } else if (+_date >= +startOfThisYear) { return year; } else { return year - 1; } } // Fallback for modularized imports: /* unused export default */ var __rspack_default_export = ((/* unused pure expression or super */ null && (getWeekYear))); }, 75691(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { $: () => (isDate) }); /** * @name isDate * @category Common Helpers * @summary Is the given value a date? * * @description * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes. * * @param value - The value to check * * @returns True if the given value is a date * * @example * // For a valid date: * const result = isDate(new Date()) * //=> true * * @example * // For an invalid date: * const result = isDate(new Date(NaN)) * //=> true * * @example * // For some value: * const result = isDate('2014-02-31') * //=> false * * @example * // For an object: * const result = isDate({}) * //=> false */ function isDate(value) { return ( value instanceof Date || (typeof value === "object" && Object.prototype.toString.call(value) === "[object Date]") ); } // Fallback for modularized imports: /* unused export default */ var __rspack_default_export = ((/* unused pure expression or super */ null && (isDate))); }, 42205(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { f: () => (isValid) }); /* import */ var _isDate_js__rspack_import_0 = __webpack_require__(75691); /* import */ var _toDate_js__rspack_import_1 = __webpack_require__(64494); /** * @name isValid * @category Common Helpers * @summary Is the given date valid? * * @description * Returns false if argument is Invalid Date and true otherwise. * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate) * Invalid Date is a Date, whose time value is NaN. * * Time value of Date: http://es5.github.io/#x15.9.1.1 * * @param date - The date to check * * @returns The date is valid * * @example * // For the valid date: * const result = isValid(new Date(2014, 1, 31)) * //=> true * * @example * // For the value, convertible into a date: * const result = isValid(1393804800000) * //=> true * * @example * // For the invalid date: * const result = isValid(new Date('')) * //=> false */ function isValid(date) { return !((!(0,_isDate_js__rspack_import_0/* .isDate */.$)(date) && typeof date !== "number") || isNaN(+(0,_toDate_js__rspack_import_1/* .toDate */.a)(date))); } // Fallback for modularized imports: /* unused export default */ var __rspack_default_export = ((/* unused pure expression or super */ null && (isValid))); }, 55742(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { k: () => (buildFormatLongFn) }); function buildFormatLongFn(args) { return (options = {}) => { // TODO: Remove String() const width = options.width ? String(options.width) : args.defaultWidth; const format = args.formats[width] || args.formats[args.defaultWidth]; return format; }; } }, 76232(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { o: () => (buildLocalizeFn) }); /** * The localize function argument callback which allows to convert raw value to * the actual type. * * @param value - The value to convert * * @returns The converted value */ /** * The map of localized values for each width. */ /** * The index type of the locale unit value. It types conversion of units of * values that don't start at 0 (i.e. quarters). */ /** * Converts the unit value to the tuple of values. */ /** * The tuple of localized era values. The first element represents BC, * the second element represents AD. */ /** * The tuple of localized quarter values. The first element represents Q1. */ /** * The tuple of localized day values. The first element represents Sunday. */ /** * The tuple of localized month values. The first element represents January. */ function buildLocalizeFn(args) { return (value, options) => { const context = options?.context ? String(options.context) : "standalone"; let valuesArray; if (context === "formatting" && args.formattingValues) { const defaultWidth = args.defaultFormattingWidth || args.defaultWidth; const width = options?.width ? String(options.width) : defaultWidth; valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth]; } else { const defaultWidth = args.defaultWidth; const width = options?.width ? String(options.width) : args.defaultWidth; valuesArray = args.values[width] || args.values[defaultWidth]; } const index = args.argumentCallback ? args.argumentCallback(value) : value; // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it! return valuesArray[index]; }; } }, 69570(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (buildMatchFn) }); function buildMatchFn(args) { return (string, options = {}) => { const width = options.width; const matchPattern = (width && args.matchPatterns[width]) || args.matchPatterns[args.defaultMatchWidth]; const matchResult = string.match(matchPattern); if (!matchResult) { return null; } const matchedString = matchResult[0]; const parsePatterns = (width && args.parsePatterns[width]) || args.parsePatterns[args.defaultParseWidth]; const key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString)) : // [TODO] -- I challenge you to fix the type findKey(parsePatterns, (pattern) => pattern.test(matchedString)); let value; value = args.valueCallback ? args.valueCallback(key) : key; value = options.valueCallback ? // [TODO] -- I challenge you to fix the type options.valueCallback(value) : value; const rest = string.slice(matchedString.length); return { value, rest }; }; } function findKey(object, predicate) { for (const key in object) { if ( Object.prototype.hasOwnProperty.call(object, key) && predicate(object[key]) ) { return key; } } return undefined; } function findIndex(array, predicate) { for (let key = 0; key < array.length; key++) { if (predicate(array[key])) { return key; } } return undefined; } }, 95777(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { K: () => (buildMatchPatternFn) }); function buildMatchPatternFn(args) { return (string, options = {}) => { const matchResult = string.match(args.matchPattern); if (!matchResult) return null; const matchedString = matchResult[0]; const parseResult = string.match(args.parsePattern); if (!parseResult) return null; let value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]; // [TODO] I challenge you to fix the type value = options.valueCallback ? options.valueCallback(value) : value; const rest = string.slice(matchedString.length); return { value, rest }; }; } }, 73492(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { c: () => (enUS) }); /* import */ var _en_US_lib_formatDistance_js__rspack_import_0 = __webpack_require__(82158); /* import */ var _en_US_lib_formatLong_js__rspack_import_1 = __webpack_require__(68031); /* import */ var _en_US_lib_formatRelative_js__rspack_import_2 = __webpack_require__(71137); /* import */ var _en_US_lib_localize_js__rspack_import_3 = __webpack_require__(72073); /* import */ var _en_US_lib_match_js__rspack_import_4 = __webpack_require__(39261); /** * @category Locales * @summary English locale (United States). * @language English * @iso-639-2 eng * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp) * @author Lesha Koss [@leshakoss](https://github.com/leshakoss) */ const enUS = { code: "en-US", formatDistance: _en_US_lib_formatDistance_js__rspack_import_0/* .formatDistance */.B, formatLong: _en_US_lib_formatLong_js__rspack_import_1/* .formatLong */.s, formatRelative: _en_US_lib_formatRelative_js__rspack_import_2/* .formatRelative */.o, localize: _en_US_lib_localize_js__rspack_import_3/* .localize */.k, match: _en_US_lib_match_js__rspack_import_4/* .match */.Y, options: { weekStartsOn: 0 /* Sunday */, firstWeekContainsDate: 1, }, }; // Fallback for modularized imports: /* unused export default */ var __rspack_default_export = ((/* unused pure expression or super */ null && (enUS))); }, 82158(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { B: () => (formatDistance) }); const formatDistanceLocale = { lessThanXSeconds: { one: "less than a second", other: "less than {{count}} seconds", }, xSeconds: { one: "1 second", other: "{{count}} seconds", }, halfAMinute: "half a minute", lessThanXMinutes: { one: "less than a minute", other: "less than {{count}} minutes", }, xMinutes: { one: "1 minute", other: "{{count}} minutes", }, aboutXHours: { one: "about 1 hour", other: "about {{count}} hours", }, xHours: { one: "1 hour", other: "{{count}} hours", }, xDays: { one: "1 day", other: "{{count}} days", }, aboutXWeeks: { one: "about 1 week", other: "about {{count}} weeks", }, xWeeks: { one: "1 week", other: "{{count}} weeks", }, aboutXMonths: { one: "about 1 month", other: "about {{count}} months", }, xMonths: { one: "1 month", other: "{{count}} months", }, aboutXYears: { one: "about 1 year", other: "about {{count}} years", }, xYears: { one: "1 year", other: "{{count}} years", }, overXYears: { one: "over 1 year", other: "over {{count}} years", }, almostXYears: { one: "almost 1 year", other: "almost {{count}} years", }, }; const formatDistance = (token, count, options) => { let result; const tokenValue = formatDistanceLocale[token]; if (typeof tokenValue === "string") { result = tokenValue; } else if (count === 1) { result = tokenValue.one; } else { result = tokenValue.other.replace("{{count}}", count.toString()); } if (options?.addSuffix) { if (options.comparison && options.comparison > 0) { return "in " + result; } else { return result + " ago"; } } return result; }; }, 68031(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { s: () => (formatLong) }); /* import */ var _lib_buildFormatLongFn_js__rspack_import_0 = __webpack_require__(55742); const dateFormats = { full: "EEEE, MMMM do, y", long: "MMMM do, y", medium: "MMM d, y", short: "MM/dd/yyyy", }; const timeFormats = { full: "h:mm:ss a zzzz", long: "h:mm:ss a z", medium: "h:mm:ss a", short: "h:mm a", }; const dateTimeFormats = { full: "{{date}} 'at' {{time}}", long: "{{date}} 'at' {{time}}", medium: "{{date}}, {{time}}", short: "{{date}}, {{time}}", }; const formatLong = { date: (0,_lib_buildFormatLongFn_js__rspack_import_0/* .buildFormatLongFn */.k)({ formats: dateFormats, defaultWidth: "full", }), time: (0,_lib_buildFormatLongFn_js__rspack_import_0/* .buildFormatLongFn */.k)({ formats: timeFormats, defaultWidth: "full", }), dateTime: (0,_lib_buildFormatLongFn_js__rspack_import_0/* .buildFormatLongFn */.k)({ formats: dateTimeFormats, defaultWidth: "full", }), }; }, 71137(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { o: () => (formatRelative) }); const formatRelativeLocale = { lastWeek: "'last' eeee 'at' p", yesterday: "'yesterday at' p", today: "'today at' p", tomorrow: "'tomorrow at' p", nextWeek: "eeee 'at' p", other: "P", }; const formatRelative = (token, _date, _baseDate, _options) => formatRelativeLocale[token]; }, 72073(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { k: () => (localize) }); /* import */ var _lib_buildLocalizeFn_js__rspack_import_0 = __webpack_require__(76232); const eraValues = { narrow: ["B", "A"], abbreviated: ["BC", "AD"], wide: ["Before Christ", "Anno Domini"], }; const quarterValues = { narrow: ["1", "2", "3", "4"], abbreviated: ["Q1", "Q2", "Q3", "Q4"], wide: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"], }; // Note: in English, the names of days of the week and months are capitalized. // If you are making a new locale based on this one, check if the same is true for the language you're working on. // Generally, formatted dates should look like they are in the middle of a sentence, // e.g. in Spanish language the weekdays and months should be in the lowercase. const monthValues = { narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], abbreviated: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", ], wide: [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", ], }; const dayValues = { narrow: ["S", "M", "T", "W", "T", "F", "S"], short: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], abbreviated: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], wide: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", ], }; const dayPeriodValues = { narrow: { am: "a", pm: "p", midnight: "mi", noon: "n", morning: "morning", afternoon: "afternoon", evening: "evening", night: "night", }, abbreviated: { am: "AM", pm: "PM", midnight: "midnight", noon: "noon", morning: "morning", afternoon: "afternoon", evening: "evening", night: "night", }, wide: { am: "a.m.", pm: "p.m.", midnight: "midnight", noon: "noon", morning: "morning", afternoon: "afternoon", evening: "evening", night: "night", }, }; const formattingDayPeriodValues = { narrow: { am: "a", pm: "p", midnight: "mi", noon: "n", morning: "in the morning", afternoon: "in the afternoon", evening: "in the evening", night: "at night", }, abbreviated: { am: "AM", pm: "PM", midnight: "midnight", noon: "noon", morning: "in the morning", afternoon: "in the afternoon", evening: "in the evening", night: "at night", }, wide: { am: "a.m.", pm: "p.m.", midnight: "midnight", noon: "noon", morning: "in the morning", afternoon: "in the afternoon", evening: "in the evening", night: "at night", }, }; const ordinalNumber = (dirtyNumber, _options) => { const number = Number(dirtyNumber); // If ordinal numbers depend on context, for example, // if they are different for different grammatical genders, // use `options.unit`. // // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear', // 'day', 'hour', 'minute', 'second'. const rem100 = number % 100; if (rem100 > 20 || rem100 < 10) { switch (rem100 % 10) { case 1: return number + "st"; case 2: return number + "nd"; case 3: return number + "rd"; } } return number + "th"; }; const localize = { ordinalNumber, era: (0,_lib_buildLocalizeFn_js__rspack_import_0/* .buildLocalizeFn */.o)({ values: eraValues, defaultWidth: "wide", }), quarter: (0,_lib_buildLocalizeFn_js__rspack_import_0/* .buildLocalizeFn */.o)({ values: quarterValues, defaultWidth: "wide", argumentCallback: (quarter) => quarter - 1, }), month: (0,_lib_buildLocalizeFn_js__rspack_import_0/* .buildLocalizeFn */.o)({ values: monthValues, defaultWidth: "wide", }), day: (0,_lib_buildLocalizeFn_js__rspack_import_0/* .buildLocalizeFn */.o)({ values: dayValues, defaultWidth: "wide", }), dayPeriod: (0,_lib_buildLocalizeFn_js__rspack_import_0/* .buildLocalizeFn */.o)({ values: dayPeriodValues, defaultWidth: "wide", formattingValues: formattingDayPeriodValues, defaultFormattingWidth: "wide", }), }; }, 39261(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { Y: () => (match) }); /* import */ var _lib_buildMatchFn_js__rspack_import_1 = __webpack_require__(69570); /* import */ var _lib_buildMatchPatternFn_js__rspack_import_0 = __webpack_require__(95777); const matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i; const parseOrdinalNumberPattern = /\d+/i; const matchEraPatterns = { narrow: /^(b|a)/i, abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i, wide: /^(before christ|before common era|anno domini|common era)/i, }; const parseEraPatterns = { any: [/^b/i, /^(a|c)/i], }; const matchQuarterPatterns = { narrow: /^[1234]/i, abbreviated: /^q[1234]/i, wide: /^[1234](th|st|nd|rd)? quarter/i, }; const parseQuarterPatterns = { any: [/1/i, /2/i, /3/i, /4/i], }; const matchMonthPatterns = { narrow: /^[jfmasond]/i, abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i, wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i, }; const parseMonthPatterns = { narrow: [ /^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i, ], any: [ /^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i, ], }; const matchDayPatterns = { narrow: /^[smtwf]/i, short: /^(su|mo|tu|we|th|fr|sa)/i, abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i, wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i, }; const parseDayPatterns = { narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i], any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i], }; const matchDayPeriodPatterns = { narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i, any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i, }; const parseDayPeriodPatterns = { any: { am: /^a/i, pm: /^p/i, midnight: /^mi/i, noon: /^no/i, morning: /morning/i, afternoon: /afternoon/i, evening: /evening/i, night: /night/i, }, }; const match = { ordinalNumber: (0,_lib_buildMatchPatternFn_js__rspack_import_0/* .buildMatchPatternFn */.K)({ matchPattern: matchOrdinalNumberPattern, parsePattern: parseOrdinalNumberPattern, valueCallback: (value) => parseInt(value, 10), }), era: (0,_lib_buildMatchFn_js__rspack_import_1/* .buildMatchFn */.A)({ matchPatterns: matchEraPatterns, defaultMatchWidth: "wide", parsePatterns: parseEraPatterns, defaultParseWidth: "any", }), quarter: (0,_lib_buildMatchFn_js__rspack_import_1/* .buildMatchFn */.A)({ matchPatterns: matchQuarterPatterns, defaultMatchWidth: "wide", parsePatterns: parseQuarterPatterns, defaultParseWidth: "any", valueCallback: (index) => index + 1, }), month: (0,_lib_buildMatchFn_js__rspack_import_1/* .buildMatchFn */.A)({ matchPatterns: matchMonthPatterns, defaultMatchWidth: "wide", parsePatterns: parseMonthPatterns, defaultParseWidth: "any", }), day: (0,_lib_buildMatchFn_js__rspack_import_1/* .buildMatchFn */.A)({ matchPatterns: matchDayPatterns, defaultMatchWidth: "wide", parsePatterns: parseDayPatterns, defaultParseWidth: "any", }), dayPeriod: (0,_lib_buildMatchFn_js__rspack_import_1/* .buildMatchFn */.A)({ matchPatterns: matchDayPeriodPatterns, defaultMatchWidth: "any", parsePatterns: parseDayPeriodPatterns, defaultParseWidth: "any", }), }; }, 19630(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { o: () => (startOfDay) }); /* import */ var _toDate_js__rspack_import_0 = __webpack_require__(64494); /** * The {@link startOfDay} function options. */ /** * @name startOfDay * @category Day Helpers * @summary Return the start of a day for the given date. * * @description * Return the start of a day for the given date. * The result will be in the local timezone. * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The original date * @param options - The options * * @returns The start of a day * * @example * // The start of a day for 2 September 2014 11:55:00: * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0)) * //=> Tue Sep 02 2014 00:00:00 */ function startOfDay(date, options) { const _date = (0,_toDate_js__rspack_import_0/* .toDate */.a)(date, options?.in); _date.setHours(0, 0, 0, 0); return _date; } // Fallback for modularized imports: /* unused export default */ var __rspack_default_export = ((/* unused pure expression or super */ null && (startOfDay))); }, 76525(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { b: () => (startOfISOWeek) }); /* import */ var _startOfWeek_js__rspack_import_0 = __webpack_require__(71046); /** * The {@link startOfISOWeek} function options. */ /** * @name startOfISOWeek * @category ISO Week Helpers * @summary Return the start of an ISO week for the given date. * * @description * Return the start of an ISO week for the given date. * The result will be in the local timezone. * * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The original date * @param options - An object with options * * @returns The start of an ISO week * * @example * // The start of an ISO week for 2 September 2014 11:55:00: * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0)) * //=> Mon Sep 01 2014 00:00:00 */ function startOfISOWeek(date, options) { return (0,_startOfWeek_js__rspack_import_0/* .startOfWeek */.k)(date, { ...options, weekStartsOn: 1 }); } // Fallback for modularized imports: /* unused export default */ var __rspack_default_export = ((/* unused pure expression or super */ null && (startOfISOWeek))); }, 40444(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { w: () => (startOfISOWeekYear) }); /* import */ var _constructFrom_js__rspack_import_1 = __webpack_require__(79694); /* import */ var _getISOWeekYear_js__rspack_import_0 = __webpack_require__(35119); /* import */ var _startOfISOWeek_js__rspack_import_2 = __webpack_require__(76525); /** * The {@link startOfISOWeekYear} function options. */ /** * @name startOfISOWeekYear * @category ISO Week-Numbering Year Helpers * @summary Return the start of an ISO week-numbering year for the given date. * * @description * Return the start of an ISO week-numbering year, * which always starts 3 days before the year's first Thursday. * The result will be in the local timezone. * * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The original date * @param options - An object with options * * @returns The start of an ISO week-numbering year * * @example * // The start of an ISO week-numbering year for 2 July 2005: * const result = startOfISOWeekYear(new Date(2005, 6, 2)) * //=> Mon Jan 03 2005 00:00:00 */ function startOfISOWeekYear(date, options) { const year = (0,_getISOWeekYear_js__rspack_import_0/* .getISOWeekYear */.p)(date, options); const fourthOfJanuary = (0,_constructFrom_js__rspack_import_1/* .constructFrom */.w)(options?.in || date, 0); fourthOfJanuary.setFullYear(year, 0, 4); fourthOfJanuary.setHours(0, 0, 0, 0); return (0,_startOfISOWeek_js__rspack_import_2/* .startOfISOWeek */.b)(fourthOfJanuary); } // Fallback for modularized imports: /* unused export default */ var __rspack_default_export = ((/* unused pure expression or super */ null && (startOfISOWeekYear))); }, 71046(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { k: () => (startOfWeek) }); /* import */ var _lib_defaultOptions_js__rspack_import_0 = __webpack_require__(74499); /* import */ var _toDate_js__rspack_import_1 = __webpack_require__(64494); /** * The {@link startOfWeek} function options. */ /** * @name startOfWeek * @category Week Helpers * @summary Return the start of a week for the given date. * * @description * Return the start of a week for the given date. * The result will be in the local timezone. * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The original date * @param options - An object with options * * @returns The start of a week * * @example * // The start of a week for 2 September 2014 11:55:00: * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0)) * //=> Sun Aug 31 2014 00:00:00 * * @example * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00: * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 }) * //=> Mon Sep 01 2014 00:00:00 */ function startOfWeek(date, options) { const defaultOptions = (0,_lib_defaultOptions_js__rspack_import_0/* .getDefaultOptions */.q)(); const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions.weekStartsOn ?? defaultOptions.locale?.options?.weekStartsOn ?? 0; const _date = (0,_toDate_js__rspack_import_1/* .toDate */.a)(date, options?.in); const day = _date.getDay(); const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; _date.setDate(_date.getDate() - diff); _date.setHours(0, 0, 0, 0); return _date; } // Fallback for modularized imports: /* unused export default */ var __rspack_default_export = ((/* unused pure expression or super */ null && (startOfWeek))); }, 71179(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { b: () => (startOfWeekYear) }); /* import */ var _lib_defaultOptions_js__rspack_import_0 = __webpack_require__(74499); /* import */ var _constructFrom_js__rspack_import_2 = __webpack_require__(79694); /* import */ var _getWeekYear_js__rspack_import_1 = __webpack_require__(54594); /* import */ var _startOfWeek_js__rspack_import_3 = __webpack_require__(71046); /** * The {@link startOfWeekYear} function options. */ /** * @name startOfWeekYear * @category Week-Numbering Year Helpers * @summary Return the start of a local week-numbering year for the given date. * * @description * Return the start of a local week-numbering year. * The exact calculation depends on the values of * `options.weekStartsOn` (which is the index of the first day of the week) * and `options.firstWeekContainsDate` (which is the day of January, which is always in * the first week of the week-numbering year) * * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type. * * @param date - The original date * @param options - An object with options * * @returns The start of a week-numbering year * * @example * // The start of an a week-numbering year for 2 July 2005 with default settings: * const result = startOfWeekYear(new Date(2005, 6, 2)) * //=> Sun Dec 26 2004 00:00:00 * * @example * // The start of a week-numbering year for 2 July 2005 * // if Monday is the first day of week * // and 4 January is always in the first week of the year: * const result = startOfWeekYear(new Date(2005, 6, 2), { * weekStartsOn: 1, * firstWeekContainsDate: 4 * }) * //=> Mon Jan 03 2005 00:00:00 */ function startOfWeekYear(date, options) { const defaultOptions = (0,_lib_defaultOptions_js__rspack_import_0/* .getDefaultOptions */.q)(); const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions.firstWeekContainsDate ?? defaultOptions.locale?.options?.firstWeekContainsDate ?? 1; const year = (0,_getWeekYear_js__rspack_import_1/* .getWeekYear */.h)(date, options); const firstWeek = (0,_constructFrom_js__rspack_import_2/* .constructFrom */.w)(options?.in || date, 0); firstWeek.setFullYear(year, 0, firstWeekContainsDate); firstWeek.setHours(0, 0, 0, 0); const _date = (0,_startOfWeek_js__rspack_import_3/* .startOfWeek */.k)(firstWeek, options); return _date; } // Fallback for modularized imports: /* unused export default */ var __rspack_default_export = ((/* unused pure expression or super */ null && (startOfWeekYear))); }, 17115(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { D: () => (startOfYear) }); /* import */ var _toDate_js__rspack_import_0 = __webpack_require__(64494); /** * The {@link startOfYear} function options. */ /** * @name startOfYear * @category Year Helpers * @summary Return the start of a year for the given date. * * @description * Return the start of a year for the given date. * The result will be in the local timezone. * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The original date * @param options - The options * * @returns The start of a year * * @example * // The start of a year for 2 September 2014 11:55:00: * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00)) * //=> Wed Jan 01 2014 00:00:00 */ function startOfYear(date, options) { const date_ = (0,_toDate_js__rspack_import_0/* .toDate */.a)(date, options?.in); date_.setFullYear(date_.getFullYear(), 0, 1); date_.setHours(0, 0, 0, 0); return date_; } // Fallback for modularized imports: /* unused export default */ var __rspack_default_export = ((/* unused pure expression or super */ null && (startOfYear))); }, 64494(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { a: () => (toDate) }); /* import */ var _constructFrom_js__rspack_import_0 = __webpack_require__(79694); /** * @name toDate * @category Common Helpers * @summary Convert the given argument to an instance of Date. * * @description * Convert the given argument to an instance of Date. * * If the argument is an instance of Date, the function returns its clone. * * If the argument is a number, it is treated as a timestamp. * * If the argument is none of the above, the function returns Invalid Date. * * Starting from v3.7.0, it clones a date using `[Symbol.for("constructDateFrom")]` * enabling to transfer extra properties from the reference date to the new date. * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz) * that accept a time zone as a constructor argument. * * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`. * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param argument - The value to convert * * @returns The parsed date in the local time zone * * @example * // Clone the date: * const result = toDate(new Date(2014, 1, 11, 11, 30, 30)) * //=> Tue Feb 11 2014 11:30:30 * * @example * // Convert the timestamp to date: * const result = toDate(1392098430000) * //=> Tue Feb 11 2014 11:30:30 */ function toDate(argument, context) { // [TODO] Get rid of `toDate` or `constructFrom`? return (0,_constructFrom_js__rspack_import_0/* .constructFrom */.w)(context || argument, argument); } // Fallback for modularized imports: /* unused export default */ var __rspack_default_export = ((/* unused pure expression or super */ null && (toDate))); }, 69395(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { A: () => (__rspack_default_export) }); /* import */ var _debounce_js__rspack_import_1 = __webpack_require__(57424); /* import */ var _isObject_js__rspack_import_0 = __webpack_require__(33708); /** Error message constants. */ var FUNC_ERROR_TEXT = 'Expected a function'; /** * Creates a throttled function that only invokes `func` at most once per * every `wait` milliseconds. The throttled function comes with a `cancel` * method to cancel delayed `func` invocations and a `flush` method to * immediately invoke them. Provide `options` to indicate whether `func` * should be invoked on the leading and/or trailing edge of the `wait` * timeout. The `func` is invoked with the last arguments provided to the * throttled function. Subsequent calls to the throttled function return the * result of the last `func` invocation. * * **Note:** If `leading` and `trailing` options are `true`, `func` is * invoked on the trailing edge of the timeout only if the throttled function * is invoked more than once during the `wait` timeout. * * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred * until to the next tick, similar to `setTimeout` with a timeout of `0`. * * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) * for details over the differences between `_.throttle` and `_.debounce`. * * @static * @memberOf _ * @since 0.1.0 * @category Function * @param {Function} func The function to throttle. * @param {number} [wait=0] The number of milliseconds to throttle invocations to. * @param {Object} [options={}] The options object. * @param {boolean} [options.leading=true] * Specify invoking on the leading edge of the timeout. * @param {boolean} [options.trailing=true] * Specify invoking on the trailing edge of the timeout. * @returns {Function} Returns the new throttled function. * @example * * // Avoid excessively updating the position while scrolling. * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); * * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); * jQuery(element).on('click', throttled); * * // Cancel the trailing throttled invocation. * jQuery(window).on('popstate', throttled.cancel); */ function throttle(func, wait, options) { var leading = true, trailing = true; if (typeof func != 'function') { throw new TypeError(FUNC_ERROR_TEXT); } if ((0,_isObject_js__rspack_import_0/* ["default"] */.A)(options)) { leading = 'leading' in options ? !!options.leading : leading; trailing = 'trailing' in options ? !!options.trailing : trailing; } return (0,_debounce_js__rspack_import_1/* ["default"] */.A)(func, wait, { 'leading': leading, 'maxWait': wait, 'trailing': trailing }); } /* export default */ const __rspack_default_export = (throttle); }, 74481(__unused_webpack___webpack_module__, __unused_webpack___webpack_exports__, __webpack_require__) { "use strict"; // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/jsx-runtime.js var jsx_runtime = __webpack_require__(7357); // EXTERNAL MODULE: ./node_modules/.pnpm/react@17.0.2/node_modules/react/index.js var react = __webpack_require__(33353); var react_namespaceObject = /*#__PURE__*/__webpack_require__.t(react, 2); // EXTERNAL MODULE: ./node_modules/.pnpm/react-dom@17.0.2_react@17.0.2/node_modules/react-dom/index.js var react_dom = __webpack_require__(71561); var react_dom_namespaceObject = /*#__PURE__*/__webpack_require__.t(react_dom, 2); // EXTERNAL MODULE: ./Extension/src/pages/common/components/ui/Select/SelectProvider.tsx var SelectProvider = __webpack_require__(22681); // EXTERNAL MODULE: ./Extension/src/common/translators/translator.ts var translator = __webpack_require__(78466); // EXTERNAL MODULE: ./Extension/src/common/translators/i18n.ts var i18n = __webpack_require__(37940); // EXTERNAL MODULE: ./node_modules/.pnpm/react-router@6.28.1_react@17.0.2/node_modules/react-router/dist/index.js var dist = __webpack_require__(78851); // EXTERNAL MODULE: ./node_modules/.pnpm/@remix-run+router@1.21.0/node_modules/@remix-run/router/dist/router.js var dist_router = __webpack_require__(90507); ;// CONCATENATED MODULE: ./node_modules/.pnpm/react-router-dom@6.28.1_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/react-router-dom/dist/index.js /** * React Router DOM v6.28.1 * * Copyright (c) Remix Software Inc. * * This source code is licensed under the MIT license found in the * LICENSE.md file in the root directory of this source tree. * * @license MIT */ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } const defaultMethod = "get"; const defaultEncType = "application/x-www-form-urlencoded"; function isHtmlElement(object) { return object != null && typeof object.tagName === "string"; } function isButtonElement(object) { return isHtmlElement(object) && object.tagName.toLowerCase() === "button"; } function isFormElement(object) { return isHtmlElement(object) && object.tagName.toLowerCase() === "form"; } function isInputElement(object) { return isHtmlElement(object) && object.tagName.toLowerCase() === "input"; } function isModifiedEvent(event) { return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey); } function shouldProcessLinkClick(event, target) { return event.button === 0 && ( // Ignore everything but left clicks !target || target === "_self") && // Let browser handle "target=_blank" etc. !isModifiedEvent(event) // Ignore clicks with modifier keys ; } /** * Creates a URLSearchParams object using the given initializer. * * This is identical to `new URLSearchParams(init)` except it also * supports arrays as values in the object form of the initializer * instead of just strings. This is convenient when you need multiple * values for a given key, but don't want to use an array initializer. * * For example, instead of: * * let searchParams = new URLSearchParams([ * ['sort', 'name'], * ['sort', 'price'] * ]); * * you can do: * * let searchParams = createSearchParams({ * sort: ['name', 'price'] * }); */ function createSearchParams(init) { if (init === void 0) { init = ""; } return new URLSearchParams(typeof init === "string" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo, key) => { let value = init[key]; return memo.concat(Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]); }, [])); } function getSearchParamsForLocation(locationSearch, defaultSearchParams) { let searchParams = createSearchParams(locationSearch); if (defaultSearchParams) { // Use `defaultSearchParams.forEach(...)` here instead of iterating of // `defaultSearchParams.keys()` to work-around a bug in Firefox related to // web extensions. Relevant Bugzilla tickets: // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602 // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984 defaultSearchParams.forEach((_, key) => { if (!searchParams.has(key)) { defaultSearchParams.getAll(key).forEach(value => { searchParams.append(key, value); }); } }); } return searchParams; } // One-time check for submitter support let _formDataSupportsSubmitter = null; function isFormDataSubmitterSupported() { if (_formDataSupportsSubmitter === null) { try { new FormData(document.createElement("form"), // @ts-expect-error if FormData supports the submitter parameter, this will throw 0); _formDataSupportsSubmitter = false; } catch (e) { _formDataSupportsSubmitter = true; } } return _formDataSupportsSubmitter; } const supportedFormEncTypes = new Set(["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"]); function getFormEncType(encType) { if (encType != null && !supportedFormEncTypes.has(encType)) { false ? 0 : void 0; return null; } return encType; } function getFormSubmissionInfo(target, basename) { let method; let action; let encType; let formData; let body; if (isFormElement(target)) { // When grabbing the action from the element, it will have had the basename // prefixed to ensure non-JS scenarios work, so strip it since we'll // re-prefix in the router let attr = target.getAttribute("action"); action = attr ? stripBasename(attr, basename) : null; method = target.getAttribute("method") || defaultMethod; encType = getFormEncType(target.getAttribute("enctype")) || defaultEncType; formData = new FormData(target); } else if (isButtonElement(target) || isInputElement(target) && (target.type === "submit" || target.type === "image")) { let form = target.form; if (form == null) { throw new Error("Cannot submit a