(self["webpackChunkbrowser_extension"] = self["webpackChunkbrowser_extension"] || []).push([["384"], { 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___; }, 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___; }, 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___); }, 55511(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: 22px; right: 22px; } @media (max-width: 640px) { .notifications { bottom: 8px; right: 8px; left: 8px } } .notification { padding: 12px; max-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 { max-width: 100% } } .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___); }, 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___); }, 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___); }, 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___); }, 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 || {}; }, 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 || {}; }, 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 = '.*'; }, 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; }({}); }, 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" }) }) }) ] }); }; }, 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 . */ }, 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 ]); }; }, 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; }; }, 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(); }, 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); }, 25558(__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); // 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); // EXTERNAL MODULE: ./Extension/src/common/translators/i18n.ts var i18n = __webpack_require__(37940); // EXTERNAL MODULE: ./Extension/src/common/translators/translator.ts var translator = __webpack_require__(78466); // 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/mobx@6.9.0/node_modules/mobx/dist/mobx.esm.js var mobx_esm = __webpack_require__(37350); // EXTERNAL MODULE: ./Extension/src/pages/services/messenger/index.ts var messenger = __webpack_require__(32706); // EXTERNAL MODULE: ./Extension/src/pages/common/utils/rules-limits-messages.ts var rules_limits_messages = __webpack_require__(37688); // 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/nanoid@3.3.6/node_modules/nanoid/index.browser.js var index_browser = __webpack_require__(6500); // EXTERNAL MODULE: ./Extension/src/common/logger.ts var logger = __webpack_require__(42228); // EXTERNAL MODULE: ./Extension/src/pages/common/types.ts var types = __webpack_require__(39046); // EXTERNAL MODULE: ./Extension/src/pages/common/utils/notifications.ts var utils_notifications = __webpack_require__(66137); ;// CONCATENATED MODULE: ./Extension/src/pages/fullscreen-user-rules/stores/FullscreenUserRulesStore.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); } /** * Store for the fullscreen user rules page. * * Encapsulates all UI state (loader, notifications) and settings interactions * so the page does not depend on the options-page RootStore. This reduces the * fullscreen-user-rules bundle size (AG-48937). */ class FullscreenUserRulesStore { /** * Fetches fullscreen user rules data from the background page * and updates settings and telemetry consent flag. */ async getFullscreenUserRulesData() { const { settings } = await messenger/* .messenger.getUserRulesEditorData */.ee.getUserRulesEditorData(); (0,mobx_esm/* .runInAction */.h5)(()=>{ this.settings = settings; this.allowAnonymizedUsageData = settings.values[settings.names.AllowAnonymizedUsageData]; }); } /** * Appearance theme from settings. */ get appearanceTheme() { if (!this.settings) { return null; } return this.settings.values[this.settings.names.AppearanceTheme]; } /** * Sets the loader visibility state. * * @param value Loader visibility state. */ setShowLoader(value = false) { this.showLoader = value; } /** * Adds a notification to the list. * * @param params Notification parameters. * * @returns Notification id or null if duplicate. */ addNotification(params) { const isNotificationAlreadyPresent = this.notifications.some((notification)=>(0,utils_notifications/* .isDuplicateNotification */.l)(notification, params)); if (isNotificationAlreadyPresent) { return null; } const id = (0,index_browser/* .nanoid */.Ak)(); this.notifications.push({ id, ...params }); return id; } /** * Adds an error notification about rule limits exceeded. * * The notification will have a button to open the rules limits tab. * * @param text Notification text. */ addRuleLimitsNotification(text) { const buttons = [ { title: translator/* .translator.getMessage */.N.getMessage('options_rule_limits'), onClick: messenger/* .messenger.openRulesLimitsTab */.ee.openRulesLimitsTab } ]; this.addNotification({ type: types/* .NotificationType.Error */._.Error, text, buttons }); } /** * Removes a notification from the list. * * @param id Notification id. */ removeNotification(id) { this.notifications = this.notifications.filter((notification)=>notification.id !== id); } /** * Updates a setting value locally and sends it to the background. * Reverts the local value on failure. * * @param settingId Setting key. * @param value New value. */ async updateSetting(settingId, value) { if (!this.settings) { logger/* .logger.debug */.v.debug('[ext.FullscreenUserRulesStore.updateSetting]: settings is not initialized yet'); return; } const previousValue = this.settings.values[settingId]; this.settings.values[settingId] = value; try { await messenger/* .messenger.changeUserSetting */.ee.changeUserSetting(settingId, value); } catch (e) { // Revert optimistic UI update on failure (0,mobx_esm/* .runInAction */.h5)(()=>{ if (this.settings) { this.settings.values[settingId] = previousValue; } }); throw e; } } /** * Checks MV3 rule limitations and shows a notification if dynamic rules * are over the limit. No-op on MV2; overridden in MV3 subclass. */ // eslint-disable-next-line class-methods-use-this async checkLimitations() { // No-op. Overridden in MV3 subclass. } /** * Sends a custom telemetry event to the background if usage data collection * is allowed. * * @param eventName Name of the custom telemetry event. * @param screenName Name of the screen where the event occurred. */ async sendTelemetryCustomEvent(eventName, screenName) { try { if (!this.allowAnonymizedUsageData) { return; } await messenger/* .messenger.sendTelemetryCustomEvent */.ee.sendTelemetryCustomEvent(screenName, eventName); } catch (e) { logger/* .logger.debug */.v.debug('[ext.FullscreenUserRulesStore.sendTelemetryCustomEvent]: Failed to send custom telemetry event', e); } } constructor(){ /** * Extension settings data. */ _define_property(this, "settings", null); /** * Loader visibility state. */ _define_property(this, "showLoader", false); /** * Notifications list. */ _define_property(this, "notifications", []); /** * Whether anonymized usage data collection is allowed. */ _define_property(this, "allowAnonymizedUsageData", false); (0,mobx_esm/* .makeObservable */.Gn)(this); this.setShowLoader = this.setShowLoader.bind(this); } } _ts_decorate([ mobx_esm/* .observable */.sH, _ts_metadata("design:type", Object) ], FullscreenUserRulesStore.prototype, "settings", void 0); _ts_decorate([ mobx_esm/* .observable */.sH ], FullscreenUserRulesStore.prototype, "showLoader", void 0); _ts_decorate([ mobx_esm/* .observable */.sH, _ts_metadata("design:type", Array) ], FullscreenUserRulesStore.prototype, "notifications", void 0); _ts_decorate([ mobx_esm/* .observable */.sH ], FullscreenUserRulesStore.prototype, "allowAnonymizedUsageData", void 0); _ts_decorate([ mobx_esm/* .action */.XI, _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", []), _ts_metadata("design:returntype", Promise) ], FullscreenUserRulesStore.prototype, "getFullscreenUserRulesData", null); _ts_decorate([ mobx_esm/* .computed */.EW, _ts_metadata("design:type", void 0), _ts_metadata("design:paramtypes", []) ], FullscreenUserRulesStore.prototype, "appearanceTheme", null); _ts_decorate([ mobx_esm/* .action */.XI, _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ void 0 ]), _ts_metadata("design:returntype", void 0) ], FullscreenUserRulesStore.prototype, "setShowLoader", null); _ts_decorate([ mobx_esm/* .action */.XI, _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof NotificationParams === "undefined" ? Object : NotificationParams ]), _ts_metadata("design:returntype", Object) ], FullscreenUserRulesStore.prototype, "addNotification", null); _ts_decorate([ mobx_esm/* .action */.XI, _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ String ]), _ts_metadata("design:returntype", void 0) ], FullscreenUserRulesStore.prototype, "addRuleLimitsNotification", null); _ts_decorate([ mobx_esm/* .action */.XI, _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ String ]), _ts_metadata("design:returntype", void 0) ], FullscreenUserRulesStore.prototype, "removeNotification", null); _ts_decorate([ mobx_esm/* .action */.XI, _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ typeof T === "undefined" ? Object : T, Object ]), _ts_metadata("design:returntype", Promise) ], FullscreenUserRulesStore.prototype, "updateSetting", null); _ts_decorate([ mobx_esm/* .action */.XI, _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", []), _ts_metadata("design:returntype", Promise) ], FullscreenUserRulesStore.prototype, "checkLimitations", null); ;// CONCATENATED MODULE: ./Extension/src/pages/fullscreen-user-rules/stores/FullscreenUserRulesStore-mv3.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 FullscreenUserRulesStore_mv3_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 FullscreenUserRulesStore_mv3_ts_metadata(k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); } /** * MV3-specific fullscreen user rules store. * Overrides checkLimitations with the real MV3 implementation. */ class FullscreenUserRulesStoreMv3 extends FullscreenUserRulesStore { /** * Checks MV3 rule limitations and shows a notification if dynamic rules * are over the limit. */ async checkLimitations() { const currentLimitsMv3 = await messenger/* .messenger.getCurrentLimits */.ee.getCurrentLimits(); const dynamicWarning = currentLimitsMv3.dynamicRulesData ? (0,rules_limits_messages/* .getDynamicWarningMessage */.$)(currentLimitsMv3.dynamicRulesData) : null; if (dynamicWarning) { this.addRuleLimitsNotification(dynamicWarning); } } constructor(){ super(); (0,mobx_esm/* .makeObservable */.Gn)(this); } } FullscreenUserRulesStore_mv3_ts_decorate([ mobx_esm/* .override */.$Z, FullscreenUserRulesStore_mv3_ts_metadata("design:type", Function), FullscreenUserRulesStore_mv3_ts_metadata("design:paramtypes", []), FullscreenUserRulesStore_mv3_ts_metadata("design:returntype", Promise) ], FullscreenUserRulesStoreMv3.prototype, "checkLimitations", null); /** * MV3 fullscreen user rules store context. * Uses the MV3 subclass with real checkLimitations. */ const fullscreenUserRulesStore = (0,react.createContext)(new FullscreenUserRulesStoreMv3()); // EXTERNAL MODULE: ./Extension/src/pages/common/components/Loader/index.ts + 2 modules var Loader = __webpack_require__(24316); // EXTERNAL MODULE: ./Extension/src/pages/common/components/UserRulesEditor/index.ts + 4 modules var UserRulesEditor = __webpack_require__(59819); // EXTERNAL MODULE: ./Extension/src/common/constants.ts var constants = __webpack_require__(88819); // EXTERNAL MODULE: ./Extension/src/pages/common/hooks/useAppearanceTheme.ts var useAppearanceTheme = __webpack_require__(17948); // EXTERNAL MODULE: ./Extension/src/pages/common/components/ui/Icons.tsx + 1 modules var Icons = __webpack_require__(24085); // EXTERNAL MODULE: ./Extension/src/pages/common/components/Notification/index.ts + 1 modules var Notification = __webpack_require__(58114); // 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/Notification/notifications.pcss var Notification_notifications = __webpack_require__(55511); ;// CONCATENATED MODULE: ./Extension/src/pages/common/components/Notification/notifications.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()(Notification_notifications/* ["default"] */.A, options); /* export default */ const components_Notification_notifications = (Notification_notifications/* ["default"] */.A && Notification_notifications/* ["default"].locals */.A.locals ? Notification_notifications/* ["default"].locals */.A.locals : undefined); ;// CONCATENATED MODULE: ./Extension/src/pages/fullscreen-user-rules/components/Notifications/Notifications.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 . */ /** * Notifications component for the fullscreen user rules page. * * Reuses the shared Notification component from the options page and injects * onRemove from fullscreenUserRulesStore instead of rootStore. */ const FullscreenNotifications = (0,mobxreact_esm/* .observer */.PA)(()=>{ const store = (0,react.useContext)(fullscreenUserRulesStore); const { notifications } = store; if (notifications.length === 0) { return null; } /** * Reverse notifications to correct transition for change position * of notification. If we use normal, not reversed order, new notification * will push old notifications (up or down) on the Y axis without transition. */ const reversedNotifications = notifications.slice().reverse(); return /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { className: "notifications", children: reversedNotifications.map((notification)=>/*#__PURE__*/ (0,jsx_runtime.jsx)(Notification/* .Notification */.E, { onRemove: (id)=>store.removeNotification(id), ...notification }, notification.id)) }); }); ;// CONCATENATED MODULE: ./Extension/src/pages/fullscreen-user-rules/components/Notifications/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 . */ // EXTERNAL MODULE: ./Extension/src/pages/options/styles/styles.pcss var styles = __webpack_require__(88323); // EXTERNAL MODULE: ./Extension/src/pages/options/components/UserRules/styles.pcss var UserRules_styles = __webpack_require__(95930); ;// CONCATENATED MODULE: ./Extension/src/pages/fullscreen-user-rules/components/fullscreen-user-rules/FullscreenUserRules.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 FullscreenUserRules = (0,mobxreact_esm/* .observer */.PA)(()=>{ const store = (0,react.useContext)(fullscreenUserRulesStore); (0,useAppearanceTheme/* .useAppearanceTheme */.H)(store.appearanceTheme); // append message listeners (0,react.useEffect)(()=>{ store.getFullscreenUserRulesData(); let removeListenerCallback = ()=>{}; (async ()=>{ const events = [ constants/* .NotifierType.SettingUpdated */.DY.SettingUpdated ]; const { onUnload } = messenger/* .Messenger.createLongLivedConnection */.e0.createLongLivedConnection(messenger/* .Page.FullscreenUserRules */.YW.FullscreenUserRules, events, async (message)=>{ const { type } = message; switch(type){ case constants/* .NotifierType.SettingUpdated */.DY.SettingUpdated: { await store.getFullscreenUserRulesData(); break; } default: { logger/* .logger.warn */.v.warn('[ext.FullscreenUserRules]: there is no listener for type:', type); break; } } }); removeListenerCallback = onUnload; })(); return ()=>{ removeListenerCallback(); }; }, [ store ]); const addNotification = (0,react.useCallback)((params)=>store.addNotification(params), [ store ]); const updateSetting = (0,react.useCallback)((settingId, value)=>store.updateSetting(settingId, value), [ store ]); const checkLimitations = (0,react.useCallback)(()=>store.checkLimitations(), [ store ]); const sendTelemetryCustomEvent = (0,react.useCallback)((eventName, screenName)=>store.sendTelemetryCustomEvent(eventName, screenName), [ store ]); return /*#__PURE__*/ (0,jsx_runtime.jsxs)(jsx_runtime.Fragment, { children: [ /*#__PURE__*/ (0,jsx_runtime.jsx)(Loader/* .Loader */.a, { showLoader: store.showLoader }), /*#__PURE__*/ (0,jsx_runtime.jsx)(Icons/* .Icons */.F, {}), /*#__PURE__*/ (0,jsx_runtime.jsx)(FullscreenNotifications, {}), /*#__PURE__*/ (0,jsx_runtime.jsx)(UserRulesEditor/* .UserRulesEditor */.u, { fullscreen: true, setShowLoader: store.setShowLoader, addNotification: addNotification, updateSetting: updateSetting, checkLimitations: checkLimitations, sendTelemetryCustomEvent: sendTelemetryCustomEvent }) ] }); }); ;// CONCATENATED MODULE: ./Extension/src/pages/fullscreen-user-rules/components/fullscreen-user-rules/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 . */ ;// CONCATENATED MODULE: ./Extension/src/pages/fullscreen-user-rules/index.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 fullscreenUserRulesPage = { init: ()=>{ document.title = translator/* .translator.getMessage */.N.getMessage('fullscreen_user_rules_title'); document.documentElement.lang = i18n/* .i18n.getUILanguage */.R.getUILanguage(); react_dom.render(/*#__PURE__*/ (0,jsx_runtime.jsx)(FullscreenUserRules, {}), document.getElementById('root')); } }; ;// CONCATENATED MODULE: ./Extension/pages/fullscreen-user-rules/index.js /** * 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 . */ fullscreenUserRulesPage.init(); }, 91901(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.d(__webpack_exports__, { D: () => (userRulesEditorStore) }); /* import */ var react__rspack_import_0 = __webpack_require__(33353); /* import */ var mobx__rspack_import_3 = __webpack_require__(37350); /* import */ var _services_messenger__rspack_import_1 = __webpack_require__(32706); /* import */ var _Editor_savingFSM__rspack_import_2 = __webpack_require__(12968); /** * 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); } class UserRulesEditorStore { async requestSettingsData() { const data = await _services_messenger__rspack_import_1/* .messenger.getOptionsData */.ee.getOptionsData(); (0,mobx__rspack_import_3/* .runInAction */.h5)(()=>{ this.settings = data.settings; }); } async updateSetting(settingId, value) { if (this.settings) { this.settings.values[settingId] = value; } await _services_messenger__rspack_import_1/* .messenger.changeUserSetting */.ee.changeUserSetting(settingId, value); } async toggleUserRulesEditorWrapMode() { this.userRulesEditorWrap = !this.userRulesEditorWrap; if (this.settings) { await this.updateSetting(this.settings.names.UserRulesEditorWrap, this.userRulesEditorWrap); } } setUserRulesEditorWrapMode(value) { this.userRulesEditorWrap = value; } get userRulesEditorWrapState() { if (this.settings) { this.setUserRulesEditorWrapMode(this.settings.values[this.settings.names.UserRulesEditorWrap]); } return this.userRulesEditorWrap; } get userFilterEnabledSettingId() { if (!this.settings) { return null; } return this.settings.names.UserFilterEnabled; } get userFilterEnabled() { if (this.settings) { return this.settings.values[this.userFilterEnabledSettingId]; } return false; } getCursorPosition() { return this.cursorPosition; } saveUserRules(value) { return new Promise((resolve, reject)=>{ try { this.savingService.send({ type: _Editor_savingFSM__rspack_import_2/* .SavingFSMEvent.Save */.xo.Save, value, callback: resolve }); } catch (e) { reject(e); } }); } constructor(){ _define_property(this, "settings", null); _define_property(this, "userRulesEditorContentChanged", false); _define_property(this, "userRulesEditorWrap", null); _define_property(this, "userRulesExportAvailable", false); _define_property(this, "userRulesEditorPrefsDropped", false); _define_property(this, "specificLimitWarningData", null); _define_property(this, "cursorPosition", null); _define_property(this, "savingService", (0,_Editor_savingFSM__rspack_import_2/* .createSavingService */.s0)({ id: 'userRules', services: { saveData: async ({ event })=>{ const { value, callback } = event; await _services_messenger__rspack_import_1/* .messenger.saveUserRules */.ee.saveUserRules(value); await callback(); } } })); _define_property(this, "savingUserRulesState", this.savingService.getSnapshot().value); _define_property(this, "setUserRulesEditorContentChangedState", (state)=>{ this.userRulesEditorContentChanged = state; }); _define_property(this, "setUserRulesExportAvailableState", (state)=>{ this.userRulesExportAvailable = state; }); _define_property(this, "setUserRulesEditorPrefsDropped", (state)=>{ this.userRulesEditorPrefsDropped = state; }); _define_property(this, "setCursorPosition", (position)=>{ this.cursorPosition = position; }); (0,mobx__rspack_import_3/* .makeObservable */.Gn)(this); this.updateSetting = this.updateSetting.bind(this); this.savingService.subscribe((state)=>{ (0,mobx__rspack_import_3/* .runInAction */.h5)(()=>{ this.savingUserRulesState = state.value; if (state.value === _Editor_savingFSM__rspack_import_2/* .SavingFSMState.Saving */.A3.Saving) { this.userRulesEditorContentChanged = false; } }); }); } } _ts_decorate([ mobx__rspack_import_3/* .observable */.sH ], UserRulesEditorStore.prototype, "settings", void 0); _ts_decorate([ mobx__rspack_import_3/* .observable */.sH ], UserRulesEditorStore.prototype, "userRulesEditorContentChanged", void 0); _ts_decorate([ mobx__rspack_import_3/* .observable */.sH ], UserRulesEditorStore.prototype, "userRulesEditorWrap", void 0); _ts_decorate([ mobx__rspack_import_3/* .observable */.sH ], UserRulesEditorStore.prototype, "userRulesExportAvailable", void 0); _ts_decorate([ mobx__rspack_import_3/* .observable */.sH ], UserRulesEditorStore.prototype, "userRulesEditorPrefsDropped", void 0); _ts_decorate([ mobx__rspack_import_3/* .observable */.sH ], UserRulesEditorStore.prototype, "specificLimitWarningData", void 0); _ts_decorate([ mobx__rspack_import_3/* .observable */.sH ], UserRulesEditorStore.prototype, "cursorPosition", void 0); _ts_decorate([ mobx__rspack_import_3/* .observable */.sH ], UserRulesEditorStore.prototype, "savingUserRulesState", void 0); _ts_decorate([ mobx__rspack_import_3/* .action */.XI, _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", []), _ts_metadata("design:returntype", Promise) ], UserRulesEditorStore.prototype, "requestSettingsData", null); _ts_decorate([ mobx__rspack_import_3/* .action */.XI ], UserRulesEditorStore.prototype, "setUserRulesEditorContentChangedState", void 0); _ts_decorate([ mobx__rspack_import_3/* .action */.XI ], UserRulesEditorStore.prototype, "setUserRulesExportAvailableState", void 0); _ts_decorate([ mobx__rspack_import_3/* .action */.XI ], UserRulesEditorStore.prototype, "setUserRulesEditorPrefsDropped", void 0); _ts_decorate([ mobx__rspack_import_3/* .action */.XI ], UserRulesEditorStore.prototype, "setCursorPosition", void 0); _ts_decorate([ mobx__rspack_import_3/* .action */.XI, _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ void 0, void 0 ]), _ts_metadata("design:returntype", Promise) ], UserRulesEditorStore.prototype, "updateSetting", null); _ts_decorate([ mobx__rspack_import_3/* .action */.XI, _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", []), _ts_metadata("design:returntype", Promise) ], UserRulesEditorStore.prototype, "toggleUserRulesEditorWrapMode", null); _ts_decorate([ mobx__rspack_import_3/* .action */.XI, _ts_metadata("design:type", Function), _ts_metadata("design:paramtypes", [ void 0 ]), _ts_metadata("design:returntype", void 0) ], UserRulesEditorStore.prototype, "setUserRulesEditorWrapMode", null); _ts_decorate([ mobx__rspack_import_3/* .computed */.EW, _ts_metadata("design:type", void 0), _ts_metadata("design:paramtypes", []) ], UserRulesEditorStore.prototype, "userRulesEditorWrapState", null); _ts_decorate([ mobx__rspack_import_3/* .computed */.EW, _ts_metadata("design:type", void 0), _ts_metadata("design:paramtypes", []) ], UserRulesEditorStore.prototype, "userFilterEnabledSettingId", null); _ts_decorate([ mobx__rspack_import_3/* .computed */.EW, _ts_metadata("design:type", void 0), _ts_metadata("design:paramtypes", []) ], UserRulesEditorStore.prototype, "userFilterEnabled", null); const userRulesEditorStore = /*#__PURE__*/ (0,react__rspack_import_0.createContext)(new UserRulesEditorStore()); }, },function(__webpack_require__) { var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId) } __webpack_require__.O(0, ["193","205","230","272","330","382","433","471","693","725","733",], function() { return __webpack_exec__(25558); }); var __webpack_exports__ = __webpack_require__.O(); } ]);