/*! elementor - v3.20.0 - 10-04-2024 */ .elementor-button, .e-btn, #elementor-deactivate-feedback-modal .dialog-skip, #elementor-deactivate-feedback-modal .dialog-submit { font-size: 12px; font-weight: 500; line-height: 1.2; padding: 8px 16px; outline: none; border: none; border-radius: var(--e-a-border-radius); background-color: var(--e-a-btn-bg); color: var(--e-a-btn-color-invert); transition: var(--e-a-transition-hover); } .elementor-button:hover, .e-btn:hover, #elementor-deactivate-feedback-modal .dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-submit:hover { border: none; } .elementor-button:hover, .elementor-button:focus, .e-btn:hover, #elementor-deactivate-feedback-modal .dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-submit:hover, .e-btn:focus, #elementor-deactivate-feedback-modal .dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-submit:focus { background-color: var(--e-a-btn-bg-hover); color: var(--e-a-btn-color-invert); } .elementor-button:active, .e-btn:active, #elementor-deactivate-feedback-modal .dialog-skip:active, #elementor-deactivate-feedback-modal .dialog-submit:active { background-color: var(--e-a-btn-bg-active); } .elementor-button:not([disabled]), .e-btn:not([disabled]), #elementor-deactivate-feedback-modal .dialog-skip:not([disabled]), #elementor-deactivate-feedback-modal .dialog-submit:not([disabled]) { cursor: pointer; } .elementor-button:disabled, .e-btn:disabled, #elementor-deactivate-feedback-modal .dialog-skip:disabled, #elementor-deactivate-feedback-modal .dialog-submit:disabled { background-color: var(--e-a-btn-bg-disabled); color: var(--e-a-btn-color-disabled); } .elementor-button:not(.elementor-button-state) .elementor-state-icon, .e-btn:not(.elementor-button-state) .elementor-state-icon, #elementor-deactivate-feedback-modal .dialog-skip:not(.elementor-button-state) .elementor-state-icon, #elementor-deactivate-feedback-modal .dialog-submit:not(.elementor-button-state) .elementor-state-icon { display: none; } .elementor-button.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel, .e-btn.e-btn-txt, #elementor-deactivate-feedback-modal .dialog-skip, #elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit, .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit { background: transparent; color: var(--e-a-color-txt); } .elementor-button.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:hover, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:hover, .elementor-button.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:focus, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:focus, .e-btn.e-btn-txt:hover, #elementor-deactivate-feedback-modal .dialog-skip:hover, #elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover, .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover, .e-btn.e-btn-txt:focus, #elementor-deactivate-feedback-modal .dialog-skip:focus, #elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus, .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus { background: var(--e-a-bg-hover); color: var(--e-a-color-txt-hover); } .elementor-button.e-btn-txt:disabled, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:disabled, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel:disabled, .e-btn.e-btn-txt:disabled, #elementor-deactivate-feedback-modal .dialog-skip:disabled, #elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:disabled, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:disabled, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:disabled, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:disabled, .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel:disabled, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:disabled, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:disabled { background: transparent; color: var(--e-a-color-txt-disabled); } .elementor-button.e-btn-txt-border, .e-btn.e-btn-txt-border, #elementor-deactivate-feedback-modal .e-btn-txt-border.dialog-skip, #elementor-deactivate-feedback-modal .e-btn-txt-border.dialog-submit { border: 1px solid var(--e-a-color-txt-muted); } .elementor-button.elementor-button-success, .elementor-button.e-success, .e-btn.elementor-button-success, #elementor-deactivate-feedback-modal .elementor-button-success.dialog-skip, #elementor-deactivate-feedback-modal .elementor-button-success.dialog-submit, .e-btn.e-success, #elementor-deactivate-feedback-modal .e-success.dialog-skip, #elementor-deactivate-feedback-modal .e-success.dialog-submit { background-color: var(--e-a-btn-bg-success); } .elementor-button.elementor-button-success:hover, .elementor-button.elementor-button-success:focus, .elementor-button.e-success:hover, .elementor-button.e-success:focus, .e-btn.elementor-button-success:hover, #elementor-deactivate-feedback-modal .elementor-button-success.dialog-skip:hover, #elementor-deactivate-feedback-modal .elementor-button-success.dialog-submit:hover, .e-btn.elementor-button-success:focus, #elementor-deactivate-feedback-modal .elementor-button-success.dialog-skip:focus, #elementor-deactivate-feedback-modal .elementor-button-success.dialog-submit:focus, .e-btn.e-success:hover, #elementor-deactivate-feedback-modal .e-success.dialog-skip:hover, #elementor-deactivate-feedback-modal .e-success.dialog-submit:hover, .e-btn.e-success:focus, #elementor-deactivate-feedback-modal .e-success.dialog-skip:focus, #elementor-deactivate-feedback-modal .e-success.dialog-submit:focus { background-color: var(--e-a-btn-bg-success-hover); } .elementor-button.e-primary, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok, .e-btn.e-primary, #elementor-deactivate-feedback-modal .e-primary.dialog-skip, #elementor-deactivate-feedback-modal .dialog-submit, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip, .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip, .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip { background-color: var(--e-a-btn-bg-primary); color: var(--e-a-btn-color); } .elementor-button.e-primary:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:hover, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:hover, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:hover, .elementor-button.e-primary:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:focus, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:focus, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok:focus, .e-btn.e-primary:hover, #elementor-deactivate-feedback-modal .e-primary.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover, .e-btn.e-primary:focus, #elementor-deactivate-feedback-modal .e-primary.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus { background-color: var(--e-a-btn-bg-primary-hover); color: var(--e-a-btn-color); } .elementor-button.e-primary.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel, .e-btn.e-primary.e-btn-txt, #elementor-deactivate-feedback-modal .e-primary.dialog-skip, #elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit, #elementor-deactivate-feedback-modal .dialog-submit.dialog-skip, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip, .dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over, .dialog-type-alert .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit, .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel, .dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip, .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel { background: transparent; color: var(--e-a-color-primary-bold); } .elementor-button.e-primary.e-btn-txt:hover, #elementor-deactivate-feedback-modal .elementor-button.e-primary.dialog-skip:hover, #elementor-deactivate-feedback-modal .elementor-button.e-btn-txt.dialog-submit:hover, #elementor-deactivate-feedback-modal .elementor-button.dialog-submit.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:hover, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:hover, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:hover, .elementor-button.e-primary.e-btn-txt:focus, #elementor-deactivate-feedback-modal .elementor-button.e-primary.dialog-skip:focus, #elementor-deactivate-feedback-modal .elementor-button.e-btn-txt.dialog-submit:focus, #elementor-deactivate-feedback-modal .elementor-button.dialog-submit.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-take_over:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-take_over.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-primary.dialog-button.dialog-cancel:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-submit:focus, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:focus, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.e-btn-txt.dialog-button.dialog-ok:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .elementor-button.dialog-button.dialog-ok.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper .elementor-button.dialog-button.dialog-ok.dialog-cancel:focus, .e-btn.e-primary.e-btn-txt:hover, #elementor-deactivate-feedback-modal .e-btn.e-primary.dialog-skip:hover, #elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-skip:hover, #elementor-deactivate-feedback-modal .e-primary.dialog-skip:hover, #elementor-deactivate-feedback-modal .e-btn.e-btn-txt.dialog-submit:hover, #elementor-deactivate-feedback-modal .e-btn.dialog-submit.dialog-skip:hover, #elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-submit.dialog-skip:hover, #elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-submit:hover, #elementor-deactivate-feedback-modal .e-primary.dialog-submit.dialog-skip:hover, #elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-submit.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover, .dialog-type-alert .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover, .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover, .dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:hover, .e-btn.e-primary.e-btn-txt:focus, #elementor-deactivate-feedback-modal .e-btn.e-primary.dialog-skip:focus, #elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-skip:focus, #elementor-deactivate-feedback-modal .e-primary.dialog-skip:focus, #elementor-deactivate-feedback-modal .e-btn.e-btn-txt.dialog-submit:focus, #elementor-deactivate-feedback-modal .e-btn.dialog-submit.dialog-skip:focus, #elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-submit.dialog-skip:focus, #elementor-deactivate-feedback-modal .e-primary.e-btn-txt.dialog-submit:focus, #elementor-deactivate-feedback-modal .e-primary.dialog-submit.dialog-skip:focus, #elementor-deactivate-feedback-modal .e-btn-txt.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-submit.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-take_over:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-take_over.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-take_over.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-take_over.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-submit.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus, .dialog-type-alert .dialog-buttons-wrapper .e-btn.e-primary.dialog-button.dialog-cancel:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-cancel.dialog-submit:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-primary.dialog-button.dialog-cancel.dialog-submit:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-primary.dialog-button.dialog-cancel.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus, .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over.dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus, .dialog-type-alert .dialog-buttons-wrapper .e-btn.e-btn-txt.dialog-button.dialog-ok:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn.dialog-button.dialog-ok.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .e-btn-txt.dialog-button.dialog-ok.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-submit.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper .e-btn.dialog-button.dialog-ok.dialog-cancel:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel.dialog-submit:focus { background: var(--e-a-bg-primary); } .elementor-button.go-pro, .elementor-button.e-accent, .e-btn.go-pro, #elementor-deactivate-feedback-modal .go-pro.dialog-skip, #elementor-deactivate-feedback-modal .go-pro.dialog-submit, .e-btn.e-accent, #elementor-deactivate-feedback-modal .e-accent.dialog-skip, #elementor-deactivate-feedback-modal .e-accent.dialog-submit { background-color: var(--e-a-btn-bg-accent); } .elementor-button.go-pro:hover, .elementor-button.go-pro:focus, .elementor-button.e-accent:hover, .elementor-button.e-accent:focus, .e-btn.go-pro:hover, #elementor-deactivate-feedback-modal .go-pro.dialog-skip:hover, #elementor-deactivate-feedback-modal .go-pro.dialog-submit:hover, .e-btn.go-pro:focus, #elementor-deactivate-feedback-modal .go-pro.dialog-skip:focus, #elementor-deactivate-feedback-modal .go-pro.dialog-submit:focus, .e-btn.e-accent:hover, #elementor-deactivate-feedback-modal .e-accent.dialog-skip:hover, #elementor-deactivate-feedback-modal .e-accent.dialog-submit:hover, .e-btn.e-accent:focus, #elementor-deactivate-feedback-modal .e-accent.dialog-skip:focus, #elementor-deactivate-feedback-modal .e-accent.dialog-submit:focus { background-color: var(--e-a-btn-bg-accent-hover); } .elementor-button.go-pro:active, .elementor-button.e-accent:active, .e-btn.go-pro:active, #elementor-deactivate-feedback-modal .go-pro.dialog-skip:active, #elementor-deactivate-feedback-modal .go-pro.dialog-submit:active, .e-btn.e-accent:active, #elementor-deactivate-feedback-modal .e-accent.dialog-skip:active, #elementor-deactivate-feedback-modal .e-accent.dialog-submit:active { background-color: var(--e-a-btn-bg-accent-active); } .elementor-button.elementor-button-info, .elementor-button.e-info, .e-btn.elementor-button-info, #elementor-deactivate-feedback-modal .elementor-button-info.dialog-skip, #elementor-deactivate-feedback-modal .elementor-button-info.dialog-submit, .e-btn.e-info, #elementor-deactivate-feedback-modal .e-info.dialog-skip, #elementor-deactivate-feedback-modal .e-info.dialog-submit { background-color: var(--e-a-btn-bg-info); } .elementor-button.elementor-button-info:hover, .elementor-button.elementor-button-info:focus, .elementor-button.e-info:hover, .elementor-button.e-info:focus, .e-btn.elementor-button-info:hover, #elementor-deactivate-feedback-modal .elementor-button-info.dialog-skip:hover, #elementor-deactivate-feedback-modal .elementor-button-info.dialog-submit:hover, .e-btn.elementor-button-info:focus, #elementor-deactivate-feedback-modal .elementor-button-info.dialog-skip:focus, #elementor-deactivate-feedback-modal .elementor-button-info.dialog-submit:focus, .e-btn.e-info:hover, #elementor-deactivate-feedback-modal .e-info.dialog-skip:hover, #elementor-deactivate-feedback-modal .e-info.dialog-submit:hover, .e-btn.e-info:focus, #elementor-deactivate-feedback-modal .e-info.dialog-skip:focus, #elementor-deactivate-feedback-modal .e-info.dialog-submit:focus { background-color: var(--e-a-btn-bg-info-hover); } .elementor-button.elementor-button-warning, .elementor-button.e-warning, .e-btn.elementor-button-warning, #elementor-deactivate-feedback-modal .elementor-button-warning.dialog-skip, #elementor-deactivate-feedback-modal .elementor-button-warning.dialog-submit, .e-btn.e-warning, #elementor-deactivate-feedback-modal .e-warning.dialog-skip, #elementor-deactivate-feedback-modal .e-warning.dialog-submit { background-color: var(--e-a-btn-bg-warning); } .elementor-button.elementor-button-warning:hover, .elementor-button.elementor-button-warning:focus, .elementor-button.e-warning:hover, .elementor-button.e-warning:focus, .e-btn.elementor-button-warning:hover, #elementor-deactivate-feedback-modal .elementor-button-warning.dialog-skip:hover, #elementor-deactivate-feedback-modal .elementor-button-warning.dialog-submit:hover, .e-btn.elementor-button-warning:focus, #elementor-deactivate-feedback-modal .elementor-button-warning.dialog-skip:focus, #elementor-deactivate-feedback-modal .elementor-button-warning.dialog-submit:focus, .e-btn.e-warning:hover, #elementor-deactivate-feedback-modal .e-warning.dialog-skip:hover, #elementor-deactivate-feedback-modal .e-warning.dialog-submit:hover, .e-btn.e-warning:focus, #elementor-deactivate-feedback-modal .e-warning.dialog-skip:focus, #elementor-deactivate-feedback-modal .e-warning.dialog-submit:focus { background-color: var(--e-a-btn-bg-warning-hover); } .elementor-button.elementor-button-danger, .elementor-button.e-danger, .e-btn.elementor-button-danger, #elementor-deactivate-feedback-modal .elementor-button-danger.dialog-skip, #elementor-deactivate-feedback-modal .elementor-button-danger.dialog-submit, .e-btn.e-danger, #elementor-deactivate-feedback-modal .e-danger.dialog-skip, #elementor-deactivate-feedback-modal .e-danger.dialog-submit { background-color: var(--e-a-btn-bg-danger); } .elementor-button.elementor-button-danger:hover, .elementor-button.elementor-button-danger:focus, .elementor-button.e-danger:hover, .elementor-button.e-danger:focus, .e-btn.elementor-button-danger:hover, #elementor-deactivate-feedback-modal .elementor-button-danger.dialog-skip:hover, #elementor-deactivate-feedback-modal .elementor-button-danger.dialog-submit:hover, .e-btn.elementor-button-danger:focus, #elementor-deactivate-feedback-modal .elementor-button-danger.dialog-skip:focus, #elementor-deactivate-feedback-modal .elementor-button-danger.dialog-submit:focus, .e-btn.e-danger:hover, #elementor-deactivate-feedback-modal .e-danger.dialog-skip:hover, #elementor-deactivate-feedback-modal .e-danger.dialog-submit:hover, .e-btn.e-danger:focus, #elementor-deactivate-feedback-modal .e-danger.dialog-skip:focus, #elementor-deactivate-feedback-modal .e-danger.dialog-submit:focus { background-color: var(--e-a-btn-bg-danger-hover); } .elementor-button i, .e-btn i, #elementor-deactivate-feedback-modal .dialog-skip i, #elementor-deactivate-feedback-modal .dialog-submit i { margin-inline-end: 5px; } #adminmenu #toplevel_page_elementor div.wp-menu-image:before { content: "\e813"; font-family: eicons; font-size: 18px; margin-block-start: 1px; } #adminmenu #toplevel_page_elementor a[href="admin.php?page=go_elementor_pro"] { font-weight: 600; background-color: #93003f; color: #ffffff; margin: 3px 10px 0; display: block; text-align: center; border-radius: 3px; transition: all 0.3s; } #adminmenu #toplevel_page_elementor a[href="admin.php?page=go_elementor_pro"]:hover, #adminmenu #toplevel_page_elementor a[href="admin.php?page=go_elementor_pro"]:focus { background-color: #c60055; box-shadow: none; } #adminmenu #menu-posts-elementor_library .wp-menu-image:before { content: "\e8ff"; font-family: eicons; font-size: 18px; } #e-admin-menu__kit-library { color: #5cb85c; } .elementor-plugins-gopro { color: #93003f; font-weight: bold; } .elementor-plugins-gopro:hover, .elementor-plugins-gopro:focus { color: #c60055; } #elementor-switch-mode { margin: 15px 0; } #elementor-switch-mode-button, #elementor-editor-button { outline: none; cursor: pointer; } #elementor-switch-mode-button i, #elementor-editor-button i { margin-inline-end: 3px; font-size: 125%; font-style: normal; } body.elementor-editor-active .elementor-switch-mode-off { display: none; } body.elementor-editor-active #elementor-switch-mode-button { background-color: #f7f7f7; color: #555; border-color: #ccc; box-shadow: 0 1px 0 #ccc !important; text-shadow: unset; } body.elementor-editor-active #elementor-switch-mode-button:hover { background-color: #e9e9e9; } body.elementor-editor-active #elementor-switch-mode-button:active { box-shadow: inset 0 1px 0 #ccc; transform: translateY(1px); } body.elementor-editor-active #postdivrich { display: none !important; } body.elementor-editor-active .editor-block-list__layout, body.elementor-editor-active .block-editor-block-list__layout { display: none; } body.elementor-editor-inactive .elementor-switch-mode-on { display: none; } body.elementor-editor-inactive #elementor-editor { display: none; } body.elementor-editor-active .editor-block-list__layout { display: none; } body.elementor-editor-active .edit-post-layout__content .edit-post-visual-editor { flex-basis: auto; } body.elementor-editor-active #elementor-editor { margin-block-end: 50px; } body.elementor-editor-active .edit-post-text-editor__body .editor-post-text-editor { display: none; } body.elementor-editor-active :is(.is-desktop-preview, .is-tablet-preview, .is-mobile-preview) :is(.editor-styles-wrapper, iframe[name=editor-canvas]) { height: auto !important; padding: 0 !important; flex: 0 !important; } body .block-editor #elementor-switch-mode { margin: 0 15px; } body .block-editor #elementor-switch-mode .button { margin: 2px; height: 33px; font-size: 13px; line-height: 1; } body .block-editor #elementor-switch-mode .button i { padding-inline-end: 5px; } .elementor-button { font-size: 13px; text-decoration: none; padding: 15px 40px; } #elementor-editor { height: 300px; width: 100%; transition: all 0.5s ease; } #elementor-editor .elementor-loader-wrapper { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 300px; display: flex; flex-direction: column; align-items: center; gap: 30px; } #elementor-editor .elementor-loader { border-radius: 50%; padding: 40px; height: 150px; width: 150px; background-color: var(--e-a-bg-active); box-sizing: border-box; box-shadow: 2px 2px 20px 4px rgba(0, 0, 0, 0.02); } #elementor-editor .elementor-loader-boxes { height: 100%; width: 100%; position: relative; } #elementor-editor .elementor-loader-box { position: absolute; background-color: var(--e-a-color-txt-hover); animation: load 1.8s linear infinite; } #elementor-editor .elementor-loader-box:nth-of-type(1) { width: 20%; height: 100%; left: 0; top: 0; } #elementor-editor .elementor-loader-box:not(:nth-of-type(1)) { right: 0; height: 20%; width: 60%; } #elementor-editor .elementor-loader-box:nth-of-type(2) { top: 0; animation-delay: calc(1.8s / 4 * -1); } #elementor-editor .elementor-loader-box:nth-of-type(3) { top: 40%; animation-delay: calc(1.8s / 4 * -2); } #elementor-editor .elementor-loader-box:nth-of-type(4) { bottom: 0; animation-delay: calc(1.8s / 4 * -3); } #elementor-editor .elementor-loading-title { color: var(--e-a-color-txt); text-align: center; text-transform: uppercase; letter-spacing: 7px; text-indent: 7px; font-size: 10px; width: 100%; } #elementor-go-to-edit-page-link { height: 100%; display: flex; justify-content: center; align-items: center; border: 1px solid #DDD; background-color: #F7F7F7; text-decoration: none; position: relative; font-family: Sans-serif; } #elementor-go-to-edit-page-link:hover { background-color: #ffffff; } #elementor-go-to-edit-page-link:focus { box-shadow: none; } #elementor-go-to-edit-page-link.elementor-animate #elementor-editor-button { display: none; } #elementor-go-to-edit-page-link:not(.elementor-animate) .elementor-loader-wrapper { display: none; } .elementor-button-spinner:before { font: normal 20px/0.5 dashicons; speak: none; display: inline-block; padding: 0; inset-block-start: 8px; inset-inline-start: -4px; position: relative; vertical-align: top; content: "\f463"; } .elementor-button-spinner.loading:before { animation: rotation 1s infinite linear; } .elementor-button-spinner.success:before { content: "\f147"; color: #46b450; } .elementor-blank_state { padding: 5em 0; margin: auto; max-width: 520px; text-align: center; font-family: var(--e-a-font-family); } .elementor-blank_state i { font-size: 50px; } .elementor-blank_state h3 { font-size: 32px; font-weight: 300; color: inherit; margin: 20px 0 10px; line-height: 1.2; } .elementor-blank_state p { font-size: 16px; font-weight: normal; margin-block-end: 40px; } .elementor-blank_state .elementor-button { display: inline-block; } #available-widgets [class*=elementor-template] .widget-title:before { content: "\e813"; font-family: eicons; font-size: 17px; } .elementor-settings-form-page { padding-block-start: 30px; } .elementor-settings-form-page:not(.elementor-active) { display: none; } ._elementor_settings_update_time { display: none; } body.post-type-attachment table.media .column-title .media-icon img[src$=".svg"] { width: 100%; } .e-major-update-warning { margin-block-end: 5px; max-width: 1000px; display: flex; } .e-major-update-warning__separator { margin: 15px -12px; } .e-major-update-warning__icon { font-size: 17px; margin-inline-end: 9px; margin-inline-start: 2px; } .e-major-update-warning__title { font-weight: 600; margin-block-end: 10px; } .e-major-update-warning + p { display: none; } .notice-success .e-major-update-warning__separator { border: 1px solid #46b450; } .notice-success .e-major-update-warning__icon { color: #79ba49; } .notice-warning .e-major-update-warning__separator { border: 1px solid #ffb900; } .notice-warning .e-major-update-warning__icon { color: #f56e28; } .plugins table.e-compatibility-update-table tr { background: transparent; } .plugins table.e-compatibility-update-table tr th { font-weight: 600; } .plugins table.e-compatibility-update-table tr th, .plugins table.e-compatibility-update-table tr td { min-width: 250px; font-size: 13px; background: transparent; box-shadow: none; border: none; padding-block-start: 5px; padding-block-end: 5px; padding-inline-end: 15px; padding-inline-start: 0; } :root { --e-focus-color: rgba(0, 115, 170, .4); --e-context-primary-color: #0073aa; --e-context-primary-color-dark: #005177; --e-context-primary-tint-4: rgba(0, 115, 170, 0.4); --e-context-primary-tint-1: rgba(0, 115, 170, 0.04); --e-context-success-color: #0A875A; --e-context-success-color-dark: #06583a; --e-context-success-tint-4: rgba(10, 135, 90, 0.4); --e-context-success-tint-1: rgba(10, 135, 90, 0.04); --e-context-info-color: #2563EB; --e-context-info-color-dark: #134cca; --e-context-info-tint-4: rgba(37, 99, 235, 0.4); --e-context-info-tint-1: rgba(37, 99, 235, 0.04); --e-context-warning-color: #F59E0B; --e-context-warning-color-dark: #c57f08; --e-context-warning-tint-4: rgba(245, 158, 11, 0.4); --e-context-warning-tint-1: rgba(245, 158, 11, 0.04); --e-context-error-color: #DC2626; --e-context-error-color-dark: #b21d1d; --e-context-error-tint-4: rgba(220, 38, 38, 0.4); --e-context-error-tint-1: rgba(220, 38, 38, 0.04); --e-context-cta-color: #524CFF; --e-context-cta-color-dark: #2119ff; --e-context-cta-tint-4: rgba(82, 76, 255, 0.4); --e-context-cta-tint-1: rgba(82, 76, 255, 0.04); } .e-getting-started { max-width: 900px; padding: 2.5em 0; margin: auto; text-align: center; } .e-getting-started__header { display: flex; flex-direction: row; justify-content: space-between; align-items: center; box-shadow: 0 0 8px rgba(0, 0, 0, 0.1); } .e-getting-started__header .e-logo-wrapper { font-size: 10px; margin-inline-end: 10px; } .e-getting-started__title { padding: 0 15px; font-weight: 600; text-transform: uppercase; display: flex; align-items: center; } .e-getting-started__skip { border-inline-start: 1px solid #eee; font-size: 16px; color: inherit; } .e-getting-started__skip i { padding: 15px; } .e-getting-started__content { padding: 50px; } .e-getting-started__content h2 { font-size: 2em; margin-block-start: 0; } .e-getting-started__content--narrow { max-width: 500px; margin: auto; } .e-getting-started__video { margin: 40px 0 60px; } .e-getting-started__video iframe { box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.15); } .e-getting-started__actions .button-primary { margin-inline-end: 20px; } :root { --e-button-padding-block: 0.4375rem; --e-button-padding-inline: 0.75rem; --e-button-font-size: 0.8125rem; --e-button-font-weight: 500; --e-button-line-height: 0.9375rem; --e-button-border-radius: 3px; --e-button-context-color: var(--e-context-primary-color); --e-button-context-color-dark: var(--e-context-primary-color-dark); --e-button-context-tint: var(--e-context-primary-tint-1); } .e-button { display: inline-block; font-weight: var(--e-button-font-weight); text-align: center; white-space: nowrap; vertical-align: middle; -webkit-user-select: none; -moz-user-select: none; user-select: none; color: #ffffff; border: 0; text-decoration: none; background: var(--e-button-context-color); padding: var(--e-button-padding-block) var(--e-button-padding-inline); font-size: var(--e-button-font-size); line-height: var(--e-button-line-height); border-radius: var(--e-button-border-radius); transition: background-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } .e-button:active, .e-button:hover, .e-button:focus { color: #ffffff; text-decoration: none; background: var(--e-button-context-color-dark); } .e-button:focus, .e-button.focus { outline: 0; box-shadow: 0 0 0 2px var(--e-focus-color); } .e-button.disabled, .e-button:disabled { opacity: 0.5; box-shadow: none; } .e-button:not(:disabled):not(.disabled) { cursor: pointer; } .e-button:not(:disabled):not(.disabled):active:focus, .e-button:not(:disabled):not(.disabled).active:focus { box-shadow: 0 0 0 2px var(--e-focus-color); } .e-button--primary { --e-button-context-color: var(--e-context-primary-color); --e-button-context-color-dark: var(--e-context-primary-color-dark); --e-button-context-tint: var(--e-context-primary-tint-1); --e-focus-color: var(--e-context-primary-tint-4); } .e-button--success { --e-button-context-color: var(--e-context-success-color); --e-button-context-color-dark: var(--e-context-success-color-dark); --e-button-context-tint: var(--e-context-success-tint-1); --e-focus-color: var(--e-context-success-tint-4); } .e-button--info { --e-button-context-color: var(--e-context-info-color); --e-button-context-color-dark: var(--e-context-info-color-dark); --e-button-context-tint: var(--e-context-info-tint-1); --e-focus-color: var(--e-context-info-tint-4); } .e-button--warning { --e-button-context-color: var(--e-context-warning-color); --e-button-context-color-dark: var(--e-context-warning-color-dark); --e-button-context-tint: var(--e-context-warning-tint-1); --e-focus-color: var(--e-context-warning-tint-4); } .e-button--error { --e-button-context-color: var(--e-context-error-color); --e-button-context-color-dark: var(--e-context-error-color-dark); --e-button-context-tint: var(--e-context-error-tint-1); --e-focus-color: var(--e-context-error-tint-4); } .e-button--cta { --e-button-context-color: var(--e-context-cta-color); --e-button-context-color-dark: var(--e-context-cta-color-dark); --e-button-context-tint: var(--e-context-cta-tint-1); --e-focus-color: var(--e-context-cta-tint-4); } .e-button.e-button--outline { color: var(--e-button-context-color); background: none; border: 1px solid currentColor; } .e-button.e-button--outline:hover, .e-button.e-button--outline:focus { color: var(--e-button-context-color-dark); background: var(--e-button-context-tint); } .e-button.e-button--outline.disabled, .e-button.e-button--outline:disabled { color: var(--e-button-context-color-dark); background: #69727D; } .e-button > i { line-height: inherit; height: var(--e-button-line-height); width: -moz-min-content; width: min-content; } .e-button > * + * { margin-inline-start: 0.5ch; } .e-button--link { color: var(--e-button-context-color); background-color: transparent; } .e-button--link:hover, .e-button--link:focus { color: var(--e-button-context-color-dark); background: var(--e-button-context-tint); } .e-button--link:disabled, .e-button--link.disabled { color: #69727D; } a.e-button.disabled, fieldset:disabled a.e-button { pointer-events: none; } :root { --e-notice-bg: #fff; --e-notice-border-color: #ccd0d4; --e-notice-context-color: #93003f; --e-notice-context-tint: var(--e-context-cta-tint-1); --e-notice-box-shadow: 0 1px 4px rgba(0,0,0,.15); --e-notice-dismiss-color: #3f444b; } .e-notice { position: relative; display: flex; font-family: Roboto, Arial, Helvetica, sans-serif; background: var(--e-notice-bg); border: 1px solid var(--e-notice-border-color); border-inline-start-width: 4px; box-shadow: var(--e-notice-box-shadow); margin: 5px 20px 5px 2px; } .e-notice.notice { padding: 0; } .e-notice::before { display: block; content: ""; position: absolute; inset-inline-start: -4px; inset-block-start: -1px; inset-block-end: -1px; width: 4px; background-color: var(--e-notice-context-color); } .e-notice--primary { --e-notice-context-color: var(--e-context-primary-color); --e-notice-context-color-dark: var(--e-context-primary-color-dark); --e-notice-context-tint: var(--e-context-primary-tint-1); } .e-notice--success { --e-notice-context-color: var(--e-context-success-color); --e-notice-context-color-dark: var(--e-context-success-color-dark); --e-notice-context-tint: var(--e-context-success-tint-1); } .e-notice--info { --e-notice-context-color: var(--e-context-info-color); --e-notice-context-color-dark: var(--e-context-info-color-dark); --e-notice-context-tint: var(--e-context-info-tint-1); } .e-notice--warning { --e-notice-context-color: var(--e-context-warning-color); --e-notice-context-color-dark: var(--e-context-warning-color-dark); --e-notice-context-tint: var(--e-context-warning-tint-1); } .e-notice--error { --e-notice-context-color: var(--e-context-error-color); --e-notice-context-color-dark: var(--e-context-error-color-dark); --e-notice-context-tint: var(--e-context-error-tint-1); } .e-notice--cta { --e-notice-context-color: var(--e-context-cta-color); --e-notice-context-color-dark: var(--e-context-cta-color-dark); --e-notice-context-tint: var(--e-context-cta-tint-1); } .e-notice--extended { --e-notice-is-extended: 1; } .e-notice--dismissible { padding-inline-end: 38px; } .e-notice__aside { overflow: hidden; background-color: var(--e-notice-context-tint); width: calc(var(--e-notice-is-extended, 0) * 50px); text-align: center; padding-block-start: 15px; flex-grow: 0; flex-shrink: 0; } .e-notice__icon-wrapper { display: inline-block; font-size: 0.625rem; max-height: 1.5rem; width: 1.5rem; line-height: 1.5rem; border-radius: 100px; background: var(--e-notice-context-color); color: #fff; text-shadow: 0 0 3px var(--e-notice-context-color-dark), 0 0 1px var(--e-notice-context-color-dark), 0 0 1px var(--e-notice-context-color-dark); } .e-notice__content { padding: 20px; } .e-notice__actions { display: flex; } .e-notice__actions > * + * { margin-inline-start: 8px; } .e-notice__dismiss { width: 20px; height: 20px; line-height: 20px; font-size: 0.8125rem; text-align: center; background: none; display: block; position: absolute; inset-block-start: 0; inset-inline-end: 1px; border: none; margin: 0; padding: 9px; cursor: pointer; font-style: normal; } .e-notice__dismiss:before { font-family: eicons; display: inline-block; content: "\e87f"; color: var(--e-notice-dismiss-color); width: 20px; border-radius: 20px; speak: none; text-align: center; } .e-notice__dismiss:hover:before, .e-notice__dismiss:active:before, .e-notice__dismiss:focus:before { font-weight: bold; } .e-notice__dismiss:focus:before { color: #fff; background: var(--e-notice-dismiss-color); outline: none; } .e-notice__dismiss:focus { outline: none; } .e-notice p { line-height: 1.2; padding: 0; margin: 0; } .e-notice p + .e-notice__actions { margin-block-start: 1rem; } .e-notice h3 { font-size: 1.0625rem; line-height: 1.2; margin: 0; } .e-notice h3 + p { margin-block-start: 8px; } /*= Elementor Admin Alert ---------------------------------------*/ .elementor-admin-alert { padding: 15px; border-inline-start: 3px solid transparent; position: relative; font-size: 12px; line-height: 1.5; text-align: start; } .elementor-admin-alert a { color: inherit; } .elementor-admin-alert.elementor-alert-info { color: var(--e-a-color-info); background-color: var(--e-a-bg-info); border-color: var(--e-a-color-info); } .elementor-admin-alert.elementor-alert-success { color: var(--e-a-color-success); background-color: var(--e-a-bg-success); border-color: var(--e-a-color-success); } .elementor-admin-alert.elementor-alert-warning { color: var(--e-admin-color-warning); background-color: var(--e-a-bg-warning); border-color: var(--e-a-color-warning); } .elementor-admin-alert.elementor-alert-danger { color: var(--e-a-color-danger); background-color: var(--e-a-bg-danger); border-color: var(--e-a-color-danger); } /*= Elementor System Info ---------------------------------------*/ #elementor-system-info { padding: 15px; } #elementor-system-info .elementor-system-info-header { display: flex; justify-content: space-between; align-items: center; } #elementor-system-info .elementor-system-info-section { margin-block-end: 10px; } #elementor-system-info .elementor-system-info-section .widefat { white-space: pre; } #elementor-system-info .elementor-system-info-section .elementor-log-entries { white-space: pre-wrap; } #elementor-system-info .elementor-system-info-section:not(.elementor-system-info-log) tbody td:first-child { width: 300px; } #elementor-system-info .elementor-system-info-section:not(.elementor-system-info-log) td { white-space: break-spaces; } #elementor-system-info .elementor-system-info-field-recommendation { padding-inline-start: 10px; color: #7F7F7F; } #elementor-system-info .elementor-system-info-plugin-name { color: #000; } #elementor-system-info .elementor-system-info-plugin-properties { padding: 10px; } #elementor-system-info #elementor-system-info-raw-code { width: 100%; height: 200px; } #elementor-system-info #elementor-system-info-raw-code-label { padding: 5px; display: block; } #elementor-system-info .elementor-warning td:first-child { border-inline-start: 3px solid #F59E0B; } #elementor-system-info a.box-title-tool { font-size: 80%; margin-inline-start: 15px; color: #69727D; } #elementor-system-info a.box-title-tool:hover { text-decoration: underline; } #elementor-system-info #elementor-usage-recalc { font-size: 12px; color: #ffffff; background-color: #9DA5AE; padding: 4px 18px 5px 18px; border-radius: 3px; } .dialog-type-confirm .dialog-widget-content, .dialog-type-alert .dialog-widget-content { margin: auto; width: 400px; padding: 20px; } .dialog-type-confirm .dialog-header, .dialog-type-alert .dialog-header { font-size: 15px; font-weight: 500; } .dialog-type-confirm .dialog-header:after, .dialog-type-alert .dialog-header:after { content: ""; display: block; border-block-end: var(--e-a-border); padding-block-end: 10px; margin-block-end: 10px; margin-inline-start: -20px; margin-inline-end: -20px; } .dialog-type-confirm .dialog-message, .dialog-type-alert .dialog-message { min-height: 50px; } .dialog-type-confirm .dialog-buttons-wrapper, .dialog-type-alert .dialog-buttons-wrapper { padding-block-start: 10px; display: flex; justify-content: flex-end; gap: 15px; } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button, .dialog-type-alert .dialog-buttons-wrapper .dialog-button { font-size: 12px; font-weight: 500; line-height: 1.2; padding: 8px 16px; outline: none; border: none; border-radius: var(--e-a-border-radius); background-color: var(--e-a-btn-bg); color: var(--e-a-btn-color-invert); transition: var(--e-a-transition-hover); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover { border: none; } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus { background-color: var(--e-a-btn-bg-hover); color: var(--e-a-btn-color-invert); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:active, .dialog-type-alert .dialog-buttons-wrapper .dialog-button:active { background-color: var(--e-a-btn-bg-active); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not([disabled]), .dialog-type-alert .dialog-buttons-wrapper .dialog-button:not([disabled]) { cursor: pointer; } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:disabled, .dialog-type-alert .dialog-buttons-wrapper .dialog-button:disabled { background-color: var(--e-a-btn-bg-disabled); color: var(--e-a-btn-color-disabled); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon, .dialog-type-alert .dialog-buttons-wrapper .dialog-button:not(.elementor-button-state) .elementor-state-icon { display: none; } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel { background: transparent; color: var(--e-a-color-txt); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:focus { background: var(--e-a-bg-hover); color: var(--e-a-color-txt-hover); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:disabled, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-skip:disabled, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt:disabled, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-skip:disabled, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-skip:disabled, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel:disabled { background: transparent; color: var(--e-a-color-txt-disabled); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt-border, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt-border { border: 1px solid var(--e-a-color-txt-muted); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success { background-color: var(--e-a-btn-bg-success); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-success:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-success:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-success:focus { background-color: var(--e-a-btn-bg-success-hover); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok { background-color: var(--e-a-btn-bg-primary); color: var(--e-a-btn-color); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok:focus { background-color: var(--e-a-btn-bg-primary-hover); color: var(--e-a-btn-color); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel { background: transparent; color: var(--e-a-color-primary-bold); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, .dialog-type-confirm .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:hover, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:hover, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.e-btn-txt:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-primary.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.e-btn-txt.dialog-submit:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-submit.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-submit.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-take_over:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-take_over.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-take_over.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-primary.dialog-cancel:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-cancel.dialog-submit:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-submit:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-cancel.dialog-take_over:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-btn-txt.dialog-ok:focus, .dialog-type-alert .dialog-buttons-wrapper #elementor-deactivate-feedback-modal .dialog-button.dialog-ok.dialog-skip:focus, #elementor-deactivate-feedback-modal .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-skip:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.dialog-ok.dialog-cancel:focus { background: var(--e-a-bg-primary); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent { background-color: var(--e-a-btn-bg-accent); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:focus { background-color: var(--e-a-btn-bg-accent-hover); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.go-pro:active, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-accent:active, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.go-pro:active, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-accent:active { background-color: var(--e-a-btn-bg-accent-active); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info { background-color: var(--e-a-btn-bg-info); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-info:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-info:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-info:focus { background-color: var(--e-a-btn-bg-info-hover); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning { background-color: var(--e-a-btn-bg-warning); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-warning:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-warning:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-warning:focus { background-color: var(--e-a-btn-bg-warning-hover); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger { background-color: var(--e-a-btn-bg-danger); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button.e-danger:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.elementor-button-danger:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button.e-danger:focus { background-color: var(--e-a-btn-bg-danger-hover); } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button i, .dialog-type-alert .dialog-buttons-wrapper .dialog-button i { margin-inline-end: 5px; } .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:focus, .dialog-type-confirm .dialog-buttons-wrapper .dialog-button:visited, .dialog-type-alert .dialog-buttons-wrapper .dialog-button:hover, .dialog-type-alert .dialog-buttons-wrapper .dialog-button:focus, .dialog-type-alert .dialog-buttons-wrapper .dialog-button:visited { color: initial; } @keyframes elementor-rotation { 0% { transform: rotate(0deg); } 100% { transform: rotate(359deg); } } #elementor-deactivate-feedback-dialog-wrapper { display: none; } #elementor-deactivate-feedback-modal { color: var(--e-a-color-txt); } #elementor-deactivate-feedback-modal .dialog-widget-content { width: 550px; } #elementor-deactivate-feedback-modal .dialog-header { padding: 18px 15px; box-shadow: 0 0 8px rgba(0, 0, 0, 0.1); text-align: start; } #elementor-deactivate-feedback-modal .dialog-message { padding: 30px; padding-block-end: 0; text-align: start; } #elementor-deactivate-feedback-modal .elementor-deactivate-feedback-dialog-input { margin-block: 0; margin-inline: 0 15px; box-shadow: none; } #elementor-deactivate-feedback-modal .elementor-deactivate-feedback-dialog-input:not(:checked) ~ .elementor-feedback-text { display: none; } #elementor-deactivate-feedback-modal .elementor-deactivate-feedback-dialog-label { display: block; font-size: 13px; } #elementor-deactivate-feedback-modal .elementor-feedback-text { background-color: transparent; color: var(--e-a-color-txt); margin-block: 10px 0; margin-inline: 30px 0; padding: 5px; box-shadow: none; width: 92%; } #elementor-deactivate-feedback-modal .dialog-buttons-wrapper { display: flex; justify-content: space-between; padding: 20px 30px 30px; } #elementor-deactivate-feedback-modal .dialog-submit.elementor-loading:before { display: inline-block; content: "\f463"; font: 18px dashicons; animation: elementor-rotation 2s infinite linear; } #elementor-deactivate-feedback-modal[data-feedback-selected=elementor_pro] .elementor-feedback-text { color: #F59E0B; padding: 0; } #elementor-deactivate-feedback-modal[data-feedback-selected=elementor_pro] .dialog-submit { display: none; } #elementor-deactivate-feedback-dialog-header i { font-size: 19px; } #elementor-deactivate-feedback-dialog-header-title { font-size: 15px; text-transform: uppercase; font-weight: bold; padding-inline-start: 5px; } #elementor-deactivate-feedback-dialog-form-caption { font-weight: bold; font-size: 15px; line-height: 1.4; } #elementor-deactivate-feedback-dialog-form-body { padding-block-start: 30px; padding-block-end: 15px; } .elementor-deactivate-feedback-dialog-input-wrapper { display: flex; align-items: center; line-height: 2; overflow: hidden; } #elementor-hidden-area { display: none; } #elementor-import-template-trigger { cursor: pointer; } #elementor-import-template-area { display: none; margin: 50px 0 30px; text-align: center; } #elementor-import-template-form { display: inline-block; margin-block-start: 30px; padding: 30px 50px; background-color: #FFFFFF; border: 1px solid #e5e5e5; } #elementor-import-template-title { font-size: 18px; color: #555d66; } .form-table:not(.elementor-maintenance-mode-is-enabled) .elementor-default-hide { display: none; } .elementor-maintenance-mode-error { color: red; line-height: 1.6; display: none; } #tab-replace_url.elementor-active ~ p.submit, #tab-fontawesome4_migration.elementor-active ~ p.submit, #tab-import-export-kit.elementor-active ~ p.submit { display: none; } #elementor_replace_url > div { max-width: 800px; } #elementor_replace_url > div input { margin-block-end: 6px; } #elementor_rollback > div, #elementor_rollback_pro > div { display: flex; } #elementor_rollback > div input, #elementor_rollback > div select, #elementor_rollback_pro > div input, #elementor_rollback_pro > div select { margin-inline-end: 6px; } .tab-import-export-kit__wrapper { margin: 40px 0; max-width: 700px; } .tab-import-export-kit__container { background-color: white; font-size: 16px; max-width: 700px; padding: 30px; } .tab-import-export-kit__container:not(:first-child) { margin-block-start: 5px; } .tab-import-export-kit__container p { font-size: 16px; margin: 20px 0 25px; } .tab-import-export-kit__info { font-size: 14px; } .tab-import-export-kit__container a:not(.elementor-button), .tab-import-export-kit__info a { color: var(--e-a-color-info); text-decoration: underline; } .tab-import-export-kit__box { display: flex; justify-content: space-between; align-items: flex-start; } .tab-import-export-kit__box h2 { font-size: 28px; font-weight: normal; line-height: 1; margin: 0; } .tab-import-export-kit__box .elementor-button.elementor-button-success { font-weight: bold; padding: 8px 16px; text-transform: initial; } .tab-import-export-kit__revert .tab-import-export-kit__kit-item { background-color: rgba(255, 255, 255, 0.5); box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05); border-radius: 0.1875rem; margin-block-end: 15px; display: inline-block; } .tab-import-export-kit__revert .tab-import-export-kit__kit-item header { border-block-end: 1px solid #F1F2F3; padding: 0.625rem; } .tab-import-export-kit__revert .tab-import-export-kit__kit-item h3 { font-size: 0.875rem; margin: 0; } .tab-import-export-kit__revert .tab-import-export-kit__kit-item img { width: 330px; height: 315px; padding: 0.625rem; } .tab-import-export-kit__revert .button, .tab-import-export-kit__revert .button:hover { color: #a94442; border-color: #a94442; display: inline-block; } #dashboard-widgets .e-dashboard-widget h3.e-heading { font-weight: 600; margin-block-end: 13px; } #dashboard-widgets .e-dashboard-widget .e-divider_bottom { border-block-end: 1px solid #eee; margin: 0 -12px; padding: 6px 12px; } #dashboard-widgets .e-dashboard-widget .e-divider_top { border-block-start: 1px solid #eee; margin: 0 -12px; padding: 12px 12px 0; } #dashboard-widgets .e-dashboard-widget .e-quick-actions-wrap .e-divider_top, #dashboard-widgets .e-dashboard-widget .e-news-feed-wrap .e-divider_top { padding-block-start: 18px; margin-block-start: 18px; } .e-dashboard-widget .dashicons { color: #606a73; } .e-dashboard-widget ul.e-action-list li { margin-block-start: 14px; } .e-dashboard-widget ul.e-action-list li a { margin-inline-start: 5px; } .e-dashboard-overview .dashicons { vertical-align: middle; font-size: 17px; } .e-dashboard-overview .e-overview__header { display: table; width: 100%; box-shadow: 0 5px 8px rgba(0, 0, 0, 0.05); margin: 0 -12px 8px; padding: 0 12px 12px; } .e-dashboard-overview .e-overview__logo, .e-dashboard-overview .e-overview__versions, .e-dashboard-overview .e-overview__create { display: table-cell; vertical-align: middle; } .e-dashboard-overview .e-overview__logo { width: 30px; } .e-dashboard-overview .e-overview__versions { padding: 0 10px; font-size: 0.9em; line-height: 1.5; } .e-dashboard-overview .e-overview__version { display: block; } .e-dashboard-overview .e-overview__create { text-align: end; } .e-dashboard-overview .e-overview__feed { font-size: 14px; font-weight: 500; } .e-dashboard-overview .e-overview__post { margin-block-start: 10px; } .e-dashboard-overview .e-overview__post-link { display: inline-block; } .e-dashboard-overview .e-overview__badge { background: #0A875A; color: white; font-size: 0.75em; padding: 3px 6px; border-radius: 3px; text-transform: uppercase; } .e-dashboard-overview .e-overview__post-description { margin: 0 0 1.5em; } .e-dashboard-overview .e-overview__recently-edited li { color: #72777c; } .e-dashboard-overview .e-overview__footer.e-divider_top { padding-block-start: 12px; padding-block-end: 0; } .e-dashboard-overview .e-overview__footer ul { display: flex; list-style: none; margin: 0; padding: 0; } .e-dashboard-overview .e-overview__footer ul li { padding: 0 10px; margin: 0; border-inline-start: 1px solid #ddd; } .e-dashboard-overview .e-overview__footer ul li:first-child { padding-inline-start: 0; border: none; } .e-dashboard-overview .e-overview__go-pro a, .e-dashboard-overview .e-overview__ai a { color: #93003f; font-weight: 500; } .post-type-elementor_library #elementor-template-library-tabs-wrapper { padding-block-start: 2em; margin-block-end: 2em; } .post-type-elementor_library th#taxonomy-elementor_library_category { width: 110px; } #elementor-new-template-modal .dialog-message { max-height: 70vh; } #elementor-new-template-modal .e-hidden { display: none !important; } #elementor-new-template-dialog-content { display: flex; align-items: center; height: 100%; text-align: start; } @media (max-width: 1439px) { #elementor-new-template-dialog-content { padding: 0 50px; } } @media (min-width: 1440px) { #elementor-new-template-dialog-content { padding: 0 120px; } } #elementor-new-template__description { width: 35%; max-width: 300px; padding-inline-end: 100px; } #elementor-new-template__description__title { font-size: 30px; } #elementor-new-template__description__title span { font-weight: bold; } #elementor-new-template__description__content { font-size: 16px; padding: 30px 0; } #elementor-new-template__take_a_tour { display: flex; align-items: center; font-size: 15px; } #elementor-new-template__take_a_tour i { color: var(--e-a-color-accent); font-size: 30px; } #elementor-new-template__take_a_tour a { padding-inline-start: 10px; font-weight: 500; } #elementor-new-template__form { flex-grow: 1; max-width: 440px; padding: 55px; background-color: var(--e-a-color-white); border-radius: var(--e-a-border-radius); border: var(--e-a-border); } #elementor-new-template__form__title { font-size: 23px; } #elementor-new-template__form__template-type.elementor-form-field__select { max-width: initial; } #elementor-new-template__form__template-type-badge { position: absolute; display: flex; align-items: center; justify-content: center; gap: 2px; border-radius: 2px; background-color: #F1F2F3; padding: 4px; font-size: 8px; font-weight: 500; line-height: 1; text-transform: uppercase; inset-block-start: 50%; inset-inline-end: 28px; transform: translateY(-50%); } #elementor-new-template__form .elementor-form-field__label { display: block; margin: 25px 0 7px; font-size: 14px; line-height: 1; } #elementor-new-template__form .elementor-form-field input, #elementor-new-template__form .elementor-form-field select { width: 100%; height: 50px; padding: 10px; font-size: 14px; box-shadow: none; border-radius: var(--e-a-border-radius); background: none; border: var(--e-a-border-bold); outline: none; } #elementor-new-template__form .elementor-form-field input:focus, #elementor-new-template__form .elementor-form-field select:focus { border-color: var(--e-a-border-color-focus); } #elementor-new-template__form .elementor-form-field__select { -webkit-appearance: none; -moz-appearance: none; appearance: none; cursor: pointer; } #elementor-new-template__form .elementor-form-field__select__wrapper { position: relative; } #elementor-new-template__form .elementor-form-field__select__wrapper:after { font-family: eicons; content: "\e8ad"; position: absolute; inset-block-start: 50%; inset-inline-end: 10px; transform: translateY(-50%); } #elementor-new-template__form__submit, #elementor-new-template__form__lock_button { display: block; width: 100%; height: 50px; margin-block-start: 24px; box-sizing: border-box; text-align: center; } @media (max-width: 1024px) { #elementor-new-template__description { max-width: 250px; padding-inline-end: 30px; } } @media (max-width: 767px) { #elementor-new-template__description { display: none; } } #elementor-role-manager { max-width: 500px; margin-block-start: 50px; } #elementor-role-manager h3 { color: #3f444b; font-weight: normal; font-size: 22px; } #elementor-role-manager .elementor-settings-form-page { padding: 0; } #elementor-role-manager .elementor-role-row { background: #ffffff; color: #3f444b; margin-block-end: 2px; } #elementor-role-manager .elementor-role-row .elementor-role-label { display: flex; padding: 15px 20px; font-weight: 500; cursor: pointer; } #elementor-role-manager .elementor-role-row .elementor-role-label span.elementor-role-name { padding-inline-end: 20px; } #elementor-role-manager .elementor-role-row .elementor-role-label span.elementor-role-toggle { text-align: end; flex-grow: 1; } #elementor-role-manager .elementor-role-row .elementor-role-label span.elementor-role-excluded-indicator { color: #9DA5AE; } #elementor-role-manager .elementor-role-row .elementor-role-controls { background-color: #F9FAFA; padding: 20px 20px 5px; } #elementor-role-manager .elementor-role-row .elementor-role-controls > div { margin-block-end: 15px; } #elementor-role-manager .elementor-role-row .elementor-role-controls .elementor-role-go-pro { display: flex; align-items: center; } #elementor-role-manager .elementor-role-row .elementor-role-controls .elementor-role-go-pro .elementor-role-go-pro__desc { font-weight: 500; font-style: italic; flex-grow: 1; } #elementor-role-manager .elementor-role-row .elementor-role-controls .elementor-role-go-pro .elementor-role-go-pro__link { display: flex; } #elementor-role-manager .elementor-role-row .elementor-role-controls-advanced > div + div { margin-block-start: 15px; } #elementor-role-manager .elementor-role-control-warning { color: var(--e-a-color-danger); } #elementor-beta-tester-modal { color: var(--e-a-color-txt); } #elementor-beta-tester-modal .elementor-templates-modal__header__items-area { color: var(--e-a-color-txt); cursor: pointer; } #elementor-beta-tester-modal .elementor-templates-modal__header__items-area:hover .elementor-beta-tester-do-not-show-again, #elementor-beta-tester-modal .elementor-templates-modal__header__items-area:hover .elementor-templates-modal__header__item > i { color: var(--e-a-color-txt-hover); } #elementor-beta-tester-modal .elementor-templates-modal__header__items-area .elementor-templates-modal__header__close { border: none; } #elementor-beta-tester-modal .elementor-templates-modal__header__items-area .elementor-beta-tester-do-not-show-again { text-transform: uppercase; font-weight: bold; font-size: 12px; transition: var(--e-a-transition-hover); } #elementor-beta-tester-modal .dialog-lightbox-widget-content { max-width: 500px; height: initial; } #elementor-beta-tester-modal .dialog-lightbox-message { padding: 40px; height: 300px; background-color: var(--e-a-bg-default); } #elementor-beta-tester-form__caption { font-weight: bold; font-size: 20px; } #elementor-beta-tester-form__description { font-size: 15px; margin-block-start: 10px; } #elementor-beta-tester-form__input-wrapper { display: flex; margin-block-start: 30px; } #elementor-beta-tester-form__input-wrapper .elementor-button { border-start-start-radius: 0; border-start-end-radius: 3px; border-end-start-radius: 0; border-end-end-radius: 3px; } #elementor-beta-tester-form__email { flex-grow: 1; border: var(--e-a-border); border-inline-end: 0; border-start-start-radius: 3px; border-start-end-radius: 0; border-end-start-radius: 3px; border-end-end-radius: 0; margin: 0; padding: 10px; height: 50px; } #elementor-beta-tester-form__terms { margin-block-start: 40px; font-size: 11px; color: var(--e-a-color-txt-muted); } .e-experiment__title { display: flex; align-items: flex-start; flex-direction: column; } .e-experiment__title__indicator { position: absolute; height: 10px; width: 10px; border-radius: 50%; border: 2px solid white; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); flex-shrink: 0; margin-block-start: 2px; } .e-experiment__title__indicator--active { background: #39b54a; } .e-experiment__title__label { margin-inline-start: 24px; } .e-experiment__title__tag { background: #0085ba; color: #ffffff; font-size: 0.8em; padding: 3px 6px; line-height: 1; border-radius: 3px; font-weight: 600; margin-block-start: 5px; margin-inline-start: 24px; } .e-experiment__title__tag__secondary { background: rgba(0, 0, 0, 0.1); color: inherit; } .e-experiment__table-title { margin: 30px 0; } .e-experiment__dependency, .e-experiment__status { margin-block-start: 4px; font-size: 0.9em; line-height: 18px; font-weight: bold; font-style: italic; } .e-experiment__button.button { margin-block: 18px 22px; margin-inline: 0 14px; } .e-experiment__dependency { color: #21759b; } .e-experiment__dependency__title { font-weight: inherit; } #tab-experiments .form-table tr { border-block-end: 1px solid #dcdcde; } #tab-experiments .form-table tr:last-child { border-block-end: none; } #tab-experiments .form-table tr .description { font-size: 0.9em; margin: 10px 0; max-width: 820px; } .e-landing-pages-empty .elementor-blank_state { padding: 5em 0 2em 0; } .e-landing-pages-empty .e-trashed-items { text-align: center; } .e-feature-promotion { --e-a-top-bar-height: 50px; --e-a-content-area-spacing: 110px; --e-black: #000000; width: 1220px; height: calc(100vh - var(--e-a-top-bar-height) - var(--e-a-content-area-spacing)); display: grid; grid-template-columns: repeat(2, auto); grid-template-rows: auto; justify-content: space-between; align-items: center; align-content: center; margin: auto; transform: translate(-10px, 40px); text-align: center; font-family: var(--e-a-font-family); } .e-feature-promotion_data { grid-column: 1/2; grid-row: 1/2; display: flex; flex-direction: column; justify-content: center; align-items: self-start; margin-inline-start: 15px; padding-inline-end: 40px; max-width: 608px; } .e-feature-promotion_data h3 { margin-block-start: 0; margin-inline-end: 0; margin-block-end: 33px; margin-inline-start: 0; text-align: start; font-size: 1.85rem; font-weight: 300; color: var(--e-black); line-height: 1.2; } .e-feature-promotion_data ul { margin-block-start: 0; margin-block-end: 1.6rem; text-align: start; } .e-feature-promotion_data ul > li { margin-block-start: 0; margin-inline-end: 9px; margin-block-end: 8px; margin-inline-start: 8px; display: flex; font-size: 1rem; line-height: 21px; color: var(--e-black); } .e-feature-promotion_data ul > li:before { content: url("data:image/svg+xml,%3Csvg width='25' height='24' viewBox='0 0 25 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M21.5201 6.46967C21.813 6.76256 21.813 7.23744 21.5201 7.53033L11.5201 17.5303C11.2272 17.8232 10.7523 17.8232 10.4594 17.5303L5.45942 12.5303C5.16652 12.2374 5.16652 11.7626 5.45942 11.4697C5.75231 11.1768 6.22718 11.1768 6.52008 11.4697L10.9897 15.9393L20.4594 6.46967C20.7523 6.17678 21.2272 6.17678 21.5201 6.46967Z' fill='%230C0D0E'/%3E%3C/svg%3E%0A"); font-size: 1.4rem; margin-block-start: -3px; margin-inline-end: 9px; margin-block-end: 0; margin-inline-start: -9px; } .e-feature-promotion_data > .go-pro { display: flex; align-items: center; padding: 9px 15px; font-size: 0.9rem; } .e-feature-promotion_data > .side-note { justify-self: baseline; margin-block-start: 2rem; text-align: start; } .e-feature-promotion_iframe { grid-column: 2/3; grid-row: 1/2; aspect-ratio: 16/9; width: 608px; border: none; } body.rtl .e-feature-promotion { transform: translateX(10px); } @media (max-width: 1410px) { .e-feature-promotion { display: flex; flex-direction: column; justify-content: flex-start; width: 90%; } .e-feature-promotion_data { margin-block-end: 2rem; margin-inline-start: unset; padding-inline-end: unset; } .e-feature-promotion_iframe { max-width: 90%; aspect-ratio: 16/9; } } .elementor-control-notice { display: flex; justify-content: flex-start; align-items: flex-start; gap: 8px; padding: 16px; border-radius: 3px; border: 1px solid var(--notice-control-color, var(--e-a-color-txt)); color: var(--e-a-color-txt); font-size: 12px; font-weight: 400; line-height: 1.5; text-align: start; margin-block-start: 10px; } .elementor-control-notice-type-info { --notice-control-color: var(--e-a-color-info); } .elementor-control-notice-type-success { --notice-control-color: var(--e-a-color-success); } .elementor-control-notice-type-warning { --notice-control-color: var(--e-a-color-warning); } .elementor-control-notice-type-danger { --notice-control-color: var(--e-a-color-danger); } .elementor-control-notice-icon { flex-basis: 18px; color: var(--notice-control-color); } .elementor-control-notice-main { display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-start; gap: 6px; flex: 1; } .elementor-control-notice-main-heading { font-weight: 700; font-style: italic; } .elementor-control-notice-main-content { font-style: italic; line-height: 1.5; } .elementor-control-notice-main-actions { display: flex; gap: 10px; padding-block-start: 8px; } .elementor-control-notice-main a { color: inherit; font-weight: 700; cursor: pointer; } .elementor-control-notice-main a:hover, .elementor-control-notice-main a:focus { color: inherit; } .elementor-control-notice-dismiss { -webkit-appearance: none; -moz-appearance: none; appearance: none; background-color: transparent; border: 0; padding: 0; margin: 0; cursor: pointer; } /*# sourceMappingURL=admin.css.map *//*! elementor - v3.25.0 - 24-11-2024 */ /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ "../node_modules/@reduxjs/toolkit/dist/redux-toolkit.esm.js": /*!******************************************************************!*\ !*** ../node_modules/@reduxjs/toolkit/dist/redux-toolkit.esm.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ EnhancerArray: () => (/* binding */ EnhancerArray), /* harmony export */ MiddlewareArray: () => (/* binding */ MiddlewareArray), /* harmony export */ SHOULD_AUTOBATCH: () => (/* binding */ SHOULD_AUTOBATCH), /* harmony export */ TaskAbortError: () => (/* binding */ TaskAbortError), /* harmony export */ __DO_NOT_USE__ActionTypes: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_0__.__DO_NOT_USE__ActionTypes), /* harmony export */ addListener: () => (/* binding */ addListener), /* harmony export */ applyMiddleware: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_0__.applyMiddleware), /* harmony export */ autoBatchEnhancer: () => (/* binding */ autoBatchEnhancer), /* harmony export */ bindActionCreators: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_0__.bindActionCreators), /* harmony export */ clearAllListeners: () => (/* binding */ clearAllListeners), /* harmony export */ combineReducers: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_0__.combineReducers), /* harmony export */ compose: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_0__.compose), /* harmony export */ configureStore: () => (/* binding */ configureStore), /* harmony export */ createAction: () => (/* binding */ createAction), /* harmony export */ createActionCreatorInvariantMiddleware: () => (/* binding */ createActionCreatorInvariantMiddleware), /* harmony export */ createAsyncThunk: () => (/* binding */ createAsyncThunk), /* harmony export */ createDraftSafeSelector: () => (/* binding */ createDraftSafeSelector), /* harmony export */ createEntityAdapter: () => (/* binding */ createEntityAdapter), /* harmony export */ createImmutableStateInvariantMiddleware: () => (/* binding */ createImmutableStateInvariantMiddleware), /* harmony export */ createListenerMiddleware: () => (/* binding */ createListenerMiddleware), /* harmony export */ createNextState: () => (/* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_2__["default"]), /* harmony export */ createReducer: () => (/* binding */ createReducer), /* harmony export */ createSelector: () => (/* reexport safe */ reselect__WEBPACK_IMPORTED_MODULE_1__.createSelector), /* harmony export */ createSerializableStateInvariantMiddleware: () => (/* binding */ createSerializableStateInvariantMiddleware), /* harmony export */ createSlice: () => (/* binding */ createSlice), /* harmony export */ createStore: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_0__.createStore), /* harmony export */ current: () => (/* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_2__.current), /* harmony export */ findNonSerializableValue: () => (/* binding */ findNonSerializableValue), /* harmony export */ freeze: () => (/* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_2__.freeze), /* harmony export */ getDefaultMiddleware: () => (/* binding */ getDefaultMiddleware), /* harmony export */ getType: () => (/* binding */ getType), /* harmony export */ isAction: () => (/* binding */ isAction), /* harmony export */ isActionCreator: () => (/* binding */ isActionCreator), /* harmony export */ isAllOf: () => (/* binding */ isAllOf), /* harmony export */ isAnyOf: () => (/* binding */ isAnyOf), /* harmony export */ isAsyncThunkAction: () => (/* binding */ isAsyncThunkAction), /* harmony export */ isDraft: () => (/* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_2__.isDraft), /* harmony export */ isFluxStandardAction: () => (/* binding */ isFSA), /* harmony export */ isFulfilled: () => (/* binding */ isFulfilled), /* harmony export */ isImmutableDefault: () => (/* binding */ isImmutableDefault), /* harmony export */ isPending: () => (/* binding */ isPending), /* harmony export */ isPlain: () => (/* binding */ isPlain), /* harmony export */ isPlainObject: () => (/* binding */ isPlainObject), /* harmony export */ isRejected: () => (/* binding */ isRejected), /* harmony export */ isRejectedWithValue: () => (/* binding */ isRejectedWithValue), /* harmony export */ legacy_createStore: () => (/* reexport safe */ redux__WEBPACK_IMPORTED_MODULE_0__.legacy_createStore), /* harmony export */ miniSerializeError: () => (/* binding */ miniSerializeError), /* harmony export */ nanoid: () => (/* binding */ nanoid), /* harmony export */ original: () => (/* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_2__.original), /* harmony export */ prepareAutoBatched: () => (/* binding */ prepareAutoBatched), /* harmony export */ removeListener: () => (/* binding */ removeListener), /* harmony export */ unwrapResult: () => (/* binding */ unwrapResult) /* harmony export */ }); /* harmony import */ var immer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! immer */ "../node_modules/@reduxjs/toolkit/node_modules/immer/dist/immer.esm.mjs"); /* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! redux */ "../node_modules/redux/es/redux.js"); /* harmony import */ var reselect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! reselect */ "../node_modules/reselect/es/index.js"); /* harmony import */ var redux_thunk__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! redux-thunk */ "../node_modules/redux-thunk/es/index.js"); var __extends = (undefined && undefined.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __generator = (undefined && undefined.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; var __spreadArray = (undefined && undefined.__spreadArray) || function (to, from) { for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) to[j] = from[i]; return to; }; var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = function (obj, key, value) { return key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value }) : obj[key] = value; }; var __spreadValues = function (a, b) { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var _i = 0, _c = __getOwnPropSymbols(b); _i < _c.length; _i++) { var prop = _c[_i]; if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = function (a, b) { return __defProps(a, __getOwnPropDescs(b)); }; var __async = function (__this, __arguments, generator) { return new Promise(function (resolve, reject) { var fulfilled = function (value) { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = function (value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = function (x) { return x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); }; step((generator = generator.apply(__this, __arguments)).next()); }); }; // src/index.ts // src/createDraftSafeSelector.ts var createDraftSafeSelector = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var selector = reselect__WEBPACK_IMPORTED_MODULE_1__.createSelector.apply(void 0, args); var wrappedSelector = function (value) { var rest = []; for (var _i = 1; _i < arguments.length; _i++) { rest[_i - 1] = arguments[_i]; } return selector.apply(void 0, __spreadArray([(0,immer__WEBPACK_IMPORTED_MODULE_2__.isDraft)(value) ? (0,immer__WEBPACK_IMPORTED_MODULE_2__.current)(value) : value], rest)); }; return wrappedSelector; }; // src/configureStore.ts // src/devtoolsExtension.ts var composeWithDevTools = typeof window !== "undefined" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function () { if (arguments.length === 0) return void 0; if (typeof arguments[0] === "object") return redux__WEBPACK_IMPORTED_MODULE_0__.compose; return redux__WEBPACK_IMPORTED_MODULE_0__.compose.apply(null, arguments); }; var devToolsEnhancer = typeof window !== "undefined" && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function () { return function (noop2) { return noop2; }; }; // src/isPlainObject.ts function isPlainObject(value) { if (typeof value !== "object" || value === null) return false; var proto = Object.getPrototypeOf(value); if (proto === null) return true; var baseProto = proto; while (Object.getPrototypeOf(baseProto) !== null) { baseProto = Object.getPrototypeOf(baseProto); } return proto === baseProto; } // src/getDefaultMiddleware.ts // src/tsHelpers.ts var hasMatchFunction = function (v) { return v && typeof v.match === "function"; }; // src/createAction.ts function createAction(type, prepareAction) { function actionCreator() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (prepareAction) { var prepared = prepareAction.apply(void 0, args); if (!prepared) { throw new Error("prepareAction did not return an object"); } return __spreadValues(__spreadValues({ type: type, payload: prepared.payload }, "meta" in prepared && { meta: prepared.meta }), "error" in prepared && { error: prepared.error }); } return { type: type, payload: args[0] }; } actionCreator.toString = function () { return "" + type; }; actionCreator.type = type; actionCreator.match = function (action) { return action.type === type; }; return actionCreator; } function isAction(action) { return isPlainObject(action) && "type" in action; } function isActionCreator(action) { return typeof action === "function" && "type" in action && hasMatchFunction(action); } function isFSA(action) { return isAction(action) && typeof action.type === "string" && Object.keys(action).every(isValidKey); } function isValidKey(key) { return ["type", "payload", "error", "meta"].indexOf(key) > -1; } function getType(actionCreator) { return "" + actionCreator; } // src/actionCreatorInvariantMiddleware.ts function getMessage(type) { var splitType = type ? ("" + type).split("/") : []; var actionName = splitType[splitType.length - 1] || "actionCreator"; return "Detected an action creator with type \"" + (type || "unknown") + "\" being dispatched. \nMake sure you're calling the action creator before dispatching, i.e. `dispatch(" + actionName + "())` instead of `dispatch(" + actionName + ")`. This is necessary even if the action has no payload."; } function createActionCreatorInvariantMiddleware(options) { if (options === void 0) { options = {}; } if (false) {} var _c = options.isActionCreator, isActionCreator2 = _c === void 0 ? isActionCreator : _c; return function () { return function (next) { return function (action) { if (isActionCreator2(action)) { console.warn(getMessage(action.type)); } return next(action); }; }; }; } // src/utils.ts function getTimeMeasureUtils(maxDelay, fnName) { var elapsed = 0; return { measureTime: function (fn) { var started = Date.now(); try { return fn(); } finally { var finished = Date.now(); elapsed += finished - started; } }, warnIfExceeded: function () { if (elapsed > maxDelay) { console.warn(fnName + " took " + elapsed + "ms, which is more than the warning threshold of " + maxDelay + "ms. \nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\nIt is disabled in production builds, so you don't need to worry about that."); } } }; } var MiddlewareArray = /** @class */ (function (_super) { __extends(MiddlewareArray, _super); function MiddlewareArray() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var _this = _super.apply(this, args) || this; Object.setPrototypeOf(_this, MiddlewareArray.prototype); return _this; } Object.defineProperty(MiddlewareArray, Symbol.species, { get: function () { return MiddlewareArray; }, enumerable: false, configurable: true }); MiddlewareArray.prototype.concat = function () { var arr = []; for (var _i = 0; _i < arguments.length; _i++) { arr[_i] = arguments[_i]; } return _super.prototype.concat.apply(this, arr); }; MiddlewareArray.prototype.prepend = function () { var arr = []; for (var _i = 0; _i < arguments.length; _i++) { arr[_i] = arguments[_i]; } if (arr.length === 1 && Array.isArray(arr[0])) { return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr[0].concat(this))))(); } return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr.concat(this))))(); }; return MiddlewareArray; }(Array)); var EnhancerArray = /** @class */ (function (_super) { __extends(EnhancerArray, _super); function EnhancerArray() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var _this = _super.apply(this, args) || this; Object.setPrototypeOf(_this, EnhancerArray.prototype); return _this; } Object.defineProperty(EnhancerArray, Symbol.species, { get: function () { return EnhancerArray; }, enumerable: false, configurable: true }); EnhancerArray.prototype.concat = function () { var arr = []; for (var _i = 0; _i < arguments.length; _i++) { arr[_i] = arguments[_i]; } return _super.prototype.concat.apply(this, arr); }; EnhancerArray.prototype.prepend = function () { var arr = []; for (var _i = 0; _i < arguments.length; _i++) { arr[_i] = arguments[_i]; } if (arr.length === 1 && Array.isArray(arr[0])) { return new (EnhancerArray.bind.apply(EnhancerArray, __spreadArray([void 0], arr[0].concat(this))))(); } return new (EnhancerArray.bind.apply(EnhancerArray, __spreadArray([void 0], arr.concat(this))))(); }; return EnhancerArray; }(Array)); function freezeDraftable(val) { return (0,immer__WEBPACK_IMPORTED_MODULE_2__.isDraftable)(val) ? (0,immer__WEBPACK_IMPORTED_MODULE_2__["default"])(val, function () { }) : val; } // src/immutableStateInvariantMiddleware.ts var isProduction = "development" === "production"; var prefix = "Invariant failed"; function invariant(condition, message) { if (condition) { return; } if (isProduction) { throw new Error(prefix); } throw new Error(prefix + ": " + (message || "")); } function stringify(obj, serializer, indent, decycler) { return JSON.stringify(obj, getSerialize(serializer, decycler), indent); } function getSerialize(serializer, decycler) { var stack = [], keys = []; if (!decycler) decycler = function (_, value) { if (stack[0] === value) return "[Circular ~]"; return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]"; }; return function (key, value) { if (stack.length > 0) { var thisPos = stack.indexOf(this); ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); if (~stack.indexOf(value)) value = decycler.call(this, key, value); } else stack.push(value); return serializer == null ? value : serializer.call(this, key, value); }; } function isImmutableDefault(value) { return typeof value !== "object" || value == null || Object.isFrozen(value); } function trackForMutations(isImmutable, ignorePaths, obj) { var trackedProperties = trackProperties(isImmutable, ignorePaths, obj); return { detectMutations: function () { return detectMutations(isImmutable, ignorePaths, trackedProperties, obj); } }; } function trackProperties(isImmutable, ignorePaths, obj, path, checkedObjects) { if (ignorePaths === void 0) { ignorePaths = []; } if (path === void 0) { path = ""; } if (checkedObjects === void 0) { checkedObjects = new Set(); } var tracked = { value: obj }; if (!isImmutable(obj) && !checkedObjects.has(obj)) { checkedObjects.add(obj); tracked.children = {}; for (var key in obj) { var childPath = path ? path + "." + key : key; if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) { continue; } tracked.children[key] = trackProperties(isImmutable, ignorePaths, obj[key], childPath); } } return tracked; } function detectMutations(isImmutable, ignoredPaths, trackedProperty, obj, sameParentRef, path) { if (ignoredPaths === void 0) { ignoredPaths = []; } if (sameParentRef === void 0) { sameParentRef = false; } if (path === void 0) { path = ""; } var prevObj = trackedProperty ? trackedProperty.value : void 0; var sameRef = prevObj === obj; if (sameParentRef && !sameRef && !Number.isNaN(obj)) { return { wasMutated: true, path: path }; } if (isImmutable(prevObj) || isImmutable(obj)) { return { wasMutated: false }; } var keysToDetect = {}; for (var key in trackedProperty.children) { keysToDetect[key] = true; } for (var key in obj) { keysToDetect[key] = true; } var hasIgnoredPaths = ignoredPaths.length > 0; var _loop_1 = function (key) { var nestedPath = path ? path + "." + key : key; if (hasIgnoredPaths) { var hasMatches = ignoredPaths.some(function (ignored) { if (ignored instanceof RegExp) { return ignored.test(nestedPath); } return nestedPath === ignored; }); if (hasMatches) { return "continue"; } } var result = detectMutations(isImmutable, ignoredPaths, trackedProperty.children[key], obj[key], sameRef, nestedPath); if (result.wasMutated) { return { value: result }; } }; for (var key in keysToDetect) { var state_1 = _loop_1(key); if (typeof state_1 === "object") return state_1.value; } return { wasMutated: false }; } function createImmutableStateInvariantMiddleware(options) { if (options === void 0) { options = {}; } if (false) {} var _c = options.isImmutable, isImmutable = _c === void 0 ? isImmutableDefault : _c, ignoredPaths = options.ignoredPaths, _d = options.warnAfter, warnAfter = _d === void 0 ? 32 : _d, ignore = options.ignore; ignoredPaths = ignoredPaths || ignore; var track = trackForMutations.bind(null, isImmutable, ignoredPaths); return function (_c) { var getState = _c.getState; var state = getState(); var tracker = track(state); var result; return function (next) { return function (action) { var measureUtils = getTimeMeasureUtils(warnAfter, "ImmutableStateInvariantMiddleware"); measureUtils.measureTime(function () { state = getState(); result = tracker.detectMutations(); tracker = track(state); invariant(!result.wasMutated, "A state mutation was detected between dispatches, in the path '" + (result.path || "") + "'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)"); }); var dispatchedAction = next(action); measureUtils.measureTime(function () { state = getState(); result = tracker.detectMutations(); tracker = track(state); result.wasMutated && invariant(!result.wasMutated, "A state mutation was detected inside a dispatch, in the path: " + (result.path || "") + ". Take a look at the reducer(s) handling the action " + stringify(action) + ". (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)"); }); measureUtils.warnIfExceeded(); return dispatchedAction; }; }; }; } // src/serializableStateInvariantMiddleware.ts function isPlain(val) { var type = typeof val; return val == null || type === "string" || type === "boolean" || type === "number" || Array.isArray(val) || isPlainObject(val); } function findNonSerializableValue(value, path, isSerializable, getEntries, ignoredPaths, cache) { if (path === void 0) { path = ""; } if (isSerializable === void 0) { isSerializable = isPlain; } if (ignoredPaths === void 0) { ignoredPaths = []; } var foundNestedSerializable; if (!isSerializable(value)) { return { keyPath: path || "", value: value }; } if (typeof value !== "object" || value === null) { return false; } if (cache == null ? void 0 : cache.has(value)) return false; var entries = getEntries != null ? getEntries(value) : Object.entries(value); var hasIgnoredPaths = ignoredPaths.length > 0; var _loop_2 = function (key, nestedValue) { var nestedPath = path ? path + "." + key : key; if (hasIgnoredPaths) { var hasMatches = ignoredPaths.some(function (ignored) { if (ignored instanceof RegExp) { return ignored.test(nestedPath); } return nestedPath === ignored; }); if (hasMatches) { return "continue"; } } if (!isSerializable(nestedValue)) { return { value: { keyPath: nestedPath, value: nestedValue } }; } if (typeof nestedValue === "object") { foundNestedSerializable = findNonSerializableValue(nestedValue, nestedPath, isSerializable, getEntries, ignoredPaths, cache); if (foundNestedSerializable) { return { value: foundNestedSerializable }; } } }; for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) { var _c = entries_1[_i], key = _c[0], nestedValue = _c[1]; var state_2 = _loop_2(key, nestedValue); if (typeof state_2 === "object") return state_2.value; } if (cache && isNestedFrozen(value)) cache.add(value); return false; } function isNestedFrozen(value) { if (!Object.isFrozen(value)) return false; for (var _i = 0, _c = Object.values(value); _i < _c.length; _i++) { var nestedValue = _c[_i]; if (typeof nestedValue !== "object" || nestedValue === null) continue; if (!isNestedFrozen(nestedValue)) return false; } return true; } function createSerializableStateInvariantMiddleware(options) { if (options === void 0) { options = {}; } if (false) {} var _c = options.isSerializable, isSerializable = _c === void 0 ? isPlain : _c, getEntries = options.getEntries, _d = options.ignoredActions, ignoredActions = _d === void 0 ? [] : _d, _e = options.ignoredActionPaths, ignoredActionPaths = _e === void 0 ? ["meta.arg", "meta.baseQueryMeta"] : _e, _f = options.ignoredPaths, ignoredPaths = _f === void 0 ? [] : _f, _g = options.warnAfter, warnAfter = _g === void 0 ? 32 : _g, _h = options.ignoreState, ignoreState = _h === void 0 ? false : _h, _j = options.ignoreActions, ignoreActions = _j === void 0 ? false : _j, _k = options.disableCache, disableCache = _k === void 0 ? false : _k; var cache = !disableCache && WeakSet ? new WeakSet() : void 0; return function (storeAPI) { return function (next) { return function (action) { var result = next(action); var measureUtils = getTimeMeasureUtils(warnAfter, "SerializableStateInvariantMiddleware"); if (!ignoreActions && !(ignoredActions.length && ignoredActions.indexOf(action.type) !== -1)) { measureUtils.measureTime(function () { var foundActionNonSerializableValue = findNonSerializableValue(action, "", isSerializable, getEntries, ignoredActionPaths, cache); if (foundActionNonSerializableValue) { var keyPath = foundActionNonSerializableValue.keyPath, value = foundActionNonSerializableValue.value; console.error("A non-serializable value was detected in an action, in the path: `" + keyPath + "`. Value:", value, "\nTake a look at the logic that dispatched this action: ", action, "\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)", "\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)"); } }); } if (!ignoreState) { measureUtils.measureTime(function () { var state = storeAPI.getState(); var foundStateNonSerializableValue = findNonSerializableValue(state, "", isSerializable, getEntries, ignoredPaths, cache); if (foundStateNonSerializableValue) { var keyPath = foundStateNonSerializableValue.keyPath, value = foundStateNonSerializableValue.value; console.error("A non-serializable value was detected in the state, in the path: `" + keyPath + "`. Value:", value, "\nTake a look at the reducer(s) handling this action type: " + action.type + ".\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)"); } }); measureUtils.warnIfExceeded(); } return result; }; }; }; } // src/getDefaultMiddleware.ts function isBoolean(x) { return typeof x === "boolean"; } function curryGetDefaultMiddleware() { return function curriedGetDefaultMiddleware(options) { return getDefaultMiddleware(options); }; } function getDefaultMiddleware(options) { if (options === void 0) { options = {}; } var _c = options.thunk, thunk = _c === void 0 ? true : _c, _d = options.immutableCheck, immutableCheck = _d === void 0 ? true : _d, _e = options.serializableCheck, serializableCheck = _e === void 0 ? true : _e, _f = options.actionCreatorCheck, actionCreatorCheck = _f === void 0 ? true : _f; var middlewareArray = new MiddlewareArray(); if (thunk) { if (isBoolean(thunk)) { middlewareArray.push(redux_thunk__WEBPACK_IMPORTED_MODULE_3__["default"]); } else { middlewareArray.push(redux_thunk__WEBPACK_IMPORTED_MODULE_3__["default"].withExtraArgument(thunk.extraArgument)); } } if (true) { if (immutableCheck) { var immutableOptions = {}; if (!isBoolean(immutableCheck)) { immutableOptions = immutableCheck; } middlewareArray.unshift(createImmutableStateInvariantMiddleware(immutableOptions)); } if (serializableCheck) { var serializableOptions = {}; if (!isBoolean(serializableCheck)) { serializableOptions = serializableCheck; } middlewareArray.push(createSerializableStateInvariantMiddleware(serializableOptions)); } if (actionCreatorCheck) { var actionCreatorOptions = {}; if (!isBoolean(actionCreatorCheck)) { actionCreatorOptions = actionCreatorCheck; } middlewareArray.unshift(createActionCreatorInvariantMiddleware(actionCreatorOptions)); } } return middlewareArray; } // src/configureStore.ts var IS_PRODUCTION = "development" === "production"; function configureStore(options) { var curriedGetDefaultMiddleware = curryGetDefaultMiddleware(); var _c = options || {}, _d = _c.reducer, reducer = _d === void 0 ? void 0 : _d, _e = _c.middleware, middleware = _e === void 0 ? curriedGetDefaultMiddleware() : _e, _f = _c.devTools, devTools = _f === void 0 ? true : _f, _g = _c.preloadedState, preloadedState = _g === void 0 ? void 0 : _g, _h = _c.enhancers, enhancers = _h === void 0 ? void 0 : _h; var rootReducer; if (typeof reducer === "function") { rootReducer = reducer; } else if (isPlainObject(reducer)) { rootReducer = (0,redux__WEBPACK_IMPORTED_MODULE_0__.combineReducers)(reducer); } else { throw new Error('"reducer" is a required argument, and must be a function or an object of functions that can be passed to combineReducers'); } var finalMiddleware = middleware; if (typeof finalMiddleware === "function") { finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware); if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) { throw new Error("when using a middleware builder function, an array of middleware must be returned"); } } if (!IS_PRODUCTION && finalMiddleware.some(function (item) { return typeof item !== "function"; })) { throw new Error("each middleware provided to configureStore must be a function"); } var middlewareEnhancer = redux__WEBPACK_IMPORTED_MODULE_0__.applyMiddleware.apply(void 0, finalMiddleware); var finalCompose = redux__WEBPACK_IMPORTED_MODULE_0__.compose; if (devTools) { finalCompose = composeWithDevTools(__spreadValues({ trace: !IS_PRODUCTION }, typeof devTools === "object" && devTools)); } var defaultEnhancers = new EnhancerArray(middlewareEnhancer); var storeEnhancers = defaultEnhancers; if (Array.isArray(enhancers)) { storeEnhancers = __spreadArray([middlewareEnhancer], enhancers); } else if (typeof enhancers === "function") { storeEnhancers = enhancers(defaultEnhancers); } var composedEnhancer = finalCompose.apply(void 0, storeEnhancers); return (0,redux__WEBPACK_IMPORTED_MODULE_0__.createStore)(rootReducer, preloadedState, composedEnhancer); } // src/createReducer.ts // src/mapBuilders.ts function executeReducerBuilderCallback(builderCallback) { var actionsMap = {}; var actionMatchers = []; var defaultCaseReducer; var builder = { addCase: function (typeOrActionCreator, reducer) { if (true) { if (actionMatchers.length > 0) { throw new Error("`builder.addCase` should only be called before calling `builder.addMatcher`"); } if (defaultCaseReducer) { throw new Error("`builder.addCase` should only be called before calling `builder.addDefaultCase`"); } } var type = typeof typeOrActionCreator === "string" ? typeOrActionCreator : typeOrActionCreator.type; if (!type) { throw new Error("`builder.addCase` cannot be called with an empty action type"); } if (type in actionsMap) { throw new Error("`builder.addCase` cannot be called with two reducers for the same action type"); } actionsMap[type] = reducer; return builder; }, addMatcher: function (matcher, reducer) { if (true) { if (defaultCaseReducer) { throw new Error("`builder.addMatcher` should only be called before calling `builder.addDefaultCase`"); } } actionMatchers.push({ matcher: matcher, reducer: reducer }); return builder; }, addDefaultCase: function (reducer) { if (true) { if (defaultCaseReducer) { throw new Error("`builder.addDefaultCase` can only be called once"); } } defaultCaseReducer = reducer; return builder; } }; builderCallback(builder); return [actionsMap, actionMatchers, defaultCaseReducer]; } // src/createReducer.ts function isStateFunction(x) { return typeof x === "function"; } var hasWarnedAboutObjectNotation = false; function createReducer(initialState, mapOrBuilderCallback, actionMatchers, defaultCaseReducer) { if (actionMatchers === void 0) { actionMatchers = []; } if (true) { if (typeof mapOrBuilderCallback === "object") { if (!hasWarnedAboutObjectNotation) { hasWarnedAboutObjectNotation = true; console.warn("The object notation for `createReducer` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer"); } } } var _c = typeof mapOrBuilderCallback === "function" ? executeReducerBuilderCallback(mapOrBuilderCallback) : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer], actionsMap = _c[0], finalActionMatchers = _c[1], finalDefaultCaseReducer = _c[2]; var getInitialState; if (isStateFunction(initialState)) { getInitialState = function () { return freezeDraftable(initialState()); }; } else { var frozenInitialState_1 = freezeDraftable(initialState); getInitialState = function () { return frozenInitialState_1; }; } function reducer(state, action) { if (state === void 0) { state = getInitialState(); } var caseReducers = __spreadArray([ actionsMap[action.type] ], finalActionMatchers.filter(function (_c) { var matcher = _c.matcher; return matcher(action); }).map(function (_c) { var reducer2 = _c.reducer; return reducer2; })); if (caseReducers.filter(function (cr) { return !!cr; }).length === 0) { caseReducers = [finalDefaultCaseReducer]; } return caseReducers.reduce(function (previousState, caseReducer) { if (caseReducer) { if ((0,immer__WEBPACK_IMPORTED_MODULE_2__.isDraft)(previousState)) { var draft = previousState; var result = caseReducer(draft, action); if (result === void 0) { return previousState; } return result; } else if (!(0,immer__WEBPACK_IMPORTED_MODULE_2__.isDraftable)(previousState)) { var result = caseReducer(previousState, action); if (result === void 0) { if (previousState === null) { return previousState; } throw Error("A case reducer on a non-draftable value must not return undefined"); } return result; } else { return (0,immer__WEBPACK_IMPORTED_MODULE_2__["default"])(previousState, function (draft) { return caseReducer(draft, action); }); } } return previousState; }, state); } reducer.getInitialState = getInitialState; return reducer; } // src/createSlice.ts var hasWarnedAboutObjectNotation2 = false; function getType2(slice, actionKey) { return slice + "/" + actionKey; } function createSlice(options) { var name = options.name; if (!name) { throw new Error("`name` is a required option for createSlice"); } if (typeof process !== "undefined" && "development" === "development") { if (options.initialState === void 0) { console.error("You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`"); } } var initialState = typeof options.initialState == "function" ? options.initialState : freezeDraftable(options.initialState); var reducers = options.reducers || {}; var reducerNames = Object.keys(reducers); var sliceCaseReducersByName = {}; var sliceCaseReducersByType = {}; var actionCreators = {}; reducerNames.forEach(function (reducerName) { var maybeReducerWithPrepare = reducers[reducerName]; var type = getType2(name, reducerName); var caseReducer; var prepareCallback; if ("reducer" in maybeReducerWithPrepare) { caseReducer = maybeReducerWithPrepare.reducer; prepareCallback = maybeReducerWithPrepare.prepare; } else { caseReducer = maybeReducerWithPrepare; } sliceCaseReducersByName[reducerName] = caseReducer; sliceCaseReducersByType[type] = caseReducer; actionCreators[reducerName] = prepareCallback ? createAction(type, prepareCallback) : createAction(type); }); function buildReducer() { if (true) { if (typeof options.extraReducers === "object") { if (!hasWarnedAboutObjectNotation2) { hasWarnedAboutObjectNotation2 = true; console.warn("The object notation for `createSlice.extraReducers` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice"); } } } var _c = typeof options.extraReducers === "function" ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers], _d = _c[0], extraReducers = _d === void 0 ? {} : _d, _e = _c[1], actionMatchers = _e === void 0 ? [] : _e, _f = _c[2], defaultCaseReducer = _f === void 0 ? void 0 : _f; var finalCaseReducers = __spreadValues(__spreadValues({}, extraReducers), sliceCaseReducersByType); return createReducer(initialState, function (builder) { for (var key in finalCaseReducers) { builder.addCase(key, finalCaseReducers[key]); } for (var _i = 0, actionMatchers_1 = actionMatchers; _i < actionMatchers_1.length; _i++) { var m = actionMatchers_1[_i]; builder.addMatcher(m.matcher, m.reducer); } if (defaultCaseReducer) { builder.addDefaultCase(defaultCaseReducer); } }); } var _reducer; return { name: name, reducer: function (state, action) { if (!_reducer) _reducer = buildReducer(); return _reducer(state, action); }, actions: actionCreators, caseReducers: sliceCaseReducersByName, getInitialState: function () { if (!_reducer) _reducer = buildReducer(); return _reducer.getInitialState(); } }; } // src/entities/entity_state.ts function getInitialEntityState() { return { ids: [], entities: {} }; } function createInitialStateFactory() { function getInitialState(additionalState) { if (additionalState === void 0) { additionalState = {}; } return Object.assign(getInitialEntityState(), additionalState); } return { getInitialState: getInitialState }; } // src/entities/state_selectors.ts function createSelectorsFactory() { function getSelectors(selectState) { var selectIds = function (state) { return state.ids; }; var selectEntities = function (state) { return state.entities; }; var selectAll = createDraftSafeSelector(selectIds, selectEntities, function (ids, entities) { return ids.map(function (id) { return entities[id]; }); }); var selectId = function (_, id) { return id; }; var selectById = function (entities, id) { return entities[id]; }; var selectTotal = createDraftSafeSelector(selectIds, function (ids) { return ids.length; }); if (!selectState) { return { selectIds: selectIds, selectEntities: selectEntities, selectAll: selectAll, selectTotal: selectTotal, selectById: createDraftSafeSelector(selectEntities, selectId, selectById) }; } var selectGlobalizedEntities = createDraftSafeSelector(selectState, selectEntities); return { selectIds: createDraftSafeSelector(selectState, selectIds), selectEntities: selectGlobalizedEntities, selectAll: createDraftSafeSelector(selectState, selectAll), selectTotal: createDraftSafeSelector(selectState, selectTotal), selectById: createDraftSafeSelector(selectGlobalizedEntities, selectId, selectById) }; } return { getSelectors: getSelectors }; } // src/entities/state_adapter.ts function createSingleArgumentStateOperator(mutator) { var operator = createStateOperator(function (_, state) { return mutator(state); }); return function operation(state) { return operator(state, void 0); }; } function createStateOperator(mutator) { return function operation(state, arg) { function isPayloadActionArgument(arg2) { return isFSA(arg2); } var runMutator = function (draft) { if (isPayloadActionArgument(arg)) { mutator(arg.payload, draft); } else { mutator(arg, draft); } }; if ((0,immer__WEBPACK_IMPORTED_MODULE_2__.isDraft)(state)) { runMutator(state); return state; } else { return (0,immer__WEBPACK_IMPORTED_MODULE_2__["default"])(state, runMutator); } }; } // src/entities/utils.ts function selectIdValue(entity, selectId) { var key = selectId(entity); if ( true && key === void 0) { console.warn("The entity passed to the `selectId` implementation returned undefined.", "You should probably provide your own `selectId` implementation.", "The entity that was passed:", entity, "The `selectId` implementation:", selectId.toString()); } return key; } function ensureEntitiesArray(entities) { if (!Array.isArray(entities)) { entities = Object.values(entities); } return entities; } function splitAddedUpdatedEntities(newEntities, selectId, state) { newEntities = ensureEntitiesArray(newEntities); var added = []; var updated = []; for (var _i = 0, newEntities_1 = newEntities; _i < newEntities_1.length; _i++) { var entity = newEntities_1[_i]; var id = selectIdValue(entity, selectId); if (id in state.entities) { updated.push({ id: id, changes: entity }); } else { added.push(entity); } } return [added, updated]; } // src/entities/unsorted_state_adapter.ts function createUnsortedStateAdapter(selectId) { function addOneMutably(entity, state) { var key = selectIdValue(entity, selectId); if (key in state.entities) { return; } state.ids.push(key); state.entities[key] = entity; } function addManyMutably(newEntities, state) { newEntities = ensureEntitiesArray(newEntities); for (var _i = 0, newEntities_2 = newEntities; _i < newEntities_2.length; _i++) { var entity = newEntities_2[_i]; addOneMutably(entity, state); } } function setOneMutably(entity, state) { var key = selectIdValue(entity, selectId); if (!(key in state.entities)) { state.ids.push(key); } state.entities[key] = entity; } function setManyMutably(newEntities, state) { newEntities = ensureEntitiesArray(newEntities); for (var _i = 0, newEntities_3 = newEntities; _i < newEntities_3.length; _i++) { var entity = newEntities_3[_i]; setOneMutably(entity, state); } } function setAllMutably(newEntities, state) { newEntities = ensureEntitiesArray(newEntities); state.ids = []; state.entities = {}; addManyMutably(newEntities, state); } function removeOneMutably(key, state) { return removeManyMutably([key], state); } function removeManyMutably(keys, state) { var didMutate = false; keys.forEach(function (key) { if (key in state.entities) { delete state.entities[key]; didMutate = true; } }); if (didMutate) { state.ids = state.ids.filter(function (id) { return id in state.entities; }); } } function removeAllMutably(state) { Object.assign(state, { ids: [], entities: {} }); } function takeNewKey(keys, update, state) { var original2 = state.entities[update.id]; var updated = Object.assign({}, original2, update.changes); var newKey = selectIdValue(updated, selectId); var hasNewKey = newKey !== update.id; if (hasNewKey) { keys[update.id] = newKey; delete state.entities[update.id]; } state.entities[newKey] = updated; return hasNewKey; } function updateOneMutably(update, state) { return updateManyMutably([update], state); } function updateManyMutably(updates, state) { var newKeys = {}; var updatesPerEntity = {}; updates.forEach(function (update) { if (update.id in state.entities) { updatesPerEntity[update.id] = { id: update.id, changes: __spreadValues(__spreadValues({}, updatesPerEntity[update.id] ? updatesPerEntity[update.id].changes : null), update.changes) }; } }); updates = Object.values(updatesPerEntity); var didMutateEntities = updates.length > 0; if (didMutateEntities) { var didMutateIds = updates.filter(function (update) { return takeNewKey(newKeys, update, state); }).length > 0; if (didMutateIds) { state.ids = Object.keys(state.entities); } } } function upsertOneMutably(entity, state) { return upsertManyMutably([entity], state); } function upsertManyMutably(newEntities, state) { var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1]; updateManyMutably(updated, state); addManyMutably(added, state); } return { removeAll: createSingleArgumentStateOperator(removeAllMutably), addOne: createStateOperator(addOneMutably), addMany: createStateOperator(addManyMutably), setOne: createStateOperator(setOneMutably), setMany: createStateOperator(setManyMutably), setAll: createStateOperator(setAllMutably), updateOne: createStateOperator(updateOneMutably), updateMany: createStateOperator(updateManyMutably), upsertOne: createStateOperator(upsertOneMutably), upsertMany: createStateOperator(upsertManyMutably), removeOne: createStateOperator(removeOneMutably), removeMany: createStateOperator(removeManyMutably) }; } // src/entities/sorted_state_adapter.ts function createSortedStateAdapter(selectId, sort) { var _c = createUnsortedStateAdapter(selectId), removeOne = _c.removeOne, removeMany = _c.removeMany, removeAll = _c.removeAll; function addOneMutably(entity, state) { return addManyMutably([entity], state); } function addManyMutably(newEntities, state) { newEntities = ensureEntitiesArray(newEntities); var models = newEntities.filter(function (model) { return !(selectIdValue(model, selectId) in state.entities); }); if (models.length !== 0) { merge(models, state); } } function setOneMutably(entity, state) { return setManyMutably([entity], state); } function setManyMutably(newEntities, state) { newEntities = ensureEntitiesArray(newEntities); if (newEntities.length !== 0) { merge(newEntities, state); } } function setAllMutably(newEntities, state) { newEntities = ensureEntitiesArray(newEntities); state.entities = {}; state.ids = []; addManyMutably(newEntities, state); } function updateOneMutably(update, state) { return updateManyMutably([update], state); } function updateManyMutably(updates, state) { var appliedUpdates = false; for (var _i = 0, updates_1 = updates; _i < updates_1.length; _i++) { var update = updates_1[_i]; var entity = state.entities[update.id]; if (!entity) { continue; } appliedUpdates = true; Object.assign(entity, update.changes); var newId = selectId(entity); if (update.id !== newId) { delete state.entities[update.id]; state.entities[newId] = entity; } } if (appliedUpdates) { resortEntities(state); } } function upsertOneMutably(entity, state) { return upsertManyMutably([entity], state); } function upsertManyMutably(newEntities, state) { var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1]; updateManyMutably(updated, state); addManyMutably(added, state); } function areArraysEqual(a, b) { if (a.length !== b.length) { return false; } for (var i = 0; i < a.length && i < b.length; i++) { if (a[i] === b[i]) { continue; } return false; } return true; } function merge(models, state) { models.forEach(function (model) { state.entities[selectId(model)] = model; }); resortEntities(state); } function resortEntities(state) { var allEntities = Object.values(state.entities); allEntities.sort(sort); var newSortedIds = allEntities.map(selectId); var ids = state.ids; if (!areArraysEqual(ids, newSortedIds)) { state.ids = newSortedIds; } } return { removeOne: removeOne, removeMany: removeMany, removeAll: removeAll, addOne: createStateOperator(addOneMutably), updateOne: createStateOperator(updateOneMutably), upsertOne: createStateOperator(upsertOneMutably), setOne: createStateOperator(setOneMutably), setMany: createStateOperator(setManyMutably), setAll: createStateOperator(setAllMutably), addMany: createStateOperator(addManyMutably), updateMany: createStateOperator(updateManyMutably), upsertMany: createStateOperator(upsertManyMutably) }; } // src/entities/create_adapter.ts function createEntityAdapter(options) { if (options === void 0) { options = {}; } var _c = __spreadValues({ sortComparer: false, selectId: function (instance) { return instance.id; } }, options), selectId = _c.selectId, sortComparer = _c.sortComparer; var stateFactory = createInitialStateFactory(); var selectorsFactory = createSelectorsFactory(); var stateAdapter = sortComparer ? createSortedStateAdapter(selectId, sortComparer) : createUnsortedStateAdapter(selectId); return __spreadValues(__spreadValues(__spreadValues({ selectId: selectId, sortComparer: sortComparer }, stateFactory), selectorsFactory), stateAdapter); } // src/nanoid.ts var urlAlphabet = "ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"; var nanoid = function (size) { if (size === void 0) { size = 21; } var id = ""; var i = size; while (i--) { id += urlAlphabet[Math.random() * 64 | 0]; } return id; }; // src/createAsyncThunk.ts var commonProperties = [ "name", "message", "stack", "code" ]; var RejectWithValue = /** @class */ (function () { function RejectWithValue(payload, meta) { this.payload = payload; this.meta = meta; } return RejectWithValue; }()); var FulfillWithMeta = /** @class */ (function () { function FulfillWithMeta(payload, meta) { this.payload = payload; this.meta = meta; } return FulfillWithMeta; }()); var miniSerializeError = function (value) { if (typeof value === "object" && value !== null) { var simpleError = {}; for (var _i = 0, commonProperties_1 = commonProperties; _i < commonProperties_1.length; _i++) { var property = commonProperties_1[_i]; if (typeof value[property] === "string") { simpleError[property] = value[property]; } } return simpleError; } return { message: String(value) }; }; var createAsyncThunk = (function () { function createAsyncThunk2(typePrefix, payloadCreator, options) { var fulfilled = createAction(typePrefix + "/fulfilled", function (payload, requestId, arg, meta) { return ({ payload: payload, meta: __spreadProps(__spreadValues({}, meta || {}), { arg: arg, requestId: requestId, requestStatus: "fulfilled" }) }); }); var pending = createAction(typePrefix + "/pending", function (requestId, arg, meta) { return ({ payload: void 0, meta: __spreadProps(__spreadValues({}, meta || {}), { arg: arg, requestId: requestId, requestStatus: "pending" }) }); }); var rejected = createAction(typePrefix + "/rejected", function (error, requestId, arg, payload, meta) { return ({ payload: payload, error: (options && options.serializeError || miniSerializeError)(error || "Rejected"), meta: __spreadProps(__spreadValues({}, meta || {}), { arg: arg, requestId: requestId, rejectedWithValue: !!payload, requestStatus: "rejected", aborted: (error == null ? void 0 : error.name) === "AbortError", condition: (error == null ? void 0 : error.name) === "ConditionError" }) }); }); var displayedWarning = false; var AC = typeof AbortController !== "undefined" ? AbortController : /** @class */ (function () { function class_1() { this.signal = { aborted: false, addEventListener: function () { }, dispatchEvent: function () { return false; }, onabort: function () { }, removeEventListener: function () { }, reason: void 0, throwIfAborted: function () { } }; } class_1.prototype.abort = function () { if (true) { if (!displayedWarning) { displayedWarning = true; console.info("This platform does not implement AbortController. \nIf you want to use the AbortController to react to `abort` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'."); } } }; return class_1; }()); function actionCreator(arg) { return function (dispatch, getState, extra) { var requestId = (options == null ? void 0 : options.idGenerator) ? options.idGenerator(arg) : nanoid(); var abortController = new AC(); var abortReason; var started = false; function abort(reason) { abortReason = reason; abortController.abort(); } var promise2 = function () { return __async(this, null, function () { var _a, _b, finalAction, conditionResult, abortedPromise, err_1, skipDispatch; return __generator(this, function (_c) { switch (_c.label) { case 0: _c.trys.push([0, 4, , 5]); conditionResult = (_a = options == null ? void 0 : options.condition) == null ? void 0 : _a.call(options, arg, { getState: getState, extra: extra }); if (!isThenable(conditionResult)) return [3 /*break*/, 2]; return [4 /*yield*/, conditionResult]; case 1: conditionResult = _c.sent(); _c.label = 2; case 2: if (conditionResult === false || abortController.signal.aborted) { throw { name: "ConditionError", message: "Aborted due to condition callback returning false." }; } started = true; abortedPromise = new Promise(function (_, reject) { return abortController.signal.addEventListener("abort", function () { return reject({ name: "AbortError", message: abortReason || "Aborted" }); }); }); dispatch(pending(requestId, arg, (_b = options == null ? void 0 : options.getPendingMeta) == null ? void 0 : _b.call(options, { requestId: requestId, arg: arg }, { getState: getState, extra: extra }))); return [4 /*yield*/, Promise.race([ abortedPromise, Promise.resolve(payloadCreator(arg, { dispatch: dispatch, getState: getState, extra: extra, requestId: requestId, signal: abortController.signal, abort: abort, rejectWithValue: function (value, meta) { return new RejectWithValue(value, meta); }, fulfillWithValue: function (value, meta) { return new FulfillWithMeta(value, meta); } })).then(function (result) { if (result instanceof RejectWithValue) { throw result; } if (result instanceof FulfillWithMeta) { return fulfilled(result.payload, requestId, arg, result.meta); } return fulfilled(result, requestId, arg); }) ])]; case 3: finalAction = _c.sent(); return [3 /*break*/, 5]; case 4: err_1 = _c.sent(); finalAction = err_1 instanceof RejectWithValue ? rejected(null, requestId, arg, err_1.payload, err_1.meta) : rejected(err_1, requestId, arg); return [3 /*break*/, 5]; case 5: skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && finalAction.meta.condition; if (!skipDispatch) { dispatch(finalAction); } return [2 /*return*/, finalAction]; } }); }); }(); return Object.assign(promise2, { abort: abort, requestId: requestId, arg: arg, unwrap: function () { return promise2.then(unwrapResult); } }); }; } return Object.assign(actionCreator, { pending: pending, rejected: rejected, fulfilled: fulfilled, typePrefix: typePrefix }); } createAsyncThunk2.withTypes = function () { return createAsyncThunk2; }; return createAsyncThunk2; })(); function unwrapResult(action) { if (action.meta && action.meta.rejectedWithValue) { throw action.payload; } if (action.error) { throw action.error; } return action.payload; } function isThenable(value) { return value !== null && typeof value === "object" && typeof value.then === "function"; } // src/matchers.ts var matches = function (matcher, action) { if (hasMatchFunction(matcher)) { return matcher.match(action); } else { return matcher(action); } }; function isAnyOf() { var matchers = []; for (var _i = 0; _i < arguments.length; _i++) { matchers[_i] = arguments[_i]; } return function (action) { return matchers.some(function (matcher) { return matches(matcher, action); }); }; } function isAllOf() { var matchers = []; for (var _i = 0; _i < arguments.length; _i++) { matchers[_i] = arguments[_i]; } return function (action) { return matchers.every(function (matcher) { return matches(matcher, action); }); }; } function hasExpectedRequestMetadata(action, validStatus) { if (!action || !action.meta) return false; var hasValidRequestId = typeof action.meta.requestId === "string"; var hasValidRequestStatus = validStatus.indexOf(action.meta.requestStatus) > -1; return hasValidRequestId && hasValidRequestStatus; } function isAsyncThunkArray(a) { return typeof a[0] === "function" && "pending" in a[0] && "fulfilled" in a[0] && "rejected" in a[0]; } function isPending() { var asyncThunks = []; for (var _i = 0; _i < arguments.length; _i++) { asyncThunks[_i] = arguments[_i]; } if (asyncThunks.length === 0) { return function (action) { return hasExpectedRequestMetadata(action, ["pending"]); }; } if (!isAsyncThunkArray(asyncThunks)) { return isPending()(asyncThunks[0]); } return function (action) { var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.pending; }); var combinedMatcher = isAnyOf.apply(void 0, matchers); return combinedMatcher(action); }; } function isRejected() { var asyncThunks = []; for (var _i = 0; _i < arguments.length; _i++) { asyncThunks[_i] = arguments[_i]; } if (asyncThunks.length === 0) { return function (action) { return hasExpectedRequestMetadata(action, ["rejected"]); }; } if (!isAsyncThunkArray(asyncThunks)) { return isRejected()(asyncThunks[0]); } return function (action) { var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.rejected; }); var combinedMatcher = isAnyOf.apply(void 0, matchers); return combinedMatcher(action); }; } function isRejectedWithValue() { var asyncThunks = []; for (var _i = 0; _i < arguments.length; _i++) { asyncThunks[_i] = arguments[_i]; } var hasFlag = function (action) { return action && action.meta && action.meta.rejectedWithValue; }; if (asyncThunks.length === 0) { return function (action) { var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag); return combinedMatcher(action); }; } if (!isAsyncThunkArray(asyncThunks)) { return isRejectedWithValue()(asyncThunks[0]); } return function (action) { var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag); return combinedMatcher(action); }; } function isFulfilled() { var asyncThunks = []; for (var _i = 0; _i < arguments.length; _i++) { asyncThunks[_i] = arguments[_i]; } if (asyncThunks.length === 0) { return function (action) { return hasExpectedRequestMetadata(action, ["fulfilled"]); }; } if (!isAsyncThunkArray(asyncThunks)) { return isFulfilled()(asyncThunks[0]); } return function (action) { var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.fulfilled; }); var combinedMatcher = isAnyOf.apply(void 0, matchers); return combinedMatcher(action); }; } function isAsyncThunkAction() { var asyncThunks = []; for (var _i = 0; _i < arguments.length; _i++) { asyncThunks[_i] = arguments[_i]; } if (asyncThunks.length === 0) { return function (action) { return hasExpectedRequestMetadata(action, ["pending", "fulfilled", "rejected"]); }; } if (!isAsyncThunkArray(asyncThunks)) { return isAsyncThunkAction()(asyncThunks[0]); } return function (action) { var matchers = []; for (var _i = 0, asyncThunks_1 = asyncThunks; _i < asyncThunks_1.length; _i++) { var asyncThunk = asyncThunks_1[_i]; matchers.push(asyncThunk.pending, asyncThunk.rejected, asyncThunk.fulfilled); } var combinedMatcher = isAnyOf.apply(void 0, matchers); return combinedMatcher(action); }; } // src/listenerMiddleware/utils.ts var assertFunction = function (func, expected) { if (typeof func !== "function") { throw new TypeError(expected + " is not a function"); } }; var noop = function () { }; var catchRejection = function (promise2, onError) { if (onError === void 0) { onError = noop; } promise2.catch(onError); return promise2; }; var addAbortSignalListener = function (abortSignal, callback) { abortSignal.addEventListener("abort", callback, { once: true }); return function () { return abortSignal.removeEventListener("abort", callback); }; }; var abortControllerWithReason = function (abortController, reason) { var signal = abortController.signal; if (signal.aborted) { return; } if (!("reason" in signal)) { Object.defineProperty(signal, "reason", { enumerable: true, value: reason, configurable: true, writable: true }); } ; abortController.abort(reason); }; // src/listenerMiddleware/exceptions.ts var task = "task"; var listener = "listener"; var completed = "completed"; var cancelled = "cancelled"; var taskCancelled = "task-" + cancelled; var taskCompleted = "task-" + completed; var listenerCancelled = listener + "-" + cancelled; var listenerCompleted = listener + "-" + completed; var TaskAbortError = /** @class */ (function () { function TaskAbortError(code) { this.code = code; this.name = "TaskAbortError"; this.message = task + " " + cancelled + " (reason: " + code + ")"; } return TaskAbortError; }()); // src/listenerMiddleware/task.ts var validateActive = function (signal) { if (signal.aborted) { throw new TaskAbortError(signal.reason); } }; function raceWithSignal(signal, promise2) { var cleanup = noop; return new Promise(function (resolve, reject) { var notifyRejection = function () { return reject(new TaskAbortError(signal.reason)); }; if (signal.aborted) { notifyRejection(); return; } cleanup = addAbortSignalListener(signal, notifyRejection); promise2.finally(function () { return cleanup(); }).then(resolve, reject); }).finally(function () { cleanup = noop; }); } var runTask = function (task2, cleanUp) { return __async(void 0, null, function () { var value, error_1; return __generator(this, function (_c) { switch (_c.label) { case 0: _c.trys.push([0, 3, 4, 5]); return [4 /*yield*/, Promise.resolve()]; case 1: _c.sent(); return [4 /*yield*/, task2()]; case 2: value = _c.sent(); return [2 /*return*/, { status: "ok", value: value }]; case 3: error_1 = _c.sent(); return [2 /*return*/, { status: error_1 instanceof TaskAbortError ? "cancelled" : "rejected", error: error_1 }]; case 4: cleanUp == null ? void 0 : cleanUp(); return [7 /*endfinally*/]; case 5: return [2 /*return*/]; } }); }); }; var createPause = function (signal) { return function (promise2) { return catchRejection(raceWithSignal(signal, promise2).then(function (output) { validateActive(signal); return output; })); }; }; var createDelay = function (signal) { var pause = createPause(signal); return function (timeoutMs) { return pause(new Promise(function (resolve) { return setTimeout(resolve, timeoutMs); })); }; }; // src/listenerMiddleware/index.ts var assign = Object.assign; var INTERNAL_NIL_TOKEN = {}; var alm = "listenerMiddleware"; var createFork = function (parentAbortSignal, parentBlockingPromises) { var linkControllers = function (controller) { return addAbortSignalListener(parentAbortSignal, function () { return abortControllerWithReason(controller, parentAbortSignal.reason); }); }; return function (taskExecutor, opts) { assertFunction(taskExecutor, "taskExecutor"); var childAbortController = new AbortController(); linkControllers(childAbortController); var result = runTask(function () { return __async(void 0, null, function () { var result2; return __generator(this, function (_c) { switch (_c.label) { case 0: validateActive(parentAbortSignal); validateActive(childAbortController.signal); return [4 /*yield*/, taskExecutor({ pause: createPause(childAbortController.signal), delay: createDelay(childAbortController.signal), signal: childAbortController.signal })]; case 1: result2 = _c.sent(); validateActive(childAbortController.signal); return [2 /*return*/, result2]; } }); }); }, function () { return abortControllerWithReason(childAbortController, taskCompleted); }); if (opts == null ? void 0 : opts.autoJoin) { parentBlockingPromises.push(result); } return { result: createPause(parentAbortSignal)(result), cancel: function () { abortControllerWithReason(childAbortController, taskCancelled); } }; }; }; var createTakePattern = function (startListening, signal) { var take = function (predicate, timeout) { return __async(void 0, null, function () { var unsubscribe, tuplePromise, promises, output; return __generator(this, function (_c) { switch (_c.label) { case 0: validateActive(signal); unsubscribe = function () { }; tuplePromise = new Promise(function (resolve, reject) { var stopListening = startListening({ predicate: predicate, effect: function (action, listenerApi) { listenerApi.unsubscribe(); resolve([ action, listenerApi.getState(), listenerApi.getOriginalState() ]); } }); unsubscribe = function () { stopListening(); reject(); }; }); promises = [ tuplePromise ]; if (timeout != null) { promises.push(new Promise(function (resolve) { return setTimeout(resolve, timeout, null); })); } _c.label = 1; case 1: _c.trys.push([1, , 3, 4]); return [4 /*yield*/, raceWithSignal(signal, Promise.race(promises))]; case 2: output = _c.sent(); validateActive(signal); return [2 /*return*/, output]; case 3: unsubscribe(); return [7 /*endfinally*/]; case 4: return [2 /*return*/]; } }); }); }; return function (predicate, timeout) { return catchRejection(take(predicate, timeout)); }; }; var getListenerEntryPropsFrom = function (options) { var type = options.type, actionCreator = options.actionCreator, matcher = options.matcher, predicate = options.predicate, effect = options.effect; if (type) { predicate = createAction(type).match; } else if (actionCreator) { type = actionCreator.type; predicate = actionCreator.match; } else if (matcher) { predicate = matcher; } else if (predicate) { } else { throw new Error("Creating or removing a listener requires one of the known fields for matching an action"); } assertFunction(effect, "options.listener"); return { predicate: predicate, type: type, effect: effect }; }; var createListenerEntry = function (options) { var _c = getListenerEntryPropsFrom(options), type = _c.type, predicate = _c.predicate, effect = _c.effect; var id = nanoid(); var entry = { id: id, effect: effect, type: type, predicate: predicate, pending: new Set(), unsubscribe: function () { throw new Error("Unsubscribe not initialized"); } }; return entry; }; var cancelActiveListeners = function (entry) { entry.pending.forEach(function (controller) { abortControllerWithReason(controller, listenerCancelled); }); }; var createClearListenerMiddleware = function (listenerMap) { return function () { listenerMap.forEach(cancelActiveListeners); listenerMap.clear(); }; }; var safelyNotifyError = function (errorHandler, errorToNotify, errorInfo) { try { errorHandler(errorToNotify, errorInfo); } catch (errorHandlerError) { setTimeout(function () { throw errorHandlerError; }, 0); } }; var addListener = createAction(alm + "/add"); var clearAllListeners = createAction(alm + "/removeAll"); var removeListener = createAction(alm + "/remove"); var defaultErrorHandler = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } console.error.apply(console, __spreadArray([alm + "/error"], args)); }; function createListenerMiddleware(middlewareOptions) { var _this = this; if (middlewareOptions === void 0) { middlewareOptions = {}; } var listenerMap = new Map(); var extra = middlewareOptions.extra, _c = middlewareOptions.onError, onError = _c === void 0 ? defaultErrorHandler : _c; assertFunction(onError, "onError"); var insertEntry = function (entry) { entry.unsubscribe = function () { return listenerMap.delete(entry.id); }; listenerMap.set(entry.id, entry); return function (cancelOptions) { entry.unsubscribe(); if (cancelOptions == null ? void 0 : cancelOptions.cancelActive) { cancelActiveListeners(entry); } }; }; var findListenerEntry = function (comparator) { for (var _i = 0, _c = Array.from(listenerMap.values()); _i < _c.length; _i++) { var entry = _c[_i]; if (comparator(entry)) { return entry; } } return void 0; }; var startListening = function (options) { var entry = findListenerEntry(function (existingEntry) { return existingEntry.effect === options.effect; }); if (!entry) { entry = createListenerEntry(options); } return insertEntry(entry); }; var stopListening = function (options) { var _c = getListenerEntryPropsFrom(options), type = _c.type, effect = _c.effect, predicate = _c.predicate; var entry = findListenerEntry(function (entry2) { var matchPredicateOrType = typeof type === "string" ? entry2.type === type : entry2.predicate === predicate; return matchPredicateOrType && entry2.effect === effect; }); if (entry) { entry.unsubscribe(); if (options.cancelActive) { cancelActiveListeners(entry); } } return !!entry; }; var notifyListener = function (entry, action, api, getOriginalState) { return __async(_this, null, function () { var internalTaskController, take, autoJoinPromises, listenerError_1; return __generator(this, function (_c) { switch (_c.label) { case 0: internalTaskController = new AbortController(); take = createTakePattern(startListening, internalTaskController.signal); autoJoinPromises = []; _c.label = 1; case 1: _c.trys.push([1, 3, 4, 6]); entry.pending.add(internalTaskController); return [4 /*yield*/, Promise.resolve(entry.effect(action, assign({}, api, { getOriginalState: getOriginalState, condition: function (predicate, timeout) { return take(predicate, timeout).then(Boolean); }, take: take, delay: createDelay(internalTaskController.signal), pause: createPause(internalTaskController.signal), extra: extra, signal: internalTaskController.signal, fork: createFork(internalTaskController.signal, autoJoinPromises), unsubscribe: entry.unsubscribe, subscribe: function () { listenerMap.set(entry.id, entry); }, cancelActiveListeners: function () { entry.pending.forEach(function (controller, _, set) { if (controller !== internalTaskController) { abortControllerWithReason(controller, listenerCancelled); set.delete(controller); } }); } })))]; case 2: _c.sent(); return [3 /*break*/, 6]; case 3: listenerError_1 = _c.sent(); if (!(listenerError_1 instanceof TaskAbortError)) { safelyNotifyError(onError, listenerError_1, { raisedBy: "effect" }); } return [3 /*break*/, 6]; case 4: return [4 /*yield*/, Promise.allSettled(autoJoinPromises)]; case 5: _c.sent(); abortControllerWithReason(internalTaskController, listenerCompleted); entry.pending.delete(internalTaskController); return [7 /*endfinally*/]; case 6: return [2 /*return*/]; } }); }); }; var clearListenerMiddleware = createClearListenerMiddleware(listenerMap); var middleware = function (api) { return function (next) { return function (action) { if (!isAction(action)) { return next(action); } if (addListener.match(action)) { return startListening(action.payload); } if (clearAllListeners.match(action)) { clearListenerMiddleware(); return; } if (removeListener.match(action)) { return stopListening(action.payload); } var originalState = api.getState(); var getOriginalState = function () { if (originalState === INTERNAL_NIL_TOKEN) { throw new Error(alm + ": getOriginalState can only be called synchronously"); } return originalState; }; var result; try { result = next(action); if (listenerMap.size > 0) { var currentState = api.getState(); var listenerEntries = Array.from(listenerMap.values()); for (var _i = 0, listenerEntries_1 = listenerEntries; _i < listenerEntries_1.length; _i++) { var entry = listenerEntries_1[_i]; var runListener = false; try { runListener = entry.predicate(action, currentState, originalState); } catch (predicateError) { runListener = false; safelyNotifyError(onError, predicateError, { raisedBy: "predicate" }); } if (!runListener) { continue; } notifyListener(entry, action, api, getOriginalState); } } } finally { originalState = INTERNAL_NIL_TOKEN; } return result; }; }; }; return { middleware: middleware, startListening: startListening, stopListening: stopListening, clearListeners: clearListenerMiddleware }; } // src/autoBatchEnhancer.ts var SHOULD_AUTOBATCH = "RTK_autoBatch"; var prepareAutoBatched = function () { return function (payload) { var _c; return ({ payload: payload, meta: (_c = {}, _c[SHOULD_AUTOBATCH] = true, _c) }); }; }; var promise; var queueMicrotaskShim = typeof queueMicrotask === "function" ? queueMicrotask.bind(typeof window !== "undefined" ? window : typeof __webpack_require__.g !== "undefined" ? __webpack_require__.g : globalThis) : function (cb) { return (promise || (promise = Promise.resolve())).then(cb).catch(function (err) { return setTimeout(function () { throw err; }, 0); }); }; var createQueueWithTimer = function (timeout) { return function (notify) { setTimeout(notify, timeout); }; }; var rAF = typeof window !== "undefined" && window.requestAnimationFrame ? window.requestAnimationFrame : createQueueWithTimer(10); var autoBatchEnhancer = function (options) { if (options === void 0) { options = { type: "raf" }; } return function (next) { return function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var store = next.apply(void 0, args); var notifying = true; var shouldNotifyAtEndOfTick = false; var notificationQueued = false; var listeners = new Set(); var queueCallback = options.type === "tick" ? queueMicrotaskShim : options.type === "raf" ? rAF : options.type === "callback" ? options.queueNotification : createQueueWithTimer(options.timeout); var notifyListeners = function () { notificationQueued = false; if (shouldNotifyAtEndOfTick) { shouldNotifyAtEndOfTick = false; listeners.forEach(function (l) { return l(); }); } }; return Object.assign({}, store, { subscribe: function (listener2) { var wrappedListener = function () { return notifying && listener2(); }; var unsubscribe = store.subscribe(wrappedListener); listeners.add(listener2); return function () { unsubscribe(); listeners.delete(listener2); }; }, dispatch: function (action) { var _a; try { notifying = !((_a = action == null ? void 0 : action.meta) == null ? void 0 : _a[SHOULD_AUTOBATCH]); shouldNotifyAtEndOfTick = !notifying; if (shouldNotifyAtEndOfTick) { if (!notificationQueued) { notificationQueued = true; queueCallback(notifyListeners); } } return store.dispatch(action); } finally { notifying = true; } } }); }; }; }; // src/index.ts (0,immer__WEBPACK_IMPORTED_MODULE_2__.enableES5)(); //# sourceMappingURL=redux-toolkit.esm.js.map /***/ }), /***/ "../assets/dev/js/editor/utils/is-instanceof.js": /*!******************************************************!*\ !*** ../assets/dev/js/editor/utils/is-instanceof.js ***! \******************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /** * Some FileAPI objects such as FileList, DataTransferItem and DataTransferItemList has inconsistency with the retrieved * object (from events, etc.) and the actual JavaScript object so a regular instanceof doesn't work. This function can * check whether it's instanceof by using the objects constructor and prototype names. * * @param object * @param constructors * @return {boolean} */ var _default = function _default(object, constructors) { constructors = Array.isArray(constructors) ? constructors : [constructors]; var _iterator = _createForOfIteratorHelper(constructors), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var _constructor = _step.value; if (object.constructor.name === _constructor.prototype[Symbol.toStringTag]) { return true; } } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } return false; }; exports["default"] = _default; /***/ }), /***/ "../assets/dev/js/modules/imports/args-object.js": /*!*******************************************************!*\ !*** ../assets/dev/js/modules/imports/args-object.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js")); var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); var _instanceType = _interopRequireDefault(__webpack_require__(/*! ./instance-type */ "../assets/dev/js/modules/imports/instance-type.js")); var _isInstanceof = _interopRequireDefault(__webpack_require__(/*! ../../editor/utils/is-instanceof */ "../assets/dev/js/editor/utils/is-instanceof.js")); function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var ArgsObject = /*#__PURE__*/function (_InstanceType) { (0, _inherits2.default)(ArgsObject, _InstanceType); var _super = _createSuper(ArgsObject); /** * Function constructor(). * * Create ArgsObject. * * @param {{}} args */ function ArgsObject(args) { var _this; (0, _classCallCheck2.default)(this, ArgsObject); _this = _super.call(this); _this.args = args; return _this; } /** * Function requireArgument(). * * Validate property in args. * * @param {string} property * @param {{}} args * * @throws {Error} */ (0, _createClass2.default)(ArgsObject, [{ key: "requireArgument", value: function requireArgument(property) { var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.args; if (!Object.prototype.hasOwnProperty.call(args, property)) { throw Error("".concat(property, " is required.")); } } /** * Function requireArgumentType(). * * Validate property in args using `type === typeof(args.whatever)`. * * @param {string} property * @param {string} type * @param {{}} args * * @throws {Error} */ }, { key: "requireArgumentType", value: function requireArgumentType(property, type) { var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.args; this.requireArgument(property, args); if ((0, _typeof2.default)(args[property]) !== type) { throw Error("".concat(property, " invalid type: ").concat(type, ".")); } } /** * Function requireArgumentInstance(). * * Validate property in args using `args.whatever instanceof instance`. * * @param {string} property * @param {*} instance * @param {{}} args * * @throws {Error} */ }, { key: "requireArgumentInstance", value: function requireArgumentInstance(property, instance) { var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.args; this.requireArgument(property, args); if (!(args[property] instanceof instance) && !(0, _isInstanceof.default)(args[property], instance)) { throw Error("".concat(property, " invalid instance.")); } } /** * Function requireArgumentConstructor(). * * Validate property in args using `type === args.whatever.constructor`. * * @param {string} property * @param {*} type * @param {{}} args * * @throws {Error} */ }, { key: "requireArgumentConstructor", value: function requireArgumentConstructor(property, type) { var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.args; this.requireArgument(property, args); // Note: Converting the constructor to string in order to avoid equation issues // due to different memory addresses between iframes (window.Object !== window.top.Object). if (args[property].constructor.toString() !== type.prototype.constructor.toString()) { throw Error("".concat(property, " invalid constructor type.")); } } }], [{ key: "getInstanceType", value: function getInstanceType() { return 'ArgsObject'; } }]); return ArgsObject; }(_instanceType.default); exports["default"] = ArgsObject; /***/ }), /***/ "../assets/dev/js/modules/imports/instance-type.js": /*!*********************************************************!*\ !*** ../assets/dev/js/modules/imports/instance-type.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/get */ "../node_modules/@babel/runtime/helpers/get.js")); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); var InstanceType = /*#__PURE__*/function (_Symbol$hasInstance) { function InstanceType() { var _this = this; (0, _classCallCheck2.default)(this, InstanceType); // Since anonymous classes sometimes do not get validated by babel, do it manually. var target = this instanceof InstanceType ? this.constructor : void 0; var prototypes = []; while (target.__proto__ && target.__proto__.name) { prototypes.push(target.__proto__); target = target.__proto__; } prototypes.reverse().forEach(function (proto) { return _this instanceof proto; }); } (0, _createClass2.default)(InstanceType, null, [{ key: _Symbol$hasInstance, value: function value(target) { /** * This is function extending being called each time JS uses instanceOf, since babel use it each time it create new class * its give's opportunity to mange capabilities of instanceOf operator. * saving current class each time will give option later to handle instanceOf manually. */ var result = (0, _get2.default)((0, _getPrototypeOf2.default)(InstanceType), Symbol.hasInstance, this).call(this, target); // Act normal when validate a class, which does not have instance type. if (target && !target.constructor.getInstanceType) { return result; } if (target) { if (!target.instanceTypes) { target.instanceTypes = []; } if (!result) { if (this.getInstanceType() === target.constructor.getInstanceType()) { result = true; } } if (result) { var name = this.getInstanceType === InstanceType.getInstanceType ? 'BaseInstanceType' : this.getInstanceType(); if (-1 === target.instanceTypes.indexOf(name)) { target.instanceTypes.push(name); } } } if (!result && target) { // Check if the given 'target', is instance of known types. result = target.instanceTypes && Array.isArray(target.instanceTypes) && -1 !== target.instanceTypes.indexOf(this.getInstanceType()); } return result; } }, { key: "getInstanceType", value: function getInstanceType() { elementorModules.ForceMethodImplementation(); } }]); return InstanceType; }(Symbol.hasInstance); exports["default"] = InstanceType; /***/ }), /***/ "../assets/dev/js/modules/imports/module.js": /*!**************************************************!*\ !*** ../assets/dev/js/modules/imports/module.js ***! \**************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js")); var Module = function Module() { var $ = jQuery, instanceParams = arguments, self = this, events = {}; var settings; var ensureClosureMethods = function ensureClosureMethods() { $.each(self, function (methodName) { var oldMethod = self[methodName]; if ('function' !== typeof oldMethod) { return; } self[methodName] = function () { return oldMethod.apply(self, arguments); }; }); }; var initSettings = function initSettings() { settings = self.getDefaultSettings(); var instanceSettings = instanceParams[0]; if (instanceSettings) { $.extend(true, settings, instanceSettings); } }; var init = function init() { self.__construct.apply(self, instanceParams); ensureClosureMethods(); initSettings(); self.trigger('init'); }; this.getItems = function (items, itemKey) { if (itemKey) { var keyStack = itemKey.split('.'), currentKey = keyStack.splice(0, 1); if (!keyStack.length) { return items[currentKey]; } if (!items[currentKey]) { return; } return this.getItems(items[currentKey], keyStack.join('.')); } return items; }; this.getSettings = function (setting) { return this.getItems(settings, setting); }; this.setSettings = function (settingKey, value, settingsContainer) { if (!settingsContainer) { settingsContainer = settings; } if ('object' === (0, _typeof2.default)(settingKey)) { $.extend(settingsContainer, settingKey); return self; } var keyStack = settingKey.split('.'), currentKey = keyStack.splice(0, 1); if (!keyStack.length) { settingsContainer[currentKey] = value; return self; } if (!settingsContainer[currentKey]) { settingsContainer[currentKey] = {}; } return self.setSettings(keyStack.join('.'), value, settingsContainer[currentKey]); }; this.getErrorMessage = function (type, functionName) { var message; switch (type) { case 'forceMethodImplementation': message = "The method '".concat(functionName, "' must to be implemented in the inheritor child."); break; default: message = 'An error occurs'; } return message; }; // TODO: This function should be deleted ?. this.forceMethodImplementation = function (functionName) { throw new Error(this.getErrorMessage('forceMethodImplementation', functionName)); }; this.on = function (eventName, callback) { if ('object' === (0, _typeof2.default)(eventName)) { $.each(eventName, function (singleEventName) { self.on(singleEventName, this); }); return self; } var eventNames = eventName.split(' '); eventNames.forEach(function (singleEventName) { if (!events[singleEventName]) { events[singleEventName] = []; } events[singleEventName].push(callback); }); return self; }; this.off = function (eventName, callback) { if (!events[eventName]) { return self; } if (!callback) { delete events[eventName]; return self; } var callbackIndex = events[eventName].indexOf(callback); if (-1 !== callbackIndex) { delete events[eventName][callbackIndex]; // Reset array index (for next off on same event). events[eventName] = events[eventName].filter(function (val) { return val; }); } return self; }; this.trigger = function (eventName) { var methodName = 'on' + eventName[0].toUpperCase() + eventName.slice(1), params = Array.prototype.slice.call(arguments, 1); if (self[methodName]) { self[methodName].apply(self, params); } var callbacks = events[eventName]; if (!callbacks) { return self; } $.each(callbacks, function (index, callback) { callback.apply(self, params); }); return self; }; init(); }; Module.prototype.__construct = function () {}; Module.prototype.getDefaultSettings = function () { return {}; }; Module.prototype.getConstructorID = function () { return this.constructor.name; }; Module.extend = function (properties) { var $ = jQuery, parent = this; var child = function child() { return parent.apply(this, arguments); }; $.extend(child, parent); child.prototype = Object.create($.extend({}, parent.prototype, properties)); child.prototype.constructor = child; child.__super__ = parent.prototype; return child; }; module.exports = Module; /***/ }), /***/ "../modules/atomic-widgets/assets/js/editor/commands-internal/create-style.js": /*!************************************************************************************!*\ !*** ../modules/atomic-widgets/assets/js/editor/commands-internal/create-style.js ***! \************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /* provided dependency */ var sprintf = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["sprintf"]; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = exports.CreateStyle = void 0; var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "../node_modules/@babel/runtime/helpers/toConsumableArray.js")); var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var PROP_TYPE_CLASSES = 'classes'; /** * @typedef {import('elementor/assets/dev/js/editor/container/container')} Container */ var CreateStyle = /*#__PURE__*/function (_$e$modules$editor$Co) { (0, _inherits2.default)(CreateStyle, _$e$modules$editor$Co); var _super = _createSuper(CreateStyle); function CreateStyle() { (0, _classCallCheck2.default)(this, CreateStyle); return _super.apply(this, arguments); } (0, _createClass2.default)(CreateStyle, [{ key: "validateArgs", value: function validateArgs(args) { this.requireContainer(args); this.requireArgumentConstructor('bind', String, args); } }, { key: "randomId", value: function randomId(containerId) { return "s-".concat(containerId, "-").concat(elementorCommon.helpers.getUniqueId()); } }, { key: "apply", value: function apply(args) { var _container$settings$g; var container = args.container, styleDefID = args.styleDefID, bind = args.bind; var oldStyles = container.model.get('styles') || {}; /* Translators: 1: container label, 2: number of old styles */ var label = sprintf((0, _i18n.__)('%1$s Style %2$s', 'elementor'), container.label, Object.keys(oldStyles).length + 1); var newStyle = { id: styleDefID !== null && styleDefID !== void 0 ? styleDefID : this.randomId(container.id), label: label, type: 'class', variants: [] }; var oldBindSetting = (_container$settings$g = container.settings.get(bind)) !== null && _container$settings$g !== void 0 ? _container$settings$g : { $$type: PROP_TYPE_CLASSES, value: [] }; if (oldBindSetting.$$type !== PROP_TYPE_CLASSES || !Array.isArray(oldBindSetting.value)) { throw new Error('Invalid bind setting prop type'); } var newBindSetting = (0, _defineProperty2.default)({}, bind, { $$type: PROP_TYPE_CLASSES, value: [].concat((0, _toConsumableArray2.default)(oldBindSetting.value), [newStyle.id]) }); $e.internal('document/elements/set-settings', { container: container, settings: newBindSetting }); var newStyles = _objectSpread(_objectSpread({}, oldStyles), {}, (0, _defineProperty2.default)({}, newStyle.id, newStyle)); container.model.set('styles', newStyles); return newStyle; } }]); return CreateStyle; }($e.modules.editor.CommandContainerInternalBase); exports.CreateStyle = CreateStyle; var _default = CreateStyle; exports["default"] = _default; /***/ }), /***/ "../modules/atomic-widgets/assets/js/editor/commands-internal/create-variant.js": /*!**************************************************************************************!*\ !*** ../modules/atomic-widgets/assets/js/editor/commands-internal/create-variant.js ***! \**************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = exports.CreateVariant = void 0; var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); var _getVariants = __webpack_require__(/*! ../utils/get-variants */ "../modules/atomic-widgets/assets/js/editor/utils/get-variants.js"); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /** * @typedef {import('elementor/assets/dev/js/editor/container/container')} Container */ var CreateVariant = /*#__PURE__*/function (_$e$modules$editor$Co) { (0, _inherits2.default)(CreateVariant, _$e$modules$editor$Co); var _super = _createSuper(CreateVariant); function CreateVariant() { (0, _classCallCheck2.default)(this, CreateVariant); return _super.apply(this, arguments); } (0, _createClass2.default)(CreateVariant, [{ key: "validateArgs", value: function validateArgs(args) { this.requireContainer(args); this.requireArgumentConstructor('styleDefID', String, args); this.requireArgumentConstructor('meta', Object, args); if (!('breakpoint' in args.meta && 'state' in args.meta)) { throw new Error('Invalid meta arg'); } } }, { key: "apply", value: function apply(args) { var container = args.container, styleDefID = args.styleDefID, meta = args.meta; var oldStyles = container.model.get('styles') || {}; if (!oldStyles[styleDefID]) { throw new Error('Style Def not found'); } var style = oldStyles[styleDefID]; if ((0, _getVariants.getVariantByMeta)(style.variants, meta)) { throw new Error('Style Variant already exits'); } style.variants.push({ meta: meta, props: {} }); var newStyles = _objectSpread(_objectSpread({}, oldStyles), {}, (0, _defineProperty2.default)({}, styleDefID, style)); container.model.set('styles', newStyles); } }]); return CreateVariant; }($e.modules.editor.CommandContainerInternalBase); exports.CreateVariant = CreateVariant; var _default = CreateVariant; exports["default"] = _default; /***/ }), /***/ "../modules/atomic-widgets/assets/js/editor/commands-internal/delete-style.js": /*!************************************************************************************!*\ !*** ../modules/atomic-widgets/assets/js/editor/commands-internal/delete-style.js ***! \************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = exports.DeleteStyle = void 0; var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /** * @typedef {import('elementor/assets/dev/js/editor/container/container')} Container */ var DeleteStyle = /*#__PURE__*/function (_$e$modules$editor$Co) { (0, _inherits2.default)(DeleteStyle, _$e$modules$editor$Co); var _super = _createSuper(DeleteStyle); function DeleteStyle() { (0, _classCallCheck2.default)(this, DeleteStyle); return _super.apply(this, arguments); } (0, _createClass2.default)(DeleteStyle, [{ key: "validateArgs", value: function validateArgs(args) { this.requireContainer(args); this.requireArgumentConstructor('styleDefID', String, args); this.requireArgumentConstructor('bind', String, args); } }, { key: "apply", value: function apply(args) { var container = args.container, styleDefID = args.styleDefID, bind = args.bind; var oldBindSetting = container.settings.get(bind); if (!oldBindSetting) { throw new Error('Setting not found'); } var newBindSetting = (0, _defineProperty2.default)({}, bind, { $$type: 'classes', value: oldBindSetting.value.filter(function (id) { return id !== styleDefID; }) }); $e.internal('document/elements/set-settings', { container: container, settings: newBindSetting }); var styles = container.model.get('styles') || {}; delete styles[styleDefID]; container.model.set('styles', styles); } }]); return DeleteStyle; }($e.modules.editor.CommandContainerInternalBase); exports.DeleteStyle = DeleteStyle; var _default = DeleteStyle; exports["default"] = _default; /***/ }), /***/ "../modules/atomic-widgets/assets/js/editor/commands-internal/delete-variant.js": /*!**************************************************************************************!*\ !*** ../modules/atomic-widgets/assets/js/editor/commands-internal/delete-variant.js ***! \**************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = exports.DeleteVariant = void 0; var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); var _getVariants = __webpack_require__(/*! ../utils/get-variants */ "../modules/atomic-widgets/assets/js/editor/utils/get-variants.js"); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /** * @typedef {import('elementor/assets/dev/js/editor/container/container')} Container */ var DeleteVariant = /*#__PURE__*/function (_$e$modules$editor$Co) { (0, _inherits2.default)(DeleteVariant, _$e$modules$editor$Co); var _super = _createSuper(DeleteVariant); function DeleteVariant() { (0, _classCallCheck2.default)(this, DeleteVariant); return _super.apply(this, arguments); } (0, _createClass2.default)(DeleteVariant, [{ key: "validateArgs", value: function validateArgs(args) { this.requireContainer(args); this.requireArgumentConstructor('styleDefID', String, args); this.requireArgumentConstructor('meta', Object, args); if (!('breakpoint' in args.meta && 'state' in args.meta)) { throw new Error('Invalid meta arg'); } } }, { key: "apply", value: function apply(args) { var container = args.container, styleDefID = args.styleDefID, meta = args.meta; var oldStyles = container.model.get('styles') || {}; var style = {}; if (!oldStyles[styleDefID]) { throw new Error('Style Def not found'); } style = oldStyles[styleDefID]; style.variants = (0, _getVariants.getVariantsWithoutMeta)(style.variants, meta); var newStyles = _objectSpread(_objectSpread({}, oldStyles), {}, (0, _defineProperty2.default)({}, style.id, style)); container.model.set('styles', newStyles); } }]); return DeleteVariant; }($e.modules.editor.CommandContainerInternalBase); exports.DeleteVariant = DeleteVariant; var _default = DeleteVariant; exports["default"] = _default; /***/ }), /***/ "../modules/atomic-widgets/assets/js/editor/commands-internal/index.js": /*!*****************************************************************************!*\ !*** ../modules/atomic-widgets/assets/js/editor/commands-internal/index.js ***! \*****************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); Object.defineProperty(exports, "CreateStyle", ({ enumerable: true, get: function get() { return _createStyle.CreateStyle; } })); Object.defineProperty(exports, "CreateVariant", ({ enumerable: true, get: function get() { return _createVariant.CreateVariant; } })); Object.defineProperty(exports, "DeleteStyle", ({ enumerable: true, get: function get() { return _deleteStyle.DeleteStyle; } })); Object.defineProperty(exports, "DeleteVariant", ({ enumerable: true, get: function get() { return _deleteVariant.DeleteVariant; } })); Object.defineProperty(exports, "UpdateProps", ({ enumerable: true, get: function get() { return _updateProps.UpdateProps; } })); var _updateProps = __webpack_require__(/*! ./update-props */ "../modules/atomic-widgets/assets/js/editor/commands-internal/update-props.js"); var _createStyle = __webpack_require__(/*! ./create-style */ "../modules/atomic-widgets/assets/js/editor/commands-internal/create-style.js"); var _deleteStyle = __webpack_require__(/*! ./delete-style */ "../modules/atomic-widgets/assets/js/editor/commands-internal/delete-style.js"); var _createVariant = __webpack_require__(/*! ./create-variant */ "../modules/atomic-widgets/assets/js/editor/commands-internal/create-variant.js"); var _deleteVariant = __webpack_require__(/*! ./delete-variant */ "../modules/atomic-widgets/assets/js/editor/commands-internal/delete-variant.js"); /***/ }), /***/ "../modules/atomic-widgets/assets/js/editor/commands-internal/update-props.js": /*!************************************************************************************!*\ !*** ../modules/atomic-widgets/assets/js/editor/commands-internal/update-props.js ***! \************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = exports.UpdateProps = void 0; var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); var _getVariants = __webpack_require__(/*! ../utils/get-variants */ "../modules/atomic-widgets/assets/js/editor/utils/get-variants.js"); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /** * @typedef {import('elementor/assets/dev/js/editor/container/container')} Container */ var UpdateProps = /*#__PURE__*/function (_$e$modules$editor$Co) { (0, _inherits2.default)(UpdateProps, _$e$modules$editor$Co); var _super = _createSuper(UpdateProps); function UpdateProps() { (0, _classCallCheck2.default)(this, UpdateProps); return _super.apply(this, arguments); } (0, _createClass2.default)(UpdateProps, [{ key: "validateArgs", value: function validateArgs(args) { this.requireContainer(args); this.requireArgumentConstructor('styleDefID', String, args); this.requireArgumentConstructor('meta', Object, args); this.requireArgumentConstructor('props', Object, args); if (!('breakpoint' in args.meta && 'state' in args.meta)) { throw new Error('Invalid meta arg'); } if (0 === Object.keys(args.props).length) { throw new Error('Props are empty'); } } }, { key: "updateExistingVariant", value: function updateExistingVariant(style, variant, props) { variant.props = _objectSpread(_objectSpread({}, variant.props), props); Object.entries(variant.props).forEach(function (_ref) { var _ref2 = (0, _slicedToArray2.default)(_ref, 2), key = _ref2[0], value = _ref2[1]; if (null === value || undefined === value) { delete variant.props[key]; } }); return _objectSpread(_objectSpread({}, style), {}, { variants: style.variants.map(function (v) { return variant.meta.breakpoint === v.breakpoint && variant.meta.state === v.state ? variant : v; }) }); } }, { key: "apply", value: function apply(args) { var container = args.container, styleDefID = args.styleDefID, meta = args.meta, props = args.props; var oldStyles = container.model.get('styles') || {}; var style = oldStyles[styleDefID]; if (!style) { throw new Error('Style Def not found'); } var variant = (0, _getVariants.getVariantByMeta)(style.variants, meta); if (!variant) { throw new Error('Style Variant not found'); } style = this.updateExistingVariant(style, variant, props); var newStyles = _objectSpread(_objectSpread({}, oldStyles), {}, (0, _defineProperty2.default)({}, style.id, style)); container.model.set('styles', newStyles); } }]); return UpdateProps; }($e.modules.editor.CommandContainerInternalBase); exports.UpdateProps = UpdateProps; var _default = UpdateProps; exports["default"] = _default; /***/ }), /***/ "../modules/atomic-widgets/assets/js/editor/commands/index.js": /*!********************************************************************!*\ !*** ../modules/atomic-widgets/assets/js/editor/commands/index.js ***! \********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); Object.defineProperty(exports, "Styles", ({ enumerable: true, get: function get() { return _styles.Styles; } })); var _styles = __webpack_require__(/*! ./styles */ "../modules/atomic-widgets/assets/js/editor/commands/styles.js"); /***/ }), /***/ "../modules/atomic-widgets/assets/js/editor/commands/styles.js": /*!*********************************************************************!*\ !*** ../modules/atomic-widgets/assets/js/editor/commands/styles.js ***! \*********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"]; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = exports.Styles = void 0; var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); var _getVariants = __webpack_require__(/*! ../utils/get-variants */ "../modules/atomic-widgets/assets/js/editor/utils/get-variants.js"); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /** * @typedef {import('elementor/assets/dev/js/editor/container/container')} Container */ var Styles = /*#__PURE__*/function (_$e$modules$editor$do) { (0, _inherits2.default)(Styles, _$e$modules$editor$do); var _super = _createSuper(Styles); function Styles() { (0, _classCallCheck2.default)(this, Styles); return _super.apply(this, arguments); } (0, _createClass2.default)(Styles, [{ key: "validateArgs", value: function validateArgs(args) { this.requireContainer(args); if (!args.bind && !args.styleDefID) { throw new Error('Missing bind or styleDefID'); } if (args.bind && 'string' !== typeof args.bind) { throw new Error('Invalid bind arg'); } if (args.styleDefID && 'string' !== typeof args.styleDefID) { throw new Error('Invalid styleDefID arg'); } } /** * Function restore(). * * Redo/Restore. * * @param {{}} historyItem * @param {boolean} isRedo */ }, { key: "addToHistory", value: /** * Function addToHistory(). * * @param {Container} container * @param {string} bind * @param {string} styleDefID * @param {{}} meta * @param {{}} props * @param {{}} oldProps */ function addToHistory(container, bind, styleDefID, meta, props, oldProps) { var newPropsEmpty = Object.keys(props).reduce(function (emptyValues, key) { emptyValues[key] = undefined; return emptyValues; }, {}); var changes = (0, _defineProperty2.default)({}, container.id, { bind: bind, styleDefID: styleDefID, meta: meta, old: { props: _objectSpread(_objectSpread({}, newPropsEmpty), oldProps) }, new: { props: props } }), historyItem = { container: container, data: { changes: changes }, type: 'change', restore: Styles.restore }; $e.internal('document/history/add-transaction', historyItem); } }, { key: "getHistory", value: function getHistory(args) { var container = args.container, subTitle = this.constructor.getSubTitle(args); return { container: container, subTitle: subTitle, type: 'change' }; } }, { key: "apply", value: function apply(args) { var _args$styleDefID, _structuredClone; var container = args.container; var bind = args.bind, meta = args.meta, props = args.props; container = container.lookup(); var styleDefID = (_args$styleDefID = args.styleDefID) !== null && _args$styleDefID !== void 0 ? _args$styleDefID : null; var currentStyle = (_structuredClone = structuredClone(container.model.get('styles'))) !== null && _structuredClone !== void 0 ? _structuredClone : {}; var style = {}; if (!styleDefID) { // Create a new style definition for the first time style = $e.internal('document/atomic-widgets/create-style', { container: container, bind: bind }); styleDefID = style.id; } else if (!currentStyle[styleDefID]) { // Create a new style definition with the given ID // used when the style is deleted and then re-applied (i.e. history undo/redo) style = $e.internal('document/atomic-widgets/create-style', { container: container, styleDefID: styleDefID, bind: bind }); } else { // Use the existing style definition style = currentStyle[styleDefID]; } var currentVariant = (0, _getVariants.getVariantByMeta)(style.variants, meta); if (!currentVariant) { $e.internal('document/atomic-widgets/create-variant', { container: container, styleDefID: styleDefID, meta: meta }); } var nonEmptyValues = Object.values(_objectSpread(_objectSpread({}, currentVariant === null || currentVariant === void 0 ? void 0 : currentVariant.props), props)).filter(function (value) { return value !== undefined; }); if (0 === nonEmptyValues.length) { // Doesn't have any props to use for this variant $e.internal('document/atomic-widgets/delete-variant', { container: container, styleDefID: styleDefID, meta: meta }); var newStyles = container.model.get('styles'); var newVariants = newStyles[styleDefID].variants; if (0 === newVariants.length) { // After deleting the variant, there are no variants left $e.internal('document/atomic-widgets/delete-style', { container: container, styleDefID: styleDefID, bind: bind }); } } else { // Has valid props in the current variant $e.internal('document/atomic-widgets/update-props', { container: container, styleDefID: styleDefID, bind: bind, meta: meta, props: props }); } if (this.isHistoryActive()) { var _getVariantByMeta; var oldStyleDef = currentStyle[styleDefID]; var oldProps = oldStyleDef !== null && oldStyleDef !== void 0 && oldStyleDef.variants ? (_getVariantByMeta = (0, _getVariants.getVariantByMeta)(oldStyleDef.variants, meta)) === null || _getVariantByMeta === void 0 ? void 0 : _getVariantByMeta.props : {}; this.addToHistory(container, bind, styleDefID, meta, props, oldProps); } } }], [{ key: "getSubTitle", value: function getSubTitle() { return __('Style', 'elementor'); } }, { key: "restore", value: function restore(historyItem, isRedo) { var container = historyItem.get('container'); var changes = historyItem.get('data').changes[container.id]; var bind = changes.bind, styleDefID = changes.styleDefID, meta = changes.meta; var _ref = isRedo ? changes.new : changes.old, props = _ref.props; $e.run('document/atomic-widgets/styles', { container: container, bind: bind, styleDefID: styleDefID, meta: meta, props: props }); } }]); return Styles; }($e.modules.editor.document.CommandHistoryDebounceBase); exports.Styles = Styles; var _default = Styles; exports["default"] = _default; /***/ }), /***/ "../modules/atomic-widgets/assets/js/editor/component.js": /*!***************************************************************!*\ !*** ../modules/atomic-widgets/assets/js/editor/component.js ***! \***************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); var _componentBase = _interopRequireDefault(__webpack_require__(/*! elementor-api/modules/component-base */ "../modules/web-cli/assets/js/modules/component-base.js")); var commands = _interopRequireWildcard(__webpack_require__(/*! ./commands/ */ "../modules/atomic-widgets/assets/js/editor/commands/index.js")); var commandsInternal = _interopRequireWildcard(__webpack_require__(/*! ./commands-internal/ */ "../modules/atomic-widgets/assets/js/editor/commands-internal/index.js")); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var Component = /*#__PURE__*/function (_ComponentBase) { (0, _inherits2.default)(Component, _ComponentBase); var _super = _createSuper(Component); function Component() { (0, _classCallCheck2.default)(this, Component); return _super.apply(this, arguments); } (0, _createClass2.default)(Component, [{ key: "getNamespace", value: function getNamespace() { return 'document/atomic-widgets'; } }, { key: "defaultCommands", value: function defaultCommands() { return this.importCommands(commands); } }, { key: "defaultCommandsInternal", value: function defaultCommandsInternal() { return this.importCommands(commandsInternal); } }]); return Component; }(_componentBase.default); exports["default"] = Component; /***/ }), /***/ "../modules/atomic-widgets/assets/js/editor/utils/get-variants.js": /*!************************************************************************!*\ !*** ../modules/atomic-widgets/assets/js/editor/utils/get-variants.js ***! \************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.getVariantByMeta = getVariantByMeta; exports.getVariantsWithoutMeta = getVariantsWithoutMeta; function getVariantByMeta(variants, meta) { return variants.find(function (variant) { return variant.meta.breakpoint === meta.breakpoint && variant.meta.state === meta.state; }); } function getVariantsWithoutMeta(variants, meta) { return variants.filter(function (variant) { return variant.meta.breakpoint !== meta.breakpoint || variant.meta.state !== meta.state; }); } /***/ }), /***/ "../modules/web-cli/assets/js/modules/command-base.js": /*!************************************************************!*\ !*** ../modules/web-cli/assets/js/modules/command-base.js ***! \************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); var _commandInfra = _interopRequireDefault(__webpack_require__(/*! ./command-infra */ "../modules/web-cli/assets/js/modules/command-infra.js")); var _deprecation = _interopRequireDefault(__webpack_require__(/*! elementor-api/utils/deprecation */ "../modules/web-cli/assets/js/utils/deprecation.js")); function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /** * @name $e.modules.CommandBase */ var CommandBase = /*#__PURE__*/function (_CommandInfra) { (0, _inherits2.default)(CommandBase, _CommandInfra); var _super = _createSuper(CommandBase); function CommandBase() { (0, _classCallCheck2.default)(this, CommandBase); return _super.apply(this, arguments); } (0, _createClass2.default)(CommandBase, [{ key: "onBeforeRun", value: function onBeforeRun() { var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; $e.hooks.runUIBefore(this.command, args); } }, { key: "onAfterRun", value: function onAfterRun() { var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var result = arguments.length > 1 ? arguments[1] : undefined; $e.hooks.runUIAfter(this.command, args, result); } }, { key: "onBeforeApply", value: function onBeforeApply() { var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; $e.hooks.runDataDependency(this.command, args); } }, { key: "onAfterApply", value: function onAfterApply() { var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var result = arguments.length > 1 ? arguments[1] : undefined; $e.hooks.runDataAfter(this.command, args, result); } }, { key: "onCatchApply", value: function onCatchApply(e) { this.runCatchHooks(e); } /** * Run all the catch hooks. * * @param {Error} e */ }, { key: "runCatchHooks", value: function runCatchHooks(e) { $e.hooks.runDataCatch(this.command, this.args, e); $e.hooks.runUICatch(this.command, this.args, e); } /** * TODO - Remove - Backwards compatibility. * * Function requireContainer(). * * Validate `arg.container` & `arg.containers`. * * @param {{}} args * @deprecated since 3.7.0, extend `$e.modules.editor.CommandContainerBase` or `$e.modules.editor.CommandContainerInternalBase` instead. * * @throws {Error} */ }, { key: "requireContainer", value: function requireContainer() { var _this = this; var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.args; _deprecation.default.deprecated('requireContainer()', '3.7.0', 'Extend `$e.modules.editor.CommandContainerBase` or `$e.modules.editor.CommandContainerInternalBase`'); if (!args.container && !args.containers) { throw Error('container or containers are required.'); } if (args.container && args.containers) { throw Error('container and containers cannot go together please select one of them.'); } var containers = args.containers || [args.container]; containers.forEach(function (container) { _this.requireArgumentInstance('container', elementorModules.editor.Container, { container: container }); }); } }], [{ key: "getInstanceType", value: function getInstanceType() { return 'CommandBase'; } }]); return CommandBase; }(_commandInfra.default); exports["default"] = CommandBase; /***/ }), /***/ "../modules/web-cli/assets/js/modules/command-callback-base.js": /*!*********************************************************************!*\ !*** ../modules/web-cli/assets/js/modules/command-callback-base.js ***! \*********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); var _commandBase = _interopRequireDefault(__webpack_require__(/*! ./command-base */ "../modules/web-cli/assets/js/modules/command-base.js")); function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /** * To support pure callbacks in the API(commands.js), to ensure they have registered with the proper context. */ var CommandCallbackBase = /*#__PURE__*/function (_CommandBase) { (0, _inherits2.default)(CommandCallbackBase, _CommandBase); var _super = _createSuper(CommandCallbackBase); function CommandCallbackBase() { (0, _classCallCheck2.default)(this, CommandCallbackBase); return _super.apply(this, arguments); } (0, _createClass2.default)(CommandCallbackBase, [{ key: "apply", value: function apply() { var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return this.constructor.getCallback()(args); } }], [{ key: "getInstanceType", value: function getInstanceType() { return 'CommandCallbackBase'; } /** * Get original callback of the command. * * Support pure callbacks ( Non command-base ). * * @return {()=>{}} Command Results. */ }, { key: "getCallback", value: function getCallback() { return this.registerConfig.callback; } }]); return CommandCallbackBase; }(_commandBase.default); exports["default"] = CommandCallbackBase; /***/ }), /***/ "../modules/web-cli/assets/js/modules/command-infra.js": /*!*************************************************************!*\ !*** ../modules/web-cli/assets/js/modules/command-infra.js ***! \*************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); var _argsObject = _interopRequireDefault(__webpack_require__(/*! elementor-assets-js/modules/imports/args-object */ "../assets/dev/js/modules/imports/args-object.js")); var _deprecation = _interopRequireDefault(__webpack_require__(/*! elementor-api/utils/deprecation */ "../modules/web-cli/assets/js/utils/deprecation.js")); function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /** * @typedef {import('../modules/component-base')} ComponentBase */ var CommandInfra = /*#__PURE__*/function (_ArgsObject) { (0, _inherits2.default)(CommandInfra, _ArgsObject); var _super = _createSuper(CommandInfra); /** * Function constructor(). * * Create Commands Base. * * @param {{}} args */ function CommandInfra() { var _this; var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; (0, _classCallCheck2.default)(this, CommandInfra); _this = _super.call(this, args); if (!_this.constructor.registerConfig) { throw RangeError('Doing it wrong: Each command type should have `registerConfig`.'); } // Acknowledge self about which command it run. _this.command = _this.constructor.getCommand(); // Assign instance of current component. _this.component = _this.constructor.getComponent(); // Who ever need do something before without `super` the constructor can use `initialize` method. _this.initialize(args); // Refresh args, maybe the changed via `initialize`. args = _this.args; // Validate args before run. _this.validateArgs(args); return _this; } /** * Function initialize(). * * Initialize command, called after construction. * * @param {{}} args */ (0, _createClass2.default)(CommandInfra, [{ key: "currentCommand", get: /** * @deprecated since 3.7.0, use `this.command` instead. */ function get() { _deprecation.default.deprecated('this.currentCommand', '3.7.0', 'this.command'); return this.command; } }, { key: "initialize", value: function initialize() { var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; } // eslint-disable-line no-unused-vars /** * Function validateArgs(). * * Validate command arguments. * * @param {{}} args */ }, { key: "validateArgs", value: function validateArgs() { var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; } // eslint-disable-line no-unused-vars // eslint-disable-next-line jsdoc/require-returns-check /** * Function apply(). * * Do the actual command. * * @param {{}} args * * @return {*} Command results. */ }, { key: "apply", value: function apply() { var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; // eslint-disable-line no-unused-vars elementorModules.ForceMethodImplementation(); } /** * Function run(). * * Run command with history & hooks. * * @return {*} Command results. */ }, { key: "run", value: function run() { return this.apply(this.args); } /** * Function onBeforeRun. * * Called before run(). * * @param {{}} args */ }, { key: "onBeforeRun", value: function onBeforeRun() { var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; } // eslint-disable-line no-unused-vars /** * Function onAfterRun. * * Called after run(). * * @param {{}} args * @param {*} result */ }, { key: "onAfterRun", value: function onAfterRun() { var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var result = arguments.length > 1 ? arguments[1] : undefined; } // eslint-disable-line no-unused-vars /** * Function onBeforeApply. * * Called before apply(). * * @param {{}} args */ }, { key: "onBeforeApply", value: function onBeforeApply() { var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; } // eslint-disable-line no-unused-vars /** * Function onAfterApply. * * Called after apply(). * * @param {{}} args * @param {*} result */ }, { key: "onAfterApply", value: function onAfterApply() { var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var result = arguments.length > 1 ? arguments[1] : undefined; } // eslint-disable-line no-unused-vars /** * Function onCatchApply. * * Called after apply() failed. * * @param {Error} e */ }, { key: "onCatchApply", value: function onCatchApply(e) {} // eslint-disable-line no-unused-vars }], [{ key: "getInstanceType", value: function getInstanceType() { return 'CommandInfra'; } /** * Get info of command. * * @return {Object} Extra information about the command. */ }, { key: "getInfo", value: function getInfo() { return {}; } /** * @return {string} Self command name. */ }, { key: "getCommand", value: function getCommand() { return this.registerConfig.command; } /** * @return {ComponentBase} Self component */ }, { key: "getComponent", value: function getComponent() { return this.registerConfig.component; } }, { key: "setRegisterConfig", value: function setRegisterConfig(config) { this.registerConfig = Object.freeze(config); } }]); return CommandInfra; }(_argsObject.default); exports["default"] = CommandInfra; /** * @type {Object} */ (0, _defineProperty2.default)(CommandInfra, "registerConfig", null); /***/ }), /***/ "../modules/web-cli/assets/js/modules/component-base.js": /*!**************************************************************!*\ !*** ../modules/web-cli/assets/js/modules/component-base.js ***! \**************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js")); var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); var _commandCallbackBase = _interopRequireDefault(__webpack_require__(/*! elementor-api/modules/command-callback-base */ "../modules/web-cli/assets/js/modules/command-callback-base.js")); var _toolkit = __webpack_require__(/*! @reduxjs/toolkit */ "../node_modules/@reduxjs/toolkit/dist/redux-toolkit.esm.js"); var _module = _interopRequireDefault(__webpack_require__(/*! elementor/assets/dev/js/modules/imports/module.js */ "../assets/dev/js/modules/imports/module.js")); var _forceMethodImplementation = _interopRequireDefault(__webpack_require__(/*! ../utils/force-method-implementation */ "../modules/web-cli/assets/js/utils/force-method-implementation.js")); var _deprecation = _interopRequireDefault(__webpack_require__(/*! elementor-api/utils/deprecation */ "../modules/web-cli/assets/js/utils/deprecation.js")); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /** * @typedef {import('./command-infra')} CommandInfra * @typedef {import('./hook-base')} HookBase * @typedef {import('../core/states/ui-state-base')} UiStateBase */ var ComponentBase = /*#__PURE__*/function (_Module) { (0, _inherits2.default)(ComponentBase, _Module); var _super = _createSuper(ComponentBase); function ComponentBase() { (0, _classCallCheck2.default)(this, ComponentBase); return _super.apply(this, arguments); } (0, _createClass2.default)(ComponentBase, [{ key: "__construct", value: function __construct() { var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; if (args.manager) { this.manager = args.manager; } this.commands = this.defaultCommands(); this.commandsInternal = this.defaultCommandsInternal(); this.hooks = this.defaultHooks(); this.routes = this.defaultRoutes(); this.tabs = this.defaultTabs(); this.shortcuts = this.defaultShortcuts(); this.utils = this.defaultUtils(); this.data = this.defaultData(); this.uiStates = this.defaultUiStates(); this.states = this.defaultStates(); this.defaultRoute = ''; this.currentTab = ''; } }, { key: "registerAPI", value: function registerAPI() { var _this = this; Object.entries(this.getTabs()).forEach(function (tab) { return _this.registerTabRoute(tab[0]); }); Object.entries(this.getRoutes()).forEach(function (_ref) { var _ref2 = (0, _slicedToArray2.default)(_ref, 2), route = _ref2[0], callback = _ref2[1]; return _this.registerRoute(route, callback); }); Object.entries(this.getCommands()).forEach(function (_ref3) { var _ref4 = (0, _slicedToArray2.default)(_ref3, 2), command = _ref4[0], callback = _ref4[1]; return _this.registerCommand(command, callback); }); Object.entries(this.getCommandsInternal()).forEach(function (_ref5) { var _ref6 = (0, _slicedToArray2.default)(_ref5, 2), command = _ref6[0], callback = _ref6[1]; return _this.registerCommandInternal(command, callback); }); Object.values(this.getHooks()).forEach(function (instance) { return _this.registerHook(instance); }); Object.entries(this.getData()).forEach(function (_ref7) { var _ref8 = (0, _slicedToArray2.default)(_ref7, 2), command = _ref8[0], callback = _ref8[1]; return _this.registerData(command, callback); }); Object.values(this.getUiStates()).forEach(function (instance) { return _this.registerUiState(instance); }); Object.entries(this.getStates()).forEach(function (_ref9) { var _ref10 = (0, _slicedToArray2.default)(_ref9, 2), id = _ref10[0], state = _ref10[1]; return _this.registerState(id, state); }); } // eslint-disable-next-line jsdoc/require-returns-check /** * @return {string} namespace */ }, { key: "getNamespace", value: function getNamespace() { (0, _forceMethodImplementation.default)(); } /** * @deprecated since 3.7.0, use `getServiceName()` instead. */ }, { key: "getRootContainer", value: function getRootContainer() { _deprecation.default.deprecated('getRootContainer()', '3.7.0', 'getServiceName()'); return this.getServiceName(); } }, { key: "getServiceName", value: function getServiceName() { return this.getNamespace().split('/')[0]; } }, { key: "store", get: function get() { return $e.store.get(this.getNamespace()); } }, { key: "defaultTabs", value: function defaultTabs() { return {}; } }, { key: "defaultRoutes", value: function defaultRoutes() { return {}; } }, { key: "defaultCommands", value: function defaultCommands() { return {}; } }, { key: "defaultCommandsInternal", value: function defaultCommandsInternal() { return {}; } }, { key: "defaultHooks", value: function defaultHooks() { return {}; } /** * Get the component's default UI states. * * @return {Object} default UI states */ }, { key: "defaultUiStates", value: function defaultUiStates() { return {}; } /** * Get the component's Redux slice settings. * * @return {Object} Redux slice settings */ }, { key: "defaultStates", value: function defaultStates() { return {}; } }, { key: "defaultShortcuts", value: function defaultShortcuts() { return {}; } }, { key: "defaultUtils", value: function defaultUtils() { return {}; } }, { key: "defaultData", value: function defaultData() { return {}; } }, { key: "getCommands", value: function getCommands() { return this.commands; } }, { key: "getCommandsInternal", value: function getCommandsInternal() { return this.commandsInternal; } }, { key: "getHooks", value: function getHooks() { return this.hooks; } /** * Retrieve the component's UI states. * * @return {Object} UI states */ }, { key: "getUiStates", value: function getUiStates() { return this.uiStates; } /** * Retrieve the component's Redux Slice. * * @return {Object} Redux Slice */ }, { key: "getStates", value: function getStates() { return this.states; } }, { key: "getRoutes", value: function getRoutes() { return this.routes; } }, { key: "getTabs", value: function getTabs() { return this.tabs; } }, { key: "getShortcuts", value: function getShortcuts() { return this.shortcuts; } }, { key: "getData", value: function getData() { return this.data; } /** * @param {string} command * @param {(()=>{}|CommandInfra)} context * @param {'default'|'internal'|'data'} commandsType */ }, { key: "registerCommand", value: function registerCommand(command, context) { var commandsType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'default'; var commandsManager; switch (commandsType) { case 'default': commandsManager = $e.commands; break; case 'internal': commandsManager = $e.commandsInternal; break; case 'data': commandsManager = $e.data; break; default: throw new Error("Invalid commands type: '".concat(command, "'")); } var fullCommand = this.getNamespace() + '/' + command, instanceType = context.getInstanceType ? context.getInstanceType() : false, registerConfig = { command: fullCommand, component: this }; // Support pure callback. if (!instanceType) { if ($e.devTools) { $e.devTools.log.warn("Attach command-callback-base, on command: '".concat(fullCommand, "', context is unknown type.")); } registerConfig.callback = context; // Unique class. context = /*#__PURE__*/function (_CommandCallbackBase) { (0, _inherits2.default)(context, _CommandCallbackBase); var _super2 = _createSuper(context); function context() { (0, _classCallCheck2.default)(this, context); return _super2.apply(this, arguments); } return (0, _createClass2.default)(context); }(_commandCallbackBase.default); } context.setRegisterConfig(registerConfig); commandsManager.register(this, command, context); } /** * @param {HookBase} instance */ }, { key: "registerHook", value: function registerHook(instance) { return instance.register(); } }, { key: "registerCommandInternal", value: function registerCommandInternal(command, context) { this.registerCommand(command, context, 'internal'); } /** * Register a UI state. * * @param {UiStateBase} instance - UI state instance. * * @return {void} */ }, { key: "registerUiState", value: function registerUiState(instance) { $e.uiStates.register(instance); } /** * Register a Redux Slice. * * @param {string} id - State id. * @param {Object} stateConfig - The state config. * * @return {void} */ }, { key: "registerState", value: function registerState(id, stateConfig) { id = this.getNamespace() + (id ? "/".concat(id) : ''); var slice = (0, _toolkit.createSlice)(_objectSpread(_objectSpread({}, stateConfig), {}, { name: id })); $e.store.register(id, slice); } }, { key: "registerRoute", value: function registerRoute(route, callback) { $e.routes.register(this, route, callback); } }, { key: "registerData", value: function registerData(command, context) { this.registerCommand(command, context, 'data'); } }, { key: "unregisterRoute", value: function unregisterRoute(route) { $e.routes.unregister(this, route); } }, { key: "registerTabRoute", value: function registerTabRoute(tab) { var _this2 = this; this.registerRoute(tab, function (args) { return _this2.activateTab(tab, args); }); } }, { key: "dependency", value: function dependency() { return true; } }, { key: "open", value: function open() { return true; } }, { key: "close", value: function close() { if (!this.isOpen) { return false; } this.isOpen = false; this.inactivate(); $e.routes.clearCurrent(this.getNamespace()); $e.routes.clearHistory(this.getServiceName()); return true; } }, { key: "activate", value: function activate() { $e.components.activate(this.getNamespace()); } }, { key: "inactivate", value: function inactivate() { $e.components.inactivate(this.getNamespace()); } }, { key: "isActive", value: function isActive() { return $e.components.isActive(this.getNamespace()); } }, { key: "onRoute", value: function onRoute(route) { this.toggleRouteClass(route, true); this.toggleHistoryClass(); this.activate(); this.trigger('route/open', route); } }, { key: "onCloseRoute", value: function onCloseRoute(route) { this.toggleRouteClass(route, false); this.inactivate(); this.trigger('route/close', route); } }, { key: "setDefaultRoute", value: function setDefaultRoute(route) { this.defaultRoute = this.getNamespace() + '/' + route; } }, { key: "getDefaultRoute", value: function getDefaultRoute() { return this.defaultRoute; } }, { key: "removeTab", value: function removeTab(tab) { delete this.tabs[tab]; this.unregisterRoute(tab); } }, { key: "hasTab", value: function hasTab(tab) { return !!this.tabs[tab]; } }, { key: "addTab", value: function addTab(tab, args, position) { var _this3 = this; this.tabs[tab] = args; // It can be 0. if ('undefined' !== typeof position) { var newTabs = {}; var ids = Object.keys(this.tabs); // Remove new tab ids.pop(); // Add it to position. ids.splice(position, 0, tab); ids.forEach(function (id) { newTabs[id] = _this3.tabs[id]; }); this.tabs = newTabs; } this.registerTabRoute(tab); } }, { key: "getTabsWrapperSelector", value: function getTabsWrapperSelector() { return ''; } }, { key: "getTabRoute", value: function getTabRoute(tab) { return this.getNamespace() + '/' + tab; } }, { key: "renderTab", value: function renderTab(tab) {} // eslint-disable-line }, { key: "activateTab", value: function activateTab(tab, args) { var _this4 = this; this.renderTab(tab, args); jQuery(this.getTabsWrapperSelector() + ' .elementor-component-tab').off('click').on('click', function (event) { $e.route(_this4.getTabRoute(event.currentTarget.dataset.tab), args); }).removeClass('elementor-active').filter('[data-tab="' + tab + '"]').addClass('elementor-active'); } }, { key: "getActiveTabConfig", value: function getActiveTabConfig() { return this.tabs[this.currentTab] || {}; } }, { key: "getBodyClass", value: function getBodyClass(route) { return 'e-route-' + route.replace(/\//g, '-'); } /** * If command includes uppercase character convert it to lowercase and add `-`. * e.g: `CopyAll` is converted to `copy-all`. * * @param {string} commandName */ }, { key: "normalizeCommandName", value: function normalizeCommandName(commandName) { return commandName.replace(/[A-Z]/g, function (match, offset) { return (offset > 0 ? '-' : '') + match.toLowerCase(); }); } /** * @param {{}} commandsFromImport * @return {{}} imported commands */ }, { key: "importCommands", value: function importCommands(commandsFromImport) { var _this5 = this; var commands = {}; // Convert `Commands` to `ComponentBase` workable format. Object.entries(commandsFromImport).forEach(function (_ref11) { var _ref12 = (0, _slicedToArray2.default)(_ref11, 2), className = _ref12[0], Class = _ref12[1]; var command = _this5.normalizeCommandName(className); commands[command] = Class; }); return commands; } }, { key: "importHooks", value: function importHooks(hooksFromImport) { var hooks = {}; for (var key in hooksFromImport) { var hook = new hooksFromImport[key](); hooks[hook.getId()] = hook; } return hooks; } /** * Import & initialize the component's UI states. * Should be used inside `defaultUiState()`. * * @param {Object} statesFromImport - UI states from import. * * @return {Object} UI States */ }, { key: "importUiStates", value: function importUiStates(statesFromImport) { var _this6 = this; var uiStates = {}; Object.values(statesFromImport).forEach(function (className) { var uiState = new className(_this6); uiStates[uiState.getId()] = uiState; }); return uiStates; } /** * Set a UI state value. * TODO: Should we provide such function? Maybe the developer should implicitly pass the full state ID? * * @param {string} state - Non-prefixed state ID. * @param {*} value - New state value. * * @return {void} */ }, { key: "setUiState", value: function setUiState(state, value) { $e.uiStates.set("".concat(this.getNamespace(), "/").concat(state), value); } }, { key: "toggleRouteClass", value: function toggleRouteClass(route, state) { document.body.classList.toggle(this.getBodyClass(route), state); } }, { key: "toggleHistoryClass", value: function toggleHistoryClass() { document.body.classList.toggle('e-routes-has-history', !!$e.routes.getHistory(this.getServiceName()).length); } }]); return ComponentBase; }(_module.default); exports["default"] = ComponentBase; /***/ }), /***/ "../modules/web-cli/assets/js/utils/console.js": /*!*****************************************************!*\ !*** ../modules/web-cli/assets/js/utils/console.js ***! \*****************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var Console = /*#__PURE__*/function () { function Console() { (0, _classCallCheck2.default)(this, Console); } (0, _createClass2.default)(Console, null, [{ key: "error", value: function error(message) { // Show an error if devTools is available. if ($e.devTools) { $e.devTools.log.error(message); } // If not a 'Hook-Break' then show error. if (!(message instanceof $e.modules.HookBreak)) { // eslint-disable-next-line no-console console.error(message); } } }, { key: "warn", value: function warn() { var _console; var style = "font-size: 12px; background-image: url(\"".concat(elementorWebCliConfig.urls.assets, "images/logo-icon.png\"); background-repeat: no-repeat; background-size: contain;"); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } args.unshift('%c %c', style, ''); (_console = console).warn.apply(_console, args); // eslint-disable-line no-console } }]); return Console; }(); exports["default"] = Console; /***/ }), /***/ "../modules/web-cli/assets/js/utils/deprecation.js": /*!*********************************************************!*\ !*** ../modules/web-cli/assets/js/utils/deprecation.js ***! \*********************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js")); var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var _console = _interopRequireDefault(__webpack_require__(/*! elementor-api/utils/console */ "../modules/web-cli/assets/js/utils/console.js")); // Copied from `modules/dev-tools/assets/js/deprecation.js` /** * @typedef {Object} Version * @property {number} major1 The first number * @property {number} major2 The second number * @property {number} minor The third number * @property {string} build The fourth number */ var softDeprecated = function softDeprecated(name, version, replacement) { if (elementorWebCliConfig.isDebug) { deprecatedMessage('soft', name, version, replacement); } }; var hardDeprecated = function hardDeprecated(name, version, replacement) { deprecatedMessage('hard', name, version, replacement); }; var deprecatedMessage = function deprecatedMessage(type, name, version, replacement) { var message = "`".concat(name, "` is ").concat(type, " deprecated since ").concat(version); if (replacement) { message += " - Use `".concat(replacement, "` instead"); } _console.default.warn(message); }; var Deprecation = /*#__PURE__*/function () { function Deprecation() { (0, _classCallCheck2.default)(this, Deprecation); } (0, _createClass2.default)(Deprecation, null, [{ key: "deprecated", value: function deprecated(name, version, replacement) { if (this.isHardDeprecated(version)) { hardDeprecated(name, version, replacement); } else { softDeprecated(name, version, replacement); } } /** * @param {string} version * * @return {Version} */ }, { key: "parseVersion", value: function parseVersion(version) { var versionParts = version.split('.'); if (versionParts.length < 3 || versionParts.length > 4) { throw new RangeError('Invalid Semantic Version string provided'); } var _versionParts = (0, _slicedToArray2.default)(versionParts, 4), major1 = _versionParts[0], major2 = _versionParts[1], minor = _versionParts[2], _versionParts$ = _versionParts[3], build = _versionParts$ === void 0 ? '' : _versionParts$; return { major1: parseInt(major1), major2: parseInt(major2), minor: parseInt(minor), build: build }; } /** * Get total of major. * * Since `get_total_major` cannot determine how much really versions between 2.9.0 and 3.3.0 if there is 2.10.0 version for example, * versions with major2 more then 9 will be added to total. * * @param {Version} versionObj * * @return {number} */ }, { key: "getTotalMajor", value: function getTotalMajor(versionObj) { var total = parseInt("".concat(versionObj.major1).concat(versionObj.major2, "0")); total = Number((total / 10).toFixed(0)); if (versionObj.major2 > 9) { total = versionObj.major2 - 9; } return total; } /** * @param {string} version1 * @param {string} version2 * * @return {number} */ }, { key: "compareVersion", value: function compareVersion(version1, version2) { var _this = this; return [this.parseVersion(version1), this.parseVersion(version2)].map(function (versionObj) { return _this.getTotalMajor(versionObj); }).reduce(function (acc, major) { return acc - major; }); } /** * @param {string} version * * @return {boolean} */ }, { key: "isSoftDeprecated", value: function isSoftDeprecated(version) { var total = this.compareVersion(version, elementorWebCliConfig.version); return total <= 4; } /** * @param {string} version * @return {boolean} */ }, { key: "isHardDeprecated", value: function isHardDeprecated(version) { var total = this.compareVersion(version, elementorWebCliConfig.version); return total < 0 || total >= 8; } }]); return Deprecation; }(); exports["default"] = Deprecation; /***/ }), /***/ "../modules/web-cli/assets/js/utils/force-method-implementation.js": /*!*************************************************************************!*\ !*** ../modules/web-cli/assets/js/utils/force-method-implementation.js ***! \*************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = exports.ForceMethodImplementation = void 0; var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ "../node_modules/@babel/runtime/helpers/assertThisInitialized.js")); var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); var _wrapNativeSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/wrapNativeSuper */ "../node_modules/@babel/runtime/helpers/wrapNativeSuper.js")); function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } // TODO: Copied from `assets/dev/js/modules/imports/force-method-implementation.js`; var ForceMethodImplementation = /*#__PURE__*/function (_Error) { (0, _inherits2.default)(ForceMethodImplementation, _Error); var _super = _createSuper(ForceMethodImplementation); function ForceMethodImplementation() { var _this; var info = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; (0, _classCallCheck2.default)(this, ForceMethodImplementation); _this = _super.call(this, "".concat(info.isStatic ? 'static ' : '').concat(info.fullName, "() should be implemented, please provide '").concat(info.functionName || info.fullName, "' functionality.")); Error.captureStackTrace((0, _assertThisInitialized2.default)(_this), ForceMethodImplementation); return _this; } return (0, _createClass2.default)(ForceMethodImplementation); }( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error)); exports.ForceMethodImplementation = ForceMethodImplementation; var _default = function _default() { var stack = Error().stack, caller = stack.split('\n')[2].trim(), callerName = caller.startsWith('at new') ? 'constructor' : caller.split(' ')[1], info = {}; info.functionName = callerName; info.fullName = callerName; if (info.functionName.includes('.')) { var parts = info.functionName.split('.'); info.className = parts[0]; info.functionName = parts[1]; } else { info.isStatic = true; } throw new ForceMethodImplementation(info); }; exports["default"] = _default; /***/ }), /***/ "../node_modules/redux-thunk/es/index.js": /*!***********************************************!*\ !*** ../node_modules/redux-thunk/es/index.js ***! \***********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /** A function that accepts a potential "extra argument" value to be injected later, * and returns an instance of the thunk middleware that uses that value */ function createThunkMiddleware(extraArgument) { // Standard Redux middleware definition pattern: // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware var middleware = function middleware(_ref) { var dispatch = _ref.dispatch, getState = _ref.getState; return function (next) { return function (action) { // The thunk middleware looks for any functions that were passed to `store.dispatch`. // If this "action" is really a function, call it and return the result. if (typeof action === 'function') { // Inject the store's `dispatch` and `getState` methods, as well as any "extra arg" return action(dispatch, getState, extraArgument); } // Otherwise, pass the action down the middleware chain as usual return next(action); }; }; }; return middleware; } var thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version // with whatever "extra arg" they want to inject into their thunks thunk.withExtraArgument = createThunkMiddleware; /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (thunk); /***/ }), /***/ "../node_modules/redux/es/redux.js": /*!*****************************************!*\ !*** ../node_modules/redux/es/redux.js ***! \*****************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ __DO_NOT_USE__ActionTypes: () => (/* binding */ ActionTypes), /* harmony export */ applyMiddleware: () => (/* binding */ applyMiddleware), /* harmony export */ bindActionCreators: () => (/* binding */ bindActionCreators), /* harmony export */ combineReducers: () => (/* binding */ combineReducers), /* harmony export */ compose: () => (/* binding */ compose), /* harmony export */ createStore: () => (/* binding */ createStore), /* harmony export */ legacy_createStore: () => (/* binding */ legacy_createStore) /* harmony export */ }); /* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread2 */ "../node_modules/@babel/runtime/helpers/esm/objectSpread2.js"); /** * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js * * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes * during build. * @param {number} code */ function formatProdErrorMessage(code) { return "Minified Redux error #" + code + "; visit https://redux.js.org/Errors?code=" + code + " for the full message or " + 'use the non-minified dev environment for full errors. '; } // Inlined version of the `symbol-observable` polyfill var $$observable = (function () { return typeof Symbol === 'function' && Symbol.observable || '@@observable'; })(); /** * These are private action types reserved by Redux. * For any unknown actions, you must return the current state. * If the current state is undefined, you must return the initial state. * Do not reference these action types directly in your code. */ var randomString = function randomString() { return Math.random().toString(36).substring(7).split('').join('.'); }; var ActionTypes = { INIT: "@@redux/INIT" + randomString(), REPLACE: "@@redux/REPLACE" + randomString(), PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() { return "@@redux/PROBE_UNKNOWN_ACTION" + randomString(); } }; /** * @param {any} obj The object to inspect. * @returns {boolean} True if the argument appears to be a plain object. */ function isPlainObject(obj) { if (typeof obj !== 'object' || obj === null) return false; var proto = obj; while (Object.getPrototypeOf(proto) !== null) { proto = Object.getPrototypeOf(proto); } return Object.getPrototypeOf(obj) === proto; } // Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of function miniKindOf(val) { if (val === void 0) return 'undefined'; if (val === null) return 'null'; var type = typeof val; switch (type) { case 'boolean': case 'string': case 'number': case 'symbol': case 'function': { return type; } } if (Array.isArray(val)) return 'array'; if (isDate(val)) return 'date'; if (isError(val)) return 'error'; var constructorName = ctorName(val); switch (constructorName) { case 'Symbol': case 'Promise': case 'WeakMap': case 'WeakSet': case 'Map': case 'Set': return constructorName; } // other return type.slice(8, -1).toLowerCase().replace(/\s/g, ''); } function ctorName(val) { return typeof val.constructor === 'function' ? val.constructor.name : null; } function isError(val) { return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number'; } function isDate(val) { if (val instanceof Date) return true; return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function'; } function kindOf(val) { var typeOfVal = typeof val; if (true) { typeOfVal = miniKindOf(val); } return typeOfVal; } /** * @deprecated * * **We recommend using the `configureStore` method * of the `@reduxjs/toolkit` package**, which replaces `createStore`. * * Redux Toolkit is our recommended approach for writing Redux logic today, * including store setup, reducers, data fetching, and more. * * **For more details, please read this Redux docs page:** * **https://redux.js.org/introduction/why-rtk-is-redux-today** * * `configureStore` from Redux Toolkit is an improved version of `createStore` that * simplifies setup and helps avoid common bugs. * * You should not be using the `redux` core package by itself today, except for learning purposes. * The `createStore` method from the core `redux` package will not be removed, but we encourage * all users to migrate to using Redux Toolkit for all Redux code. * * If you want to use `createStore` without this visual deprecation warning, use * the `legacy_createStore` import instead: * * `import { legacy_createStore as createStore} from 'redux'` * */ function createStore(reducer, preloadedState, enhancer) { var _ref2; if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') { throw new Error( false ? 0 : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.'); } if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') { enhancer = preloadedState; preloadedState = undefined; } if (typeof enhancer !== 'undefined') { if (typeof enhancer !== 'function') { throw new Error( false ? 0 : "Expected the enhancer to be a function. Instead, received: '" + kindOf(enhancer) + "'"); } return enhancer(createStore)(reducer, preloadedState); } if (typeof reducer !== 'function') { throw new Error( false ? 0 : "Expected the root reducer to be a function. Instead, received: '" + kindOf(reducer) + "'"); } var currentReducer = reducer; var currentState = preloadedState; var currentListeners = []; var nextListeners = currentListeners; var isDispatching = false; /** * This makes a shallow copy of currentListeners so we can use * nextListeners as a temporary list while dispatching. * * This prevents any bugs around consumers calling * subscribe/unsubscribe in the middle of a dispatch. */ function ensureCanMutateNextListeners() { if (nextListeners === currentListeners) { nextListeners = currentListeners.slice(); } } /** * Reads the state tree managed by the store. * * @returns {any} The current state tree of your application. */ function getState() { if (isDispatching) { throw new Error( false ? 0 : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.'); } return currentState; } /** * Adds a change listener. It will be called any time an action is dispatched, * and some part of the state tree may potentially have changed. You may then * call `getState()` to read the current state tree inside the callback. * * You may call `dispatch()` from a change listener, with the following * caveats: * * 1. The subscriptions are snapshotted just before every `dispatch()` call. * If you subscribe or unsubscribe while the listeners are being invoked, this * will not have any effect on the `dispatch()` that is currently in progress. * However, the next `dispatch()` call, whether nested or not, will use a more * recent snapshot of the subscription list. * * 2. The listener should not expect to see all state changes, as the state * might have been updated multiple times during a nested `dispatch()` before * the listener is called. It is, however, guaranteed that all subscribers * registered before the `dispatch()` started will be called with the latest * state by the time it exits. * * @param {Function} listener A callback to be invoked on every dispatch. * @returns {Function} A function to remove this change listener. */ function subscribe(listener) { if (typeof listener !== 'function') { throw new Error( false ? 0 : "Expected the listener to be a function. Instead, received: '" + kindOf(listener) + "'"); } if (isDispatching) { throw new Error( false ? 0 : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.'); } var isSubscribed = true; ensureCanMutateNextListeners(); nextListeners.push(listener); return function unsubscribe() { if (!isSubscribed) { return; } if (isDispatching) { throw new Error( false ? 0 : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.'); } isSubscribed = false; ensureCanMutateNextListeners(); var index = nextListeners.indexOf(listener); nextListeners.splice(index, 1); currentListeners = null; }; } /** * Dispatches an action. It is the only way to trigger a state change. * * The `reducer` function, used to create the store, will be called with the * current state tree and the given `action`. Its return value will * be considered the **next** state of the tree, and the change listeners * will be notified. * * The base implementation only supports plain object actions. If you want to * dispatch a Promise, an Observable, a thunk, or something else, you need to * wrap your store creating function into the corresponding middleware. For * example, see the documentation for the `redux-thunk` package. Even the * middleware will eventually dispatch plain object actions using this method. * * @param {Object} action A plain object representing “what changed”. It is * a good idea to keep actions serializable so you can record and replay user * sessions, or use the time travelling `redux-devtools`. An action must have * a `type` property which may not be `undefined`. It is a good idea to use * string constants for action types. * * @returns {Object} For convenience, the same action object you dispatched. * * Note that, if you use a custom middleware, it may wrap `dispatch()` to * return something else (for example, a Promise you can await). */ function dispatch(action) { if (!isPlainObject(action)) { throw new Error( false ? 0 : "Actions must be plain objects. Instead, the actual type was: '" + kindOf(action) + "'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples."); } if (typeof action.type === 'undefined') { throw new Error( false ? 0 : 'Actions may not have an undefined "type" property. You may have misspelled an action type string constant.'); } if (isDispatching) { throw new Error( false ? 0 : 'Reducers may not dispatch actions.'); } try { isDispatching = true; currentState = currentReducer(currentState, action); } finally { isDispatching = false; } var listeners = currentListeners = nextListeners; for (var i = 0; i < listeners.length; i++) { var listener = listeners[i]; listener(); } return action; } /** * Replaces the reducer currently used by the store to calculate the state. * * You might need this if your app implements code splitting and you want to * load some of the reducers dynamically. You might also need this if you * implement a hot reloading mechanism for Redux. * * @param {Function} nextReducer The reducer for the store to use instead. * @returns {void} */ function replaceReducer(nextReducer) { if (typeof nextReducer !== 'function') { throw new Error( false ? 0 : "Expected the nextReducer to be a function. Instead, received: '" + kindOf(nextReducer)); } currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT. // Any reducers that existed in both the new and old rootReducer // will receive the previous state. This effectively populates // the new state tree with any relevant data from the old one. dispatch({ type: ActionTypes.REPLACE }); } /** * Interoperability point for observable/reactive libraries. * @returns {observable} A minimal observable of state changes. * For more information, see the observable proposal: * https://github.com/tc39/proposal-observable */ function observable() { var _ref; var outerSubscribe = subscribe; return _ref = { /** * The minimal observable subscription method. * @param {Object} observer Any object that can be used as an observer. * The observer object should have a `next` method. * @returns {subscription} An object with an `unsubscribe` method that can * be used to unsubscribe the observable from the store, and prevent further * emission of values from the observable. */ subscribe: function subscribe(observer) { if (typeof observer !== 'object' || observer === null) { throw new Error( false ? 0 : "Expected the observer to be an object. Instead, received: '" + kindOf(observer) + "'"); } function observeState() { if (observer.next) { observer.next(getState()); } } observeState(); var unsubscribe = outerSubscribe(observeState); return { unsubscribe: unsubscribe }; } }, _ref[$$observable] = function () { return this; }, _ref; } // When a store is created, an "INIT" action is dispatched so that every // reducer returns their initial state. This effectively populates // the initial state tree. dispatch({ type: ActionTypes.INIT }); return _ref2 = { dispatch: dispatch, subscribe: subscribe, getState: getState, replaceReducer: replaceReducer }, _ref2[$$observable] = observable, _ref2; } /** * Creates a Redux store that holds the state tree. * * **We recommend using `configureStore` from the * `@reduxjs/toolkit` package**, which replaces `createStore`: * **https://redux.js.org/introduction/why-rtk-is-redux-today** * * The only way to change the data in the store is to call `dispatch()` on it. * * There should only be a single store in your app. To specify how different * parts of the state tree respond to actions, you may combine several reducers * into a single reducer function by using `combineReducers`. * * @param {Function} reducer A function that returns the next state tree, given * the current state tree and the action to handle. * * @param {any} [preloadedState] The initial state. You may optionally specify it * to hydrate the state from the server in universal apps, or to restore a * previously serialized user session. * If you use `combineReducers` to produce the root reducer function, this must be * an object with the same shape as `combineReducers` keys. * * @param {Function} [enhancer] The store enhancer. You may optionally specify it * to enhance the store with third-party capabilities such as middleware, * time travel, persistence, etc. The only store enhancer that ships with Redux * is `applyMiddleware()`. * * @returns {Store} A Redux store that lets you read the state, dispatch actions * and subscribe to changes. */ var legacy_createStore = createStore; /** * Prints a warning in the console if it exists. * * @param {String} message The warning message. * @returns {void} */ function warning(message) { /* eslint-disable no-console */ if (typeof console !== 'undefined' && typeof console.error === 'function') { console.error(message); } /* eslint-enable no-console */ try { // This error was thrown as a convenience so that if you enable // "break on all exceptions" in your console, // it would pause the execution at this line. throw new Error(message); } catch (e) {} // eslint-disable-line no-empty } function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) { var reducerKeys = Object.keys(reducers); var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer'; if (reducerKeys.length === 0) { return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.'; } if (!isPlainObject(inputState)) { return "The " + argumentName + " has unexpected type of \"" + kindOf(inputState) + "\". Expected argument to be an object with the following " + ("keys: \"" + reducerKeys.join('", "') + "\""); } var unexpectedKeys = Object.keys(inputState).filter(function (key) { return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]; }); unexpectedKeys.forEach(function (key) { unexpectedKeyCache[key] = true; }); if (action && action.type === ActionTypes.REPLACE) return; if (unexpectedKeys.length > 0) { return "Unexpected " + (unexpectedKeys.length > 1 ? 'keys' : 'key') + " " + ("\"" + unexpectedKeys.join('", "') + "\" found in " + argumentName + ". ") + "Expected to find one of the known reducer keys instead: " + ("\"" + reducerKeys.join('", "') + "\". Unexpected keys will be ignored."); } } function assertReducerShape(reducers) { Object.keys(reducers).forEach(function (key) { var reducer = reducers[key]; var initialState = reducer(undefined, { type: ActionTypes.INIT }); if (typeof initialState === 'undefined') { throw new Error( false ? 0 : "The slice reducer for key \"" + key + "\" returned undefined during initialization. " + "If the state passed to the reducer is undefined, you must " + "explicitly return the initial state. The initial state may " + "not be undefined. If you don't want to set a value for this reducer, " + "you can use null instead of undefined."); } if (typeof reducer(undefined, { type: ActionTypes.PROBE_UNKNOWN_ACTION() }) === 'undefined') { throw new Error( false ? 0 : "The slice reducer for key \"" + key + "\" returned undefined when probed with a random type. " + ("Don't try to handle '" + ActionTypes.INIT + "' or other actions in \"redux/*\" ") + "namespace. They are considered private. Instead, you must return the " + "current state for any unknown actions, unless it is undefined, " + "in which case you must return the initial state, regardless of the " + "action type. The initial state may not be undefined, but can be null."); } }); } /** * Turns an object whose values are different reducer functions, into a single * reducer function. It will call every child reducer, and gather their results * into a single state object, whose keys correspond to the keys of the passed * reducer functions. * * @param {Object} reducers An object whose values correspond to different * reducer functions that need to be combined into one. One handy way to obtain * it is to use ES6 `import * as reducers` syntax. The reducers may never return * undefined for any action. Instead, they should return their initial state * if the state passed to them was undefined, and the current state for any * unrecognized action. * * @returns {Function} A reducer function that invokes every reducer inside the * passed object, and builds a state object with the same shape. */ function combineReducers(reducers) { var reducerKeys = Object.keys(reducers); var finalReducers = {}; for (var i = 0; i < reducerKeys.length; i++) { var key = reducerKeys[i]; if (true) { if (typeof reducers[key] === 'undefined') { warning("No reducer provided for key \"" + key + "\""); } } if (typeof reducers[key] === 'function') { finalReducers[key] = reducers[key]; } } var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same // keys multiple times. var unexpectedKeyCache; if (true) { unexpectedKeyCache = {}; } var shapeAssertionError; try { assertReducerShape(finalReducers); } catch (e) { shapeAssertionError = e; } return function combination(state, action) { if (state === void 0) { state = {}; } if (shapeAssertionError) { throw shapeAssertionError; } if (true) { var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache); if (warningMessage) { warning(warningMessage); } } var hasChanged = false; var nextState = {}; for (var _i = 0; _i < finalReducerKeys.length; _i++) { var _key = finalReducerKeys[_i]; var reducer = finalReducers[_key]; var previousStateForKey = state[_key]; var nextStateForKey = reducer(previousStateForKey, action); if (typeof nextStateForKey === 'undefined') { var actionType = action && action.type; throw new Error( false ? 0 : "When called with an action of type " + (actionType ? "\"" + String(actionType) + "\"" : '(unknown type)') + ", the slice reducer for key \"" + _key + "\" returned undefined. " + "To ignore an action, you must explicitly return the previous state. " + "If you want this reducer to hold no value, you can return null instead of undefined."); } nextState[_key] = nextStateForKey; hasChanged = hasChanged || nextStateForKey !== previousStateForKey; } hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length; return hasChanged ? nextState : state; }; } function bindActionCreator(actionCreator, dispatch) { return function () { return dispatch(actionCreator.apply(this, arguments)); }; } /** * Turns an object whose values are action creators, into an object with the * same keys, but with every function wrapped into a `dispatch` call so they * may be invoked directly. This is just a convenience method, as you can call * `store.dispatch(MyActionCreators.doSomething())` yourself just fine. * * For convenience, you can also pass an action creator as the first argument, * and get a dispatch wrapped function in return. * * @param {Function|Object} actionCreators An object whose values are action * creator functions. One handy way to obtain it is to use ES6 `import * as` * syntax. You may also pass a single function. * * @param {Function} dispatch The `dispatch` function available on your Redux * store. * * @returns {Function|Object} The object mimicking the original object, but with * every action creator wrapped into the `dispatch` call. If you passed a * function as `actionCreators`, the return value will also be a single * function. */ function bindActionCreators(actionCreators, dispatch) { if (typeof actionCreators === 'function') { return bindActionCreator(actionCreators, dispatch); } if (typeof actionCreators !== 'object' || actionCreators === null) { throw new Error( false ? 0 : "bindActionCreators expected an object or a function, but instead received: '" + kindOf(actionCreators) + "'. " + "Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?"); } var boundActionCreators = {}; for (var key in actionCreators) { var actionCreator = actionCreators[key]; if (typeof actionCreator === 'function') { boundActionCreators[key] = bindActionCreator(actionCreator, dispatch); } } return boundActionCreators; } /** * Composes single-argument functions from right to left. The rightmost * function can take multiple arguments as it provides the signature for * the resulting composite function. * * @param {...Function} funcs The functions to compose. * @returns {Function} A function obtained by composing the argument functions * from right to left. For example, compose(f, g, h) is identical to doing * (...args) => f(g(h(...args))). */ function compose() { for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) { funcs[_key] = arguments[_key]; } if (funcs.length === 0) { return function (arg) { return arg; }; } if (funcs.length === 1) { return funcs[0]; } return funcs.reduce(function (a, b) { return function () { return a(b.apply(void 0, arguments)); }; }); } /** * Creates a store enhancer that applies middleware to the dispatch method * of the Redux store. This is handy for a variety of tasks, such as expressing * asynchronous actions in a concise manner, or logging every action payload. * * See `redux-thunk` package as an example of the Redux middleware. * * Because middleware is potentially asynchronous, this should be the first * store enhancer in the composition chain. * * Note that each middleware will be given the `dispatch` and `getState` functions * as named arguments. * * @param {...Function} middlewares The middleware chain to be applied. * @returns {Function} A store enhancer applying the middleware. */ function applyMiddleware() { for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) { middlewares[_key] = arguments[_key]; } return function (createStore) { return function () { var store = createStore.apply(void 0, arguments); var _dispatch = function dispatch() { throw new Error( false ? 0 : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.'); }; var middlewareAPI = { getState: store.getState, dispatch: function dispatch() { return _dispatch.apply(void 0, arguments); } }; var chain = middlewares.map(function (middleware) { return middleware(middlewareAPI); }); _dispatch = compose.apply(void 0, chain)(store.dispatch); return (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__["default"])((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__["default"])({}, store), {}, { dispatch: _dispatch }); }; }; } /***/ }), /***/ "../node_modules/reselect/es/defaultMemoize.js": /*!*****************************************************!*\ !*** ../node_modules/reselect/es/defaultMemoize.js ***! \*****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createCacheKeyComparator: () => (/* binding */ createCacheKeyComparator), /* harmony export */ defaultEqualityCheck: () => (/* binding */ defaultEqualityCheck), /* harmony export */ defaultMemoize: () => (/* binding */ defaultMemoize) /* harmony export */ }); // Cache implementation based on Erik Rasmussen's `lru-memoize`: // https://github.com/erikras/lru-memoize var NOT_FOUND = 'NOT_FOUND'; function createSingletonCache(equals) { var entry; return { get: function get(key) { if (entry && equals(entry.key, key)) { return entry.value; } return NOT_FOUND; }, put: function put(key, value) { entry = { key: key, value: value }; }, getEntries: function getEntries() { return entry ? [entry] : []; }, clear: function clear() { entry = undefined; } }; } function createLruCache(maxSize, equals) { var entries = []; function get(key) { var cacheIndex = entries.findIndex(function (entry) { return equals(key, entry.key); }); // We found a cached entry if (cacheIndex > -1) { var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top if (cacheIndex > 0) { entries.splice(cacheIndex, 1); entries.unshift(entry); } return entry.value; } // No entry found in cache, return sentinel return NOT_FOUND; } function put(key, value) { if (get(key) === NOT_FOUND) { // TODO Is unshift slow? entries.unshift({ key: key, value: value }); if (entries.length > maxSize) { entries.pop(); } } } function getEntries() { return entries; } function clear() { entries = []; } return { get: get, put: put, getEntries: getEntries, clear: clear }; } var defaultEqualityCheck = function defaultEqualityCheck(a, b) { return a === b; }; function createCacheKeyComparator(equalityCheck) { return function areArgumentsShallowlyEqual(prev, next) { if (prev === null || next === null || prev.length !== next.length) { return false; } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible. var length = prev.length; for (var i = 0; i < length; i++) { if (!equalityCheck(prev[i], next[i])) { return false; } } return true; }; } // defaultMemoize now supports a configurable cache size with LRU behavior, // and optional comparison of the result value with existing values function defaultMemoize(func, equalityCheckOrOptions) { var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : { equalityCheck: equalityCheckOrOptions }; var _providedOptions$equa = providedOptions.equalityCheck, equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa, _providedOptions$maxS = providedOptions.maxSize, maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS, resultEqualityCheck = providedOptions.resultEqualityCheck; var comparator = createCacheKeyComparator(equalityCheck); var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons function memoized() { var value = cache.get(arguments); if (value === NOT_FOUND) { // @ts-ignore value = func.apply(null, arguments); if (resultEqualityCheck) { var entries = cache.getEntries(); var matchingEntry = entries.find(function (entry) { return resultEqualityCheck(entry.value, value); }); if (matchingEntry) { value = matchingEntry.value; } } cache.put(arguments, value); } return value; } memoized.clearCache = function () { return cache.clear(); }; return memoized; } /***/ }), /***/ "../node_modules/reselect/es/index.js": /*!********************************************!*\ !*** ../node_modules/reselect/es/index.js ***! \********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createSelector: () => (/* binding */ createSelector), /* harmony export */ createSelectorCreator: () => (/* binding */ createSelectorCreator), /* harmony export */ createStructuredSelector: () => (/* binding */ createStructuredSelector), /* harmony export */ defaultEqualityCheck: () => (/* reexport safe */ _defaultMemoize__WEBPACK_IMPORTED_MODULE_0__.defaultEqualityCheck), /* harmony export */ defaultMemoize: () => (/* reexport safe */ _defaultMemoize__WEBPACK_IMPORTED_MODULE_0__.defaultMemoize) /* harmony export */ }); /* harmony import */ var _defaultMemoize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultMemoize */ "../node_modules/reselect/es/defaultMemoize.js"); function getDependencies(funcs) { var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs; if (!dependencies.every(function (dep) { return typeof dep === 'function'; })) { var dependencyTypes = dependencies.map(function (dep) { return typeof dep === 'function' ? "function " + (dep.name || 'unnamed') + "()" : typeof dep; }).join(', '); throw new Error("createSelector expects all input-selectors to be functions, but received the following types: [" + dependencyTypes + "]"); } return dependencies; } function createSelectorCreator(memoize) { for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { memoizeOptionsFromArgs[_key - 1] = arguments[_key]; } var createSelector = function createSelector() { for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { funcs[_key2] = arguments[_key2]; } var _recomputations = 0; var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`. // So, start by declaring the default value here. // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.) var directlyPassedOptions = { memoizeOptions: undefined }; // Normally, the result func or "output selector" is the last arg var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object if (typeof resultFunc === 'object') { directlyPassedOptions = resultFunc; // and pop the real result func off resultFunc = funcs.pop(); } if (typeof resultFunc !== 'function') { throw new Error("createSelector expects an output function after the inputs, but received: [" + typeof resultFunc + "]"); } // Determine which set of options we're using. Prefer options passed directly, // but fall back to options given to createSelectorCreator. var _directlyPassedOption = directlyPassedOptions, _directlyPassedOption2 = _directlyPassedOption.memoizeOptions, memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer // is an array. In most libs I've looked at, it's an equality function or options object. // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full // user-provided array of options. Otherwise, it must be just the _first_ arg, and so // we wrap it in an array so we can apply it. var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions]; var dependencies = getDependencies(funcs); var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() { _recomputations++; // apply arguments instead of spreading for performance. return resultFunc.apply(null, arguments); }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again. var selector = memoize(function dependenciesChecker() { var params = []; var length = dependencies.length; for (var i = 0; i < length; i++) { // apply arguments instead of spreading and mutate a local list of params for performance. // @ts-ignore params.push(dependencies[i].apply(null, arguments)); } // apply arguments instead of spreading for performance. _lastResult = memoizedResultFunc.apply(null, params); return _lastResult; }); Object.assign(selector, { resultFunc: resultFunc, memoizedResultFunc: memoizedResultFunc, dependencies: dependencies, lastResult: function lastResult() { return _lastResult; }, recomputations: function recomputations() { return _recomputations; }, resetRecomputations: function resetRecomputations() { return _recomputations = 0; } }); return selector; }; // @ts-ignore return createSelector; } var createSelector = /* #__PURE__ */createSelectorCreator(_defaultMemoize__WEBPACK_IMPORTED_MODULE_0__.defaultMemoize); // Manual definition of state and output arguments var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) { if (selectorCreator === void 0) { selectorCreator = createSelector; } if (typeof selectors !== 'object') { throw new Error('createStructuredSelector expects first argument to be an object ' + ("where each property is a selector, instead received a " + typeof selectors)); } var objectKeys = Object.keys(selectors); var resultSelector = selectorCreator( // @ts-ignore objectKeys.map(function (key) { return selectors[key]; }), function () { for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { values[_key3] = arguments[_key3]; } return values.reduce(function (composition, value, index) { composition[objectKeys[index]] = value; return composition; }, {}); }); return resultSelector; }; /***/ }), /***/ "@wordpress/i18n": /*!**************************!*\ !*** external "wp.i18n" ***! \**************************/ /***/ ((module) => { "use strict"; module.exports = wp.i18n; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js": /*!******************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***! \******************************************************************/ /***/ ((module) => { function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js": /*!****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/arrayWithHoles.js ***! \****************************************************************/ /***/ ((module) => { function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js": /*!*******************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***! \*******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js"); function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return arrayLikeToArray(arr); } module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/assertThisInitialized.js": /*!***********************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/assertThisInitialized.js ***! \***********************************************************************/ /***/ ((module) => { function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/classCallCheck.js": /*!****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/classCallCheck.js ***! \****************************************************************/ /***/ ((module) => { function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/construct.js": /*!***********************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/construct.js ***! \***********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "../node_modules/@babel/runtime/helpers/setPrototypeOf.js"); var isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ "../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js"); function _construct(t, e, r) { if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && setPrototypeOf(p, r.prototype), p; } module.exports = _construct, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/createClass.js": /*!*************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/createClass.js ***! \*************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "../node_modules/@babel/runtime/helpers/toPropertyKey.js"); function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/defineProperty.js": /*!****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/defineProperty.js ***! \****************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ "../node_modules/@babel/runtime/helpers/toPropertyKey.js"); function _defineProperty(obj, key, value) { key = toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/get.js": /*!*****************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/get.js ***! \*****************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var superPropBase = __webpack_require__(/*! ./superPropBase.js */ "../node_modules/@babel/runtime/helpers/superPropBase.js"); function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { module.exports = _get = Reflect.get.bind(), module.exports.__esModule = true, module.exports["default"] = module.exports; } else { module.exports = _get = function _get(target, property, receiver) { var base = superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }, module.exports.__esModule = true, module.exports["default"] = module.exports; } return _get.apply(this, arguments); } module.exports = _get, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js": /*!****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/getPrototypeOf.js ***! \****************************************************************/ /***/ ((module) => { function _getPrototypeOf(o) { module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }, module.exports.__esModule = true, module.exports["default"] = module.exports; return _getPrototypeOf(o); } module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/inherits.js": /*!**********************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/inherits.js ***! \**********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "../node_modules/@babel/runtime/helpers/setPrototypeOf.js"); function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) setPrototypeOf(subClass, superClass); } module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js": /*!***********************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/interopRequireDefault.js ***! \***********************************************************************/ /***/ ((module) => { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/isNativeFunction.js": /*!******************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/isNativeFunction.js ***! \******************************************************************/ /***/ ((module) => { function _isNativeFunction(fn) { try { return Function.toString.call(fn).indexOf("[native code]") !== -1; } catch (e) { return typeof fn === "function"; } } module.exports = _isNativeFunction, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js": /*!**************************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js ***! \**************************************************************************/ /***/ ((module) => { function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (module.exports = _isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; }, module.exports.__esModule = true, module.exports["default"] = module.exports)(); } module.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/iterableToArray.js": /*!*****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/iterableToArray.js ***! \*****************************************************************/ /***/ ((module) => { function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js": /*!**********************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***! \**********************************************************************/ /***/ ((module) => { function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/nonIterableRest.js": /*!*****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/nonIterableRest.js ***! \*****************************************************************/ /***/ ((module) => { function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/nonIterableSpread.js": /*!*******************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/nonIterableSpread.js ***! \*******************************************************************/ /***/ ((module) => { function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } module.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js": /*!***************************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***! \***************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ "../node_modules/@babel/runtime/helpers/assertThisInitialized.js"); function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return assertThisInitialized(self); } module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/setPrototypeOf.js": /*!****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/setPrototypeOf.js ***! \****************************************************************/ /***/ ((module) => { function _setPrototypeOf(o, p) { module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }, module.exports.__esModule = true, module.exports["default"] = module.exports; return _setPrototypeOf(o, p); } module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/slicedToArray.js": /*!***************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/slicedToArray.js ***! \***************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js"); var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js"); var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js"); var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ "../node_modules/@babel/runtime/helpers/nonIterableRest.js"); function _slicedToArray(arr, i) { return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest(); } module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/superPropBase.js": /*!***************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/superPropBase.js ***! \***************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js"); function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = getPrototypeOf(object); if (object === null) break; } return object; } module.exports = _superPropBase, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/toConsumableArray.js": /*!*******************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/toConsumableArray.js ***! \*******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ "../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js"); var iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ "../node_modules/@babel/runtime/helpers/iterableToArray.js"); var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js"); var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ "../node_modules/@babel/runtime/helpers/nonIterableSpread.js"); function _toConsumableArray(arr) { return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread(); } module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/toPrimitive.js": /*!*************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/toPrimitive.js ***! \*************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); function toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/toPropertyKey.js": /*!***************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/toPropertyKey.js ***! \***************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var _typeof = (__webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/typeof.js")["default"]); var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ "../node_modules/@babel/runtime/helpers/toPrimitive.js"); function toPropertyKey(t) { var i = toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/typeof.js": /*!********************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/typeof.js ***! \********************************************************/ /***/ ((module) => { function _typeof(o) { "@babel/helpers - typeof"; return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o); } module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js": /*!****************************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***! \****************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js"); function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen); } module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/wrapNativeSuper.js": /*!*****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/wrapNativeSuper.js ***! \*****************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js"); var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "../node_modules/@babel/runtime/helpers/setPrototypeOf.js"); var isNativeFunction = __webpack_require__(/*! ./isNativeFunction.js */ "../node_modules/@babel/runtime/helpers/isNativeFunction.js"); var construct = __webpack_require__(/*! ./construct.js */ "../node_modules/@babel/runtime/helpers/construct.js"); function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return construct(Class, arguments, getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return setPrototypeOf(Wrapper, Class); }, module.exports.__esModule = true, module.exports["default"] = module.exports; return _wrapNativeSuper(Class); } module.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/esm/defineProperty.js": /*!********************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/defineProperty.js ***! \********************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ _defineProperty) /* harmony export */ }); /* harmony import */ var _toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toPropertyKey.js */ "../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js"); function _defineProperty(obj, key, value) { key = (0,_toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__["default"])(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /***/ }), /***/ "../node_modules/@babel/runtime/helpers/esm/objectSpread2.js": /*!*******************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/objectSpread2.js ***! \*******************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ _objectSpread2) /* harmony export */ }); /* harmony import */ var _defineProperty_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defineProperty.js */ "../node_modules/@babel/runtime/helpers/esm/defineProperty.js"); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0,_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /***/ }), /***/ "../node_modules/@babel/runtime/helpers/esm/toPrimitive.js": /*!*****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/toPrimitive.js ***! \*****************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ toPrimitive) /* harmony export */ }); /* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/esm/typeof.js"); function toPrimitive(t, r) { if ("object" != (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__["default"])(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__["default"])(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /***/ }), /***/ "../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js": /*!*******************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js ***! \*******************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ toPropertyKey) /* harmony export */ }); /* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeof.js */ "../node_modules/@babel/runtime/helpers/esm/typeof.js"); /* harmony import */ var _toPrimitive_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./toPrimitive.js */ "../node_modules/@babel/runtime/helpers/esm/toPrimitive.js"); function toPropertyKey(t) { var i = (0,_toPrimitive_js__WEBPACK_IMPORTED_MODULE_1__["default"])(t, "string"); return "symbol" == (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__["default"])(i) ? i : String(i); } /***/ }), /***/ "../node_modules/@babel/runtime/helpers/esm/typeof.js": /*!************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/esm/typeof.js ***! \************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ _typeof) /* harmony export */ }); function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } /***/ }), /***/ "../node_modules/@reduxjs/toolkit/node_modules/immer/dist/immer.esm.mjs": /*!******************************************************************************!*\ !*** ../node_modules/@reduxjs/toolkit/node_modules/immer/dist/immer.esm.mjs ***! \******************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Immer: () => (/* binding */ un), /* harmony export */ applyPatches: () => (/* binding */ pn), /* harmony export */ castDraft: () => (/* binding */ K), /* harmony export */ castImmutable: () => (/* binding */ $), /* harmony export */ createDraft: () => (/* binding */ ln), /* harmony export */ current: () => (/* binding */ R), /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), /* harmony export */ enableAllPlugins: () => (/* binding */ J), /* harmony export */ enableES5: () => (/* binding */ F), /* harmony export */ enableMapSet: () => (/* binding */ C), /* harmony export */ enablePatches: () => (/* binding */ T), /* harmony export */ finishDraft: () => (/* binding */ dn), /* harmony export */ freeze: () => (/* binding */ d), /* harmony export */ immerable: () => (/* binding */ L), /* harmony export */ isDraft: () => (/* binding */ r), /* harmony export */ isDraftable: () => (/* binding */ t), /* harmony export */ nothing: () => (/* binding */ H), /* harmony export */ original: () => (/* binding */ e), /* harmony export */ produce: () => (/* binding */ fn), /* harmony export */ produceWithPatches: () => (/* binding */ cn), /* harmony export */ setAutoFreeze: () => (/* binding */ sn), /* harmony export */ setUseProxies: () => (/* binding */ vn) /* harmony export */ }); function n(n){for(var r=arguments.length,t=Array(r>1?r-1:0),e=1;e3?r.i-4:r.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,r){return 2===o(n)?n.has(r):Object.prototype.hasOwnProperty.call(n,r)}function a(n,r){return 2===o(n)?n.get(r):n[r]}function f(n,r,t){var e=o(n);2===e?n.set(r,t):3===e?n.add(t):n[r]=t}function c(n,r){return n===r?0!==n||1/n==1/r:n!=n&&r!=r}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var r=rn(n);delete r[Q];for(var t=nn(r),e=0;e1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,r){return d(r,!0)}),!0)),n}function h(){n(2)}function y(n){return null==n||"object"!=typeof n||Object.isFrozen(n)}function b(r){var t=tn[r];return t||n(18,r),t}function m(n,r){tn[n]||(tn[n]=r)}function _(){return false||U||n(0),U}function j(n,r){r&&(b("Patches"),n.u=[],n.s=[],n.v=r)}function g(n){O(n),n.p.forEach(S),n.p=null}function O(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var r=n[Q];0===r.i||1===r.i?r.j():r.g=!0}function P(r,e){e._=e.p.length;var i=e.p[0],o=void 0!==r&&r!==i;return e.h.O||b("ES5").S(e,r,o),o?(i[Q].P&&(g(e),n(4)),t(r)&&(r=M(e,r),e.l||x(e,r)),e.u&&b("Patches").M(i[Q].t,r,e.u,e.s)):r=M(e,i,[]),g(e),e.u&&e.v(e.u,e.s),r!==H?r:void 0}function M(n,r,t){if(y(r))return r;var e=r[Q];if(!e)return i(r,(function(i,o){return A(n,e,r,i,o,t)}),!0),r;if(e.A!==n)return r;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o,u=o,a=!1;3===e.i&&(u=new Set(o),o.clear(),a=!0),i(u,(function(r,i){return A(n,e,o,r,i,t,a)})),x(n,o,!1),t&&n.u&&b("Patches").N(e,t,n.u,n.s)}return e.o}function A(e,i,o,a,c,s,v){if( true&&c===o&&n(5),r(c)){var p=M(e,c,s&&i&&3!==i.i&&!u(i.R,a)?s.concat(a):void 0);if(f(o,a,p),!r(p))return;e.m=!1}else v&&o.add(c);if(t(c)&&!y(c)){if(!e.h.D&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,r,t){void 0===t&&(t=!1),!n.l&&n.h.D&&n.m&&d(r,t)}function z(n,r){var t=n[Q];return(t?p(t):n)[r]}function I(n,r){if(r in n)for(var t=Object.getPrototypeOf(n);t;){var e=Object.getOwnPropertyDescriptor(t,r);if(e)return e;t=Object.getPrototypeOf(t)}}function k(n){n.P||(n.P=!0,n.l&&k(n.l))}function E(n){n.o||(n.o=l(n.t))}function N(n,r,t){var e=s(r)?b("MapSet").F(r,t):v(r)?b("MapSet").T(r,t):n.O?function(n,r){var t=Array.isArray(n),e={i:t?1:0,A:r?r.A:_(),P:!1,I:!1,R:{},l:r,t:n,k:null,o:null,j:null,C:!1},i=e,o=en;t&&(i=[e],o=on);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(r,t):b("ES5").J(r,t);return(t?t.A:_()).p.push(e),e}function R(e){return r(e)||n(22,e),function n(r){if(!t(r))return r;var e,u=r[Q],c=o(r);if(u){if(!u.P&&(u.i<4||!b("ES5").K(u)))return u.t;u.I=!0,e=D(r,c),u.I=!1}else e=D(r,c);return i(e,(function(r,t){u&&a(u.t,r)===t||f(e,r,n(t))})),3===c?new Set(e):e}(e)}function D(n,r){switch(r){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function F(){function t(n,r){var t=s[n];return t?t.enumerable=r:s[n]=t={configurable:!0,enumerable:r,get:function(){var r=this[Q];return true&&f(r),en.get(r,n)},set:function(r){var t=this[Q]; true&&f(t),en.set(t,n,r)}},t}function e(n){for(var r=n.length-1;r>=0;r--){var t=n[r][Q];if(!t.P)switch(t.i){case 5:a(t)&&k(t);break;case 4:o(t)&&k(t)}}}function o(n){for(var r=n.t,t=n.k,e=nn(t),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=r[o];if(void 0===a&&!u(r,o))return!0;var f=t[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!r[Q];return e.length!==nn(r).length+(v?0:1)}function a(n){var r=n.k;if(r.length!==n.t.length)return!0;var t=Object.getOwnPropertyDescriptor(r,r.length-1);if(t&&!t.get)return!0;for(var e=0;e1?t-1:0),o=1;o1?t-1:0),o=1;o=0;e--){var i=t[e];if(0===i.path.length&&"replace"===i.op){n=i.value;break}}e>-1&&(t=t.slice(e+1));var o=b("Patches").$;return r(n)?o(n,t):this.produce(n,(function(n){return o(n,t)}))},e}(),an=new un,fn=an.produce,cn=an.produceWithPatches.bind(an),sn=an.setAutoFreeze.bind(an),vn=an.setUseProxies.bind(an),pn=an.applyPatches.bind(an),ln=an.createDraft.bind(an),dn=an.finishDraft.bind(an);/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (fn); //# sourceMappingURL=immer.esm.js.map /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/global */ /******/ (() => { /******/ __webpack_require__.g = (function() { /******/ if (typeof globalThis === 'object') return globalThis; /******/ try { /******/ return this || new Function('return this')(); /******/ } catch (e) { /******/ if (typeof window === 'object') return window; /******/ } /******/ })(); /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { /******/ // define __esModule on exports /******/ __webpack_require__.r = (exports) => { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry need to be wrapped in an IIFE because it need to be in strict mode. (() => { "use strict"; /*!************************************************************!*\ !*** ../modules/atomic-widgets/assets/js/editor/module.js ***! \************************************************************/ var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ "../node_modules/@babel/runtime/helpers/classCallCheck.js")); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ "../node_modules/@babel/runtime/helpers/createClass.js")); var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ "../node_modules/@babel/runtime/helpers/inherits.js")); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js")); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "../node_modules/@babel/runtime/helpers/getPrototypeOf.js")); var _component = _interopRequireDefault(__webpack_require__(/*! ./component */ "../modules/atomic-widgets/assets/js/editor/component.js")); function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var Module = /*#__PURE__*/function (_elementorModules$edi) { (0, _inherits2.default)(Module, _elementorModules$edi); var _super = _createSuper(Module); function Module() { (0, _classCallCheck2.default)(this, Module); return _super.apply(this, arguments); } (0, _createClass2.default)(Module, [{ key: "onInit", value: function onInit() { $e.components.register(new _component.default()); } }]); return Module; }(elementorModules.editor.utils.Module); new Module(); })(); /******/ })() ; //# sourceMappingURL=atomic-widgets-editor.js.map
FTP anonymous – Aratus Advisory

anonymous

Ниже представлена сравнительная таблица бесплатных фрироллов в популярных покер-румах. Простой способ выбрать надежный рум с бесплатными ивентами — воспользоваться нашим топом выше. При самостоятельном поиске места для игры нужно учитывать многие параметры. Из-за отсутствия рисков многие начинающие игроки стараются как можно активнее участвовать в бесплатных https://podberi-monitor.ru/ ивентах. Они не уделяют должного внимания их условиям и структуре. Но обычно такой подход оборачивается минимальным ростом банкролла, что несопоставимо с потраченным временем.

ggpokerok скачать на пк

  • Если фриролла нет на этой странице, стоит проверить ее позднее.
  • Но обычно такой подход оборачивается минимальным ростом банкролла, что несопоставимо с потраченным временем.
  • Это позволит компенсировать быстрое уменьшение стека из-за роста блайндов.
  • Также бесплатные турниры могут быть акцией спонсоров или аффилейтов.
  • Покеристов просят внести минимальный депозит (иногда за него дают больше одного билета), выполнить несколько ежедневных миссий и т.д.
  • Всегда выгоднее пытаться попасть в приватные турниры, где собирается не так много людей.
  • Бесплатные турниры регулярно проводятся в онлайн-румах.
  • В некоторых комнатах бесплатные соревнования проводятся чаще, чем на других платформах.
  • Так называют игроков, которые заходят на флоп коллом, то есть уравнивают большой блайнд.
  • Еще один способ стать участником приватных ивентов — указание партнерского промокода при регистрации учетной записи.

В течение месяца проходят MTT без взносов с повышенными призовыми фондами. Academypoker.ru исключительно информационный ресурс. Сайт не предоставляет никаких игровых платформ, не является организатором или рекламой азартных игр. Покер-рум сети GG Poker Network с высокой репутацией постоянно посещается любителями из разных стран. Telegram Chat 100$ Giveaway — тут можно поучаствовать каждую пятницу, в 20.00 по мск, и побороться за часть приза 100 долларов. После этого останется только ожидать начала события.

Некоторые из них просты в плане регистрации, другие состязания предусматривают определенные требования. Преимущество популярной площадки — в ограниченном доступе к событиям. От клиентов требуется минимальный бай-ин или билет.

  • Для этого следует перейти на его официальный сайт, кликнуть по кнопке «Регистрация» и заполнить предложенную форму.
  • Выбор видов покера в Pokerdom удивит даже опытных игроков.
  • Преимущество популярной площадки — в ограниченном доступе к событиям.
  • Кликая по их названию, в блоке справа можно просматривать условия участия в состязаниях.
  • Ивент с минимальными призовыми отнимет много времени, но не принесет покеристу существенной выплаты.
  • Они включены в ежедневную турнирную сетку, предусматривают крупные гарантии и собирают слабое поле.
  • Он поддерживает HUD, опции для проведения аналитики, отправку коротких видеосообщений соперникам, нотсы и другие функции.
  • Когда начинается поздняя стадия, то следует переходить в наступление, то есть проявлять агрессию.
  • В мессенджере можно пользоваться удобным поиском по ключевому слову (названию рума на латинице).
  • Для участия в некоторых фрироллах на Покерок может потребоваться пароль.

Далее нужно запустить клиентский софт и выполнить вход, используя логин и пароль. После авторизации откроется доступ к главному лобби. В нем необходимо выбрать вкладку «Турниры» и отсортировать их по размеру бай-инов. Кликая по их названию, в блоке справа можно просматривать условия участия в состязаниях.

Расписание Фрироллов В Ggpokerok На 04112024

В лобби представлены столы и турниры по Холдему, Техас 6+, обычной, 5 и 6-карточной Омахе, Ананасу. В период проведения онлайн-серий запускаются состязания по Стаду и Разу. Победители турниров получают достойные деньги (с учетом крошечных бай-инов). Самые сильные и талантливые, обладатели первых мест, выигрывают билеты на знаковые мероприятия. Пробиваясь через сателлиты, покеристы доходят до турнирных серий, где приз может достигать $1,500. Соревнования покер-рума редко требуют ввода специального кода.

Бесплатные турниры регулярно проводятся в онлайн-румах. Участие во фриролле — способ проверить скилл в МТТ-дисциплине без риска. Некоторые турниры доступны не всем пользователям — для регистрации нужен код. На этой странице — все актуальные пароли на фрироллы по покеру.

Они включены в ежедневную турнирную сетку, предусматривают крупные гарантии и собирают слабое поле. Он поддерживает мультитейблинг, нотсы, настройки для кастомизации стола, горячие клавиши и другие пользовательские опции. Рейтинг от Academy Poker включает лучшие покер-румы с фриролами.

В большинстве онлайн-румов пользователи получают уведомления за несколько минут до старта состязания. Прежде чем регистрироваться на турнир, нужно узнать о нем как можно больше информации. Еще один важный параметр — дата и время начала события.

Условия получения зависят от воли владельцев рума и структуры мероприятия. Покеристов просят внести минимальный депозит (иногда за него дают больше одного билета), выполнить несколько ежедневных миссий и т.д. Чем сложнее задание, тем масштабнее соревнование и больше итоговое вознаграждение. Посты-оповещения о грядущих соревнованиях появляются заранее (минимум за несколько часов до начала).

  • Поскольку покер-румы с фрироллами без депозита проводят разные типы бесплатных турниров, то для участия в некоторых из них нужны пароли.
  • В таблице указаны все постоянные события (и бесплатные, и с минимальным бай-ином) и условия.
  • Во время старта события в клиенте автоматически откроется окошко с ивентом, в котором вы зарегистрированы, и через пару минут начнется игра.
  • Нужно установить значение бай-ина «0» и отсортировать ивенты по размеру призовых.
  • Ивент с минимальными призовыми отнимет много времени, но не принесет покеристу существенной выплаты.
  • Некоторые турниры доступны не всем пользователям — для регистрации нужен код.
  • Простой способ выбрать надежный рум с бесплатными ивентами — воспользоваться нашим топом выше.
  • Если в руме регулярно проводятся фирменные МТТ, не придется каждый раз искать для них пароль.
  • Нередко пароли выдаются покеристам, подписанным на рассылки по e-mail или СМС.

Ряд ивентов рассчитан на более опытных покеристов, а не на новичков. Также есть и другие параметры, на которые стоит ориентироваться при выборе. Существуют бесплатные соревнования, которые доступны не всем пользователям онлайн-румов. Чтобы стать участником закрытого ивента, необходимо ввести пароль.

Эти меры снижают число участников и повышают уровень игры. Опытные и серьезно настроенные соперники не дают раздачам превратиться в постоянное «олл-ин шоу». Mission Complete $20K — стартует еженедельно, по воскресеньям в 17.00 по Москве. Чтобы попасть на этот турнир вам необходимо выполнить минимум 5 дейли миссий в Rush and Cash.

Такие события обычно проводятся за счет самих покер-румов для привлечения новых игроков. Также бесплатные турниры могут быть акцией спонсоров или аффилейтов. Новичкам стоит выбирать покер-румы, которые разыгрывают в бесплатных событиях крупные призовые фонды. Это позволит сразу получить большой банкролл на свой счет. Следующий параметр при выборе рума ― призовые фонды в бесплатных турнирах.

В них действуют честные и выгодные условия для игроков. Следует открыть в покерном клиенте вкладку с турнирами. Турнирные события проводятся в покерных комнатах в нескольких популярных форматах.

Гарантии в таких ивентах обычно выше, чем в открытых турнирах без бай-инов. Поэтому они хорошо подходят для начинающих покеристов, решивших построить банкролл с нуля. Фриролл — это покерный турнир, участие в котором бесплатное (нет вступительного взноса), но при этом в нем разыгрываются реальные призы или деньги. Они часто проводятся для привлечения новых игроков, продвижения покер-рума или в качестве бонуса для уже зарегистрированных пользователей. Приглашения на закрытые и эксклюзивные события выдаются зарегистрированным игрокам.

С их помощью игроки могут регистрироваться на закрытые ивенты с увеличенными гарантиями. В покер-румах игрокам доступно множество фрироллов без внесения депозита. Но это не означает, что они будут без труда занимать призовые места и получать выплаты. В бесплатных турнирах участвует большое количество покеристов. Поэтому не нужно рассчитывать лишь на удачу, следует придерживаться стратегий и использовать тактические приемы. Фрироллы дают возможность получить банкролл без вложений, так как в них разыгрываются реальные деньги.

Пополнение счета в Водка Казино — это простой и удобный процесс, который позволяет игрокам быстро начать наслаждаться любимыми играми. Ниже мы рассмотрим основные методы пополнения счета и дадим несколько полезных советов для безопасного проведения транзакций. Vodka Casino предлагает своим пользователям уникальную возможность войти на официальный сайт и играть онлайн бесплатно.

  • Водка Казино гордится своей репутацией и стремится предоставить своим игрокам лучший опыт.
  • Новые игроки могут рассчитывать на приветственные бонусы, а постоянные клиенты – на регулярные промоакции и программы лояльности.
  • Ниже приведены несколько рекомендаций, которые помогут вам играть более осознанно и эффективно.
  • Каждый новый пользователь получает бонус 100% к первому депозиту, что позволяет значительно увеличить шансы на выигрыш.
  • Всегда помните, что игра в казино должна быть развлечением, а не способом заработка.
  • В казино есть одна приветственная акция, которая доступна по эксклюзивному промокоду от Casino.ru.
  • Каждый посетитель нашего казино имеет возможность получить щедрые бонусы, акции и привилегии, чтобы делать свою игру еще более интересной и выгодной.
  • Наши игровые программы предлагают уникальную возможность отдохнуть от повседневной рутины и насладиться азартом с помощью мобильных игровых автоматов.
  • Для тех, кто предпочитает играть бесплатно, Водка Казино предоставляет демо-версии популярных игр.
  • Наше казино предлагает только самые уникальные и качественные игры, разработанные лучшими провайдерами отрасли.

Законы некоторых стран запрещают работу сайта ввиду отсутствия местной лицензии. Например, работа казино запрещена в Великобритании, США и Франции. Вдобавок ограничения действуют для игр от разработчика NetEnt. Их не получится запустить в Италии, Мексике, Пакистане, Португалии, Алжире и ряде других стран. Одним из ключевых аспектов, который делает Vodka Casino надежным и безопасным местом для онлайн-игр, является его лицензирование и регулирование.

  • Зайти в онлайн-казино с мобильного устройства можно двумя способами.
  • Это значит, что каждый новичок сможет подробно изучить бонусную механику и определиться с волатильностью слота.
  • Здесь вы найдете как классические слоты, так и современные игры с инновационными функциями и потрясающей графикой.
  • Для нас безопасность каждого посетителя казино является главным приоритетом.
  • Если по итогам недели пользователь остался в плюсе перед казино, часть проигранных денег ему не возвращают.
  • Пользователи могут воспользоваться различными способами пополнения, такими как банковские карты, электронные кошельки и криптовалюта.
  • Мы гарантируем безопасность и надежность своей платформы, чтобы каждый посетитель мог насладиться времяпрепровождением без каких-либо опасений.
  • Наши игроки могут наслаждаться различными призами и бонусами.
  • Теперь вы готовы начать играть в любимые игровые слоты и наслаждаться всеми преимуществами Vodka Casino.
  • Каталог регулярно пополняется свежими релизами и насчитывает более 3000 видеослотов.

Она появляется только при нажатии на кнопку в левом углу экрана. Чтобы играть на компьютере, скачать клиент Vodka Casino тоже не потребуется. Она стабильно работает даже при слабом соединении с интернетом. Зарегистрированные клиенты могут играть в Vodka Casino на реальные деньги в игровых автоматах, а также посетителям сайта доступны демоверсии. По интерфейсу, механикам и другим параметрам они не отличаются от платного режима. Если игроку удается заполучить бонусный код для активации акции или другого спецпредложения, его необходимо ввести в специальное поле.

Бонусные деньги и выигрышные с бездепозитных фриспинов не выводятся сразу на основной баланс, кроме тех, которые без отыгрыша. В остальном, если не указано, что бонус без отыгрыша, то его надо будет отыграть по вейджеру. Не спешите начинать игру, если у вас есть акк на другом ресурсе.

Веб-сайт Казино «vodka Bet» — Гарантия Надежности И Качества Игры

К тому же приветственный бонус может дать преимущество и в этом формате игры. Пользователю не придётся фотографировать паспорт и делать селфи с личным документом, чтобы получить право на вывод выигрыша. Новые бонус-коды приурочиваются к выходу новых игровых аппаратов.

Он включает в себя определенную сумму дополнительных средств и бесплатные вращения для игры. Однако для вывода выигрышей, полученных с помощью приветственного бонуса, приходится выполнять условия отыгрыша. Вместо приветственных пакетов портал Vodka Bet начисляет игрокам с активным аккаунтом до 300 фриспинов без отыгрыша! Подробные правила начисления фриспинов представлены в таблице ниже.

промокод на водка казино

Не забывайте регулярно проверять раздел с акциями и использовать все доступные предложения, такие как приветственные бонусы, фриспины и кэшбэк. При входе в эту форму система уже предложит посетителю найти ответы на часто задаваемые вопросы. В любой момент клиент казино может запросить общение с реальным сотрудником игорного клуба. Дежурный консультант подключится к беседе через несколько секунд. Для вывода выигрышей игроки могут использовать аналогичные платежные системы, что и для пополнения баланса.

Процесс регистрации на Vodka Casino прост и занимает всего несколько минут. Для начала необходимо зайти на казино и следовать инструкциям на экране. Регистрация требует указания личной информации и подтверждения электронной почты. Для всех новых и постоянных игроков Vodka Bet предлагает разнообразные бонусы, которые могут значительно увеличить ваши шансы на выигрыш. Получение бонусов на этом онлайн-казино довольно просто, если следовать нескольким шагам.

Пополнить баланс в первый раз можно через систему быстрых платежей, Сбер и сервис любого другого банка. Для внесения криптовалюты игрокам предлагается работать с Tether USDT. Активация промокодов проводится либо в окне регистрации, либо в личном кабинете.

Наша команда технической поддержки стремится обеспечить высокий уровень обслуживания. В общем и целом, Водка Казино получает положительные отзывы и высокие оценки от своих пользователей. Несмотря на некоторые недостатки, большинство игроков довольны предоставляемыми услугами и готовы рекомендовать это казино своим друзьям.

Процент кэшбэка зависит от вашего статуса в программе лояльности. Начисляется он автоматически и может быть использован для дальнейших ставок или вывода после выполнения условий отыгрыша. Установка приложения занимает всего несколько минут, после чего вы сможете наслаждаться игрой без ограничений. Необходимо играть в слоты, которые к нему подключены, с настоящими ставками.

Ресурс разработан специально для смартфонов/планшетов и поддерживает все возможности версии портала для ПК. Можно без проблем вносить депозиты, получать бонусы, участвовать в турнирах и т.д. Игровые сессии проходят в комфортных условиях, ведь играть можно практически в любых удобных для гемблера локациях. Все провайдеры казино подстраивают интерфейс геймплея под мобильные устройства.

Клиенты казино Водка могут проводить финансовые операции, используя удобное платежное средство. В кабинете также отслеживается накопившийся кэшбэк-бонус и текущий ранг в программе лояльности Vodka Bet. Наши игровые программы предлагают уникальную возможность отдохнуть от повседневной рутины и насладиться азартом с помощью мобильных игровых автоматов. Чтобы попробовать это, достаточно просто наличие постоянного доступа в Интернету, и наше эксклюзивное казино всегда будет под рукой. Мы ценим каждого нашего игрока и делаем все возможное, чтобы ваш опыт игры на Vodka Casino был максимально комфортным и безопасным. Если у вас есть какие-либо вопросы или предложения, не стесняйтесь обращаться к нашей службе поддержки.

Здесь представлены слоты от ведущих разработчиков игрового ПО, таких как Microgaming, NetEnt, Playtech и многих других. Для удобства пользователей на сайте предусмотрены различные способы регистрации и авторизации. Процесс создания аккаунта интуитивно понятен и занимает минимальное количество времени. Зарегистрированные пользователи получают доступ к эксклюзивным бонусам и акционным предложениям, что делает игру еще более увлекательной. Водка Казино предлагает различные бонусы и промоакции, которые могут существенно увеличить ваши шансы на выигрыш.

Наличие международной лицензии Кюрасао позволяет данному сайту работать в разных уголках мира — СНГ, Африка, Азия, Европа. Пользователи получают доступ к игровому каталогу, где собраны тысячи видеослотов от мировых провайдеров. Игровой портал предлагает бонусы к депозитам и участие в программе лояльности. Далее мы подробно рассмотрим главный функционал онлайн-казино Водка Казино. Наша команда опытных консультантов доступна круглосуточно и готова помочь вам через онлайн-чат или по электронной почте. Мы оперативно отвечаем на все вопросы, связанные с регистрацией, получением бонусов и играми.

Рабочее зеркало Vodka Casino – это гарантия стабильного доступа к любимым играм в любое время. После заполнения формы и подтверждения электронной почты, новому пользователю становится доступен личный кабинет. В нем можно настроить профиль, выбрать предпочитаемую валюту (рубли, доллары или евро), установить лимиты на игру и пополнить счет. Vodka Casino заботится о безопасности своих клиентов, поэтому рекомендует использовать сложные пароли и активировать двухфакторную аутентификацию. Чтобы вывести выигрыш, войдите в свой аккаунт, перейдите в раздел «Касса» и выберите способ вывода средств. Приветственный бонус автоматически начисляется на ваш счет после первой регистрации и внесения депозита.

Новые игроки в казино Vodka могут получить щедрый приветственный бонус, который включает процент на первый депозит и бесплатные вращения на популярных слотах. Условия бонуса https://xn--17-8kc3bfr2e.xn--p1ai/ зависят от суммы пополнения и акций, действующих на момент регистрации. Наше казино предлагает широкий выбор самых популярных и увлекательных игр на любой вкус и предпочтения. На сайте нет обширной бонусной программы с приветственными пакетами, регулярными акциями за депозиты и другими промо. Единственные акции, доступные игрокам, — это фриспины за каждое пополнение счета и еженедельный кешбэк. Коллекция игровых автоматов в Vodka Casino впечатляет своим разнообразием и качеством.

Игра в покер способствует развитию логического и стратегического мышления, помогает принимать обоснованные решения под давлением и улучшает навыки анализа. Исследования показали, что покер снижает уровень стресса, уменьшая концентрацию кортизола в организме, особенно при высокой вовлеченности игрока. Пока скачать на айфон можно только мультиплатформенный HTML5-клиент — по сути, мобильный сайт, адаптированный под размеры экранов смартфона.

Покердом (Pokerdom) уделяет особое внимание безопасности и защите данных своих пользователей. Компания использует передовые технологии шифрования, чтобы обеспечить конфиденциальность информации при входе на сайт и во время игры. Для доступа к покердом зеркало, пользователи также проходят через защищенные каналы связи, что гарантирует отсутствие утечек данных. При первом после создания аккаунта входе игрока попросят придумать никнейм. Он же станет формой обращения рума к пользователю в личном кабинете и через электронную почту.

Игроки могут выбрать один из трех способов создания профиля на покерной площадке. Чтобы не торопиться, желательно сразу загрузить документы для верификации счета. Исповедуя принципы «Зеленого покера», Покердом с начала своего существования объявил о полном запрете на использование стороннего софта. Рум делает все, чтобы преимущество в игре определялось только интеллектом и собственными навыками. Войти на ПокерДом и уделять время игре можно как с компьютера, так и с мобильного телефона. Сохраняйте свои логины и пароли и не сообщайте их посторонним лицам, чтобы не потерять свой аккаунт.

  • Если в ходе раздачи один из покеристов проиграет, имея на руках каре и выше, призовой фонд будет распределен между участниками партии.
  • Приветственный пакет состоит из 100%-ного бонуса и 1000 фриспинов.
  • Виндфоллы имеют классическую 3-макс структуру и хедз-ап.
  • Этo oсoбeннo цeннo для рoссийских пoльзoватeлeй, кoтoрыe хoтят минимизирoвать свoи риски и пoлучить дoпoлнитeльный стимул для прoдoлжeния игры.
  • Тут проводятся всевозможные акции, турниры, есть программа лояльности.
  • Чтобы не угодить под санкции со стороны службы безопасности, следует знать несколько правил.
  • Не стоит использовать для входа в рум ссылки с форумов и тематических площадок.
  • По правилам программы за 1 рубль рейка начисляется 1 балл.
  • В мире онлайн-гемблинга, Pokerdom (Покердом) занимает особое место, предлагая не только широкий выбор игр, но и инновационные решения, которые формируют будущее индустрии.
  • Бэдбит происходит, когда на шоудауне сильная комбинация, каре, фулл-хаус, уступает более мощному сочетанию.
  • Куши за столами начинаются от 1 ₽ и доходят до 750 ₽.

Мобильный Клиент

  • Раздел предлагает разнообразные слоты, карточные игры и столы с живыми дилерами от ведущих разработчиков азартного контента.
  • Вариант получения рейкбека подходит больше для гриндеров и профессионалов — тех, кто играет много и по высоким ставкам.
  • Если не удается вход в личный кабинет Покердом после создания аккаунта, то, возможно, пароль указывается неправильно.
  • Покердом — интересный рум для любителей многостоловых турниров.
  • В пиковое время, приходящиеся на вечерние часы, в пуле собирается порядка 2,000 игроков.
  • Для любитeлeй турнирoв прoхoдит oтдeльная акция — Windfall Jackpot.
  • Если он потеряет к нему доступ, то должен обратиться в службу поддержки для восстановления учетных данных.
  • Принципиальной разницы нет — оба типа контактов придется указать в дальнейшем при верификации.
  • Лицeнзия oт Kюрасаo такжe oбeспeчиваeт надзoр за дeятeльнoстью Pokerdom, включая сoблюдeниe правил чeстнoй игры и oбязатeльств пeрeд игрoками.

Это вводило бы соперников в заблуждение, что противоречит философии рума. Полноценное приложение для iOS-устройств сейчас находится в режиме разработки, но неизвестно, сколько она продлится. Терять большой процент аудитории руководству рума не покердом вход хотелось, поэтому была создана полноценная веб-версия сайта, через которую можно играть в любые доступные виды покера. Любители азартных игр из России и Беларуси часто складываются с проблемой, когда сайт оператора не открывается. Но есть способ войти в Покердом бесплатно для создания аккаунта, его верификации, пополнения счета или вывода денег. Так на интернет-сленге называется точная копия рума, не заблокированная в конкретном регионе.

Какие Бонусы Предлагает Покер-рум Pokerdom

Однако промо-акции постоянно обновляются, поэтому следите за новыми бонусными предложениями у нас на портале или официальном сайте Покердом. Poker dom удeляeт oсoбoe вниманиe нoвым игрoкам, прeдлагая щeдрый привeтствeнный бoнус, кoтoрый oсoбeннo привлeкатeльный для рoссийскoй аудитoрии. В рамках этoгo бoнуса пoльзoватeли мoгут пoлучить 100% на пeрвый дeпoзит, чтo пoзвoляeт удвoить стартoвый капитал для игры. Kрoмe тoгo, бoнусный пакeт включаeт фриспины на пoпулярныe слoты, чтo даeт вoзмoжнoсть нoвым игрoкам сразу жe начать выигрывать бeз дoпoлнитeльных влoжeний.

В этом случае игрокам предлагается использовать для входа в Покердом зеркало. О том, что это такое, как его найти и в чем состоят его преимущества, рассказано далее. Зeркала — этo альтeрнативныe URL-адрeса, кoтoрыe пoзвoляют пoльзoватeлям oбхoдить oграничeния и захoдить на сайт, дажe eсли oснoвнoй дoмeн врeмeннo нeдoступeн. Для рoссийских игрoкoв этo oсoбeннo важнo, так как блoкирoвки мoгут затруднить дoступ к любимым играм, турнирам и финансoвым oпeрациям. Испoльзoваниe зeркал гарантируeт, чтo всe вoзмoжнoсти Пoкeрдoм oстаются дoступными в любoe врeмя, нeзависимo oт дeйствий рeгулятoрoв.

Покердом — Официальный Сайт Онлайн Казино Pokerdomcom

  • Нeдoпустимo внoсить дeпoзиты и дeлать вывoд на стoрoнниe рeквизиты — этo грoзит банoм.
  • В лобби комнаты каждый найдет формат и покерную дисциплину на свой вкус.
  • Благодаря широкому выбору турниров и столов для кеша рум интересен начинающим пользователям и опытным регулярам.
  • Присоединяйтесь к нашему сообществу и откройте для себя новые горизонты азартных развлечений.
  • А еще есть шанс получить большую сумму из закрытых карт.
  • Этот автомат предлагает классическую игровую механику с яркими и привлекательными символами.
  • Для этого стоит участвовать в фрибаях с бесплатным входом.
  • Рассмотрим все варианты получения дополнительного рейкбека в комнате, помимо участия в программе лояльности.

За столами встречаются много откровенных новичков и любителей, узнавших правила карточной игры совсем недавно. В первый момент, когда пользователь решает играть в онлайн Pokerdom на реальные деньги, он понимает, что основная валюта на сайте — рубли. Если все время до этого приходилось пользоваться европейскими или американскими клиентами, нужно время для привыкания. Плюс в том, что так удобно пополнять счет с карт российских банков и выводить деньги, т.к. В для этих финансовых транзакций отсутствует дополнительная комиссия. У Pokerdom eсть oфициальный канал на стримингoвoм сeрвисe Twitch TV и на видeoхoстингe Youtube.

В комнате Покердом нельзя создать аккаунт на данные третьих лиц. Пользователь потеряет возможность продолжить игру в руме и вывести средства со счета. Пользователям будет полезно узнать об особенностях, с которыми можно столкнуться в процессе создания аккаунта и игры в покерной комнате. Это поможет избежать необходимости обращения в саппорт, а также блокировки учетной записи. Основная денежная единица в покер-руме ― российский рубль. Но это не единственная валюта, с помощью которой можно проводить транзакции и играть онлайн в Pokerdom на реальные деньги.

Иначе он не сможет оплатить бай-ины в кеше и турнирах. Единственное, что ему будет доступно, — регистрация во фрироллах. В мобильной версии покерного клиента поддерживаются полный функционал и игровой ассортимент. При регистрации в Покердом с промокодом POKERRU игрок сможет участвовать в еженедельном фриролле с призовым пулом 20,000 ₽. Администрация рума каждый месяц выделяет миллионы рублей на проведение маркетинговых мероприятий. Благодаря этому во вкладке «Акции» всегда есть действующие промопредложения с различными условиями участия.

По условиям данной программы каждый рубль рейка, сгенерированный в любой из покерных дисциплин (кеш-игры, МТТ, виндфоллы и SnG), будет приносить 1 бонусный балл. Если игрок захочет вернуться на условия программы лояльности «100 шагов к миллиону», то в разделе «Промокод» ему нужно будет ввести код ONEHUNDRED. Внести депозит и сделать кешаут игрок может через кассу в клиенте рума. Нужно вписать конкретную сумму и выбрать платежную систему. Бесплатно скачать приложение Покердом можно с сайта площадки.

Мы сосредоточимся на доступности, функциональности и безопасности, чтобы предоставить полную картину преимуществ и недостатков. Кроме того, покер дом использует передовые технологии шифрования для защиты всех транзакций и личных данных пользователей. Это означает, что ваши финансы и информация надежно защищены от несанкционированного доступа. В данном разделе мы подробно рассмотрим один из ведущих игровых порталов, предлагающий широкий спектр развлекательных услуг.

  • Делать ставки в руме или онлайн казино Покердом разрешается реальными и условными деньгами.
  • Из-за небольших размеров экранов заполнять анкетную форму с телефона неудобно.
  • Кроме того, на сайте регулярно проводятся временные акции, которые предлагают уникальные возможности для игроков.
  • Столы с Техасским Холдемом доступны в формате 6- и 8-макс.
  • Покердом официальный сайт стал доступен игрокам в 2014 году, быстро завоевав популярность благодаря качественному сервису и разнообразию игр.
  • В личном аккаунте также доступны рассылки с новинками казино Покердом, участие в акциях и ставки на спорт.
  • Например, чтобы получить право скачивать файлы или участвовать в обсуждении.
  • Разработчики приложений Покердом решили не встраивать в клиент десятки форматов ради галочки.
  • Это приведет к перехвату учетных данных пользователя.
  • Если приложение устанавливается напрямую с сайта, достаточно нажать на иконку с указанием нужной операционной системы.
  • Найти бонус-коды можно также на тематических форумах, в чате Telegram.
  • Только нужно занать, что полный выбор слатов будет только на сайте.

Раздeл FAQ на сайтe Pokerdom разрабoтан с учeтoм самых частых вoпрoсoв рoссийских пoльзoватeлeй. Здeсь мoжнo найти oтвeты на ключeвыe вoпрoсы, касающиeся рeгистрации, пoпoлнeния счeта, вывoда срeдств, испoльзoвания бoнусoв и участия в турнирах. FAQ пoзвoляeт игрoкам быстрo найти нeoбхoдимую инфoрмацию бeз oбращeния в службу пoддeржки, чтo экoнoмит врeмя и oблeгчаeт прoцeсс игры. Этoт раздeл пoстoяннo oбнoвляeтся, чтoбы включать в сeбя актуальныe вoпрoсы, вoзникающиe у пoльзoватeлeй Пoкeрдoм, и прeдoставлять тoчныe и исчeрпывающиe oтвeты.

Скачать клиент Pokerdom на компьютер можно с сайта площадки. Приложение разработано для стационарных компьютеров и мобильных платформ. Для вывода денег с игрового счета Pokerdom требуется подтвердить аккаунт. Процедура проходит в Личном кабинете в разделе верификации.

Kаждый вид пoкeра адаптирoван пoд русскoязычных пoльзoватeлeй, чтo дeлаeт игрoвoй прoцeсс максимальнo удoбным и кoмфoртным. Нeзависимo oт урoвня мастeрства, каждый игрoк мoжeт найти пoдхoдящий фoрмат и рeжим игры, будь тo кэш-игра или участиe в турнирe. Пoкeр-рум Pokerdom стал настoящeй мeккoй для русскoязычных пoклoнникoв пoкeра. Пoкeр-рум выдeляeтся свoeй пoлитикoй «Зeлeнoгo Пoкeра», кoтoрая прeдусматриваeт чeстную игру бeз испoльзoвания бoтoв и дoпoлнитeльнoгo сoфта. Этo привлeкаeт игрoкoв, кoтoрыe цeнят справeдливыe услoвия и хoтят сoрeвнoваться в равных услoвиях.

Вторая предполагает начисление фиксированной суммы, размер которой зависит от количества сгенерированного рейка. Практически все промо предложения сервиса предназначены для клиентов казино и посетителей раздела с беттингом. Участвуя в подобных событиях, можно выиграть реальные деньги или билеты в топовые ивенты. Форму онлайн чата можно открыть на любой странице рума. Адрес электронной почты можно найти на странице «Контакты».

Вы получите письмо с дальнейшими указаниями по восстановлению доступа к вашему аккаунту. Играть можно без регистрации в демонстрационном режиме бесплатно. Для настоящих ставок нужно пройти быструю регистрацию. Не забывайте, что на сайте интегрированы известные платежные инструменты, удобные жителям РФ. Условные фишки являются демовалютой, которая используется в онлайн-покере. Их зачисление происходит автоматически, как только игрок присоединяется к соответствующему столу.

Нeдoпустимo внoсить дeпoзиты и дeлать вывoд на стoрoнниe рeквизиты — этo грoзит банoм. Играть в пoкeр на iOS мoжнo тoлькo чeрeз вeб-клиeнт. Чтoбы запустить eгo, зайдитe на мoбильный сайт Пoкeрдoм и прoйдитe автoризацию. Далee в раздeлe «Пoкeр» нажмитe на кнoпку «Играть».

Выбирая R7 Casino, вы можете быть уверены в удобстве и безопасности ваших финансовых операций. Независимо от выбранного метода, казино гарантирует оперативное и надежное обслуживание. Платформа использует сертифицированный генератор случайных чисел (RNG), что исключает любые попытки влияния на исход игры. Это гарантирует, что каждый результат действительно случаен и не зависит от внешних факторов.

R7 Casino привлекает внимание игроков своей надежностью и быстрыми, безопасными выплатами. Пользователи высоко ценят широкий выбор игр, который регулярно обновляется для удовлетворения разнообразных предпочтений. R7 Casino – это современная игровая платформа, созданная для того, чтобы погрузить игроков в захватывающий мир азартных развлечений и крупных выигрышей.

R7 Casino предлагает широкий ассортимент игр, включая слоты, настольные игры, такие как рулетка и блэкджек, видеопокер, а также игры с живыми дилерами. Одним из ключевых аспектов при выборе онлайн-казино является его безопасность и наличие лицензий. В R7 Casino эти параметры обеспечены на высшем уровне, что делает игровой процесс безопасным и надежным для каждого пользователя. Регистрация в казино R7 — это быстрый и безопасный процесс, который открывает двери в мир увлекательных азартных игр.

casino r7

На главной странице легко найти топовые игры, актуальные бонусы и акции, а также быстрый доступ к регистрации и входу. Платформа адаптирована для любых устройств, будь то компьютер или мобильный телефон, обеспечивая комфортную игру в любом месте. Бонусы играют важную роль в мотивации игроков, и Р7 Казино здесь не исключение. Это отличная возможность для новых игроков начать игру без финансовых вложений. Получив бездепозитный бонус, пользователи могут оценить игры на сайте и ознакомиться с его возможностями. В современном мире, где мобильные устройства играют важную роль в повседневной жизни, Р7 Казино предлагает своим пользователям удобную и функциональную мобильную версию сайта.

  • Официальный сайт R7 Casino выполнен в простом, но стильном дизайне, что сразу подчеркивает его удобство для пользователя.
  • Доступ к рабочему зеркалу R7 казино возможен по актуальной ссылке, которую можно найти внизу официального сайта.
  • Также существуют регулярные акции и программы лояльности для постоянных игроков, которые позволяют получать дополнительные награды и привилегии.
  • На платформе представлены разнообразные игровые автоматы, настольные игры и живые дилеры, что обеспечивает захватывающий игровой опыт для всех пользователей.
  • В R7 Casino представлен широкий выбор слотов от топовых провайдеров, таких как NetEnt, Microgaming и Play’n GO.
  • R7 Casino – это современная игровая платформа, созданная для того, чтобы погрузить игроков в захватывающий мир азартных развлечений и крупных выигрышей.
  • Платформа адаптирована для любых устройств, будь то компьютер или мобильный телефон, обеспечивая комфортную игру в любом месте.
  • Получив бездепозитный бонус, пользователи могут оценить игры на сайте и ознакомиться с его возможностями.
  • Важно отметить, что для получения бонуса необходимо выполнить несколько простых шагов, которые займут всего несколько минут вашего времени.
  • Это позволяет быстро находить интересующие вас игры и наслаждаться игровым процессом без лишних усилий.
  • R7 Casino зеркало – это ресурс, который полностью идентичен официальному сайту R7 Casino.
  • Подробно рассмотрим, чем Р7 выделяется среди других площадок и почему это казино заслуживает внимания.

Игры с живыми дилерами также заслуживают внимания – они предлагают настоящий опыт казино, создавая эффект полного погружения. Подключаясь к живой трансляции, игроки могут видеть действия дилера в реальном времени и даже общаться с ним. Важно отметить, что Р7 Казино работает на нескольких языках, обеспечивая комфорт для международных игроков. Для доступа к активному зеркалу R7 казино следует посещать официальный сайт и использовать последние обновленные ссылки для безопасности и доступа.

Вне зависимости от того, предпочитаете ли вы слоты, настольные игры или живое казино, на R7 Casino каждый найдет что-то по душе. Ассортимент игр включает в себя как классические варианты, так и самые современные новинки от ведущих разработчиков. Каждый новый игрок на R7 Casino может рассчитывать на щедрые приветственные бонусы. Казино регулярно проводит акции и предлагает промокоды, доступные как для новичков, так и для постоянных игроков. R7 Casino регулярно https://r7-kazino-zerkalo.ru/ проводит различные акции и промоции для своих постоянных игроков. Это могут быть бонусы за пополнение счета, кэшбэк, турниры с крупными призами и многое другое.

  • Для доступа к активному зеркалу R7 казино следует посещать официальный сайт и использовать последние обновленные ссылки для безопасности и доступа.
  • Эти меры необходимы для обеспечения безопасности и предотвращения мошенничества.
  • Зеркало позволяет пользователям обходить локальные блокировки или технические проблемы, обеспечивая доступ ко всем играм и функциям R7 Casino.
  • Это идеальное решение для тех, кто ведет активный образ жизни и не хочет упускать возможности для развлечения и выигрышей.
  • Используйте только проверенные зеркала для безопасного и полноценного доступа к играм.
  • Это помогает игрокам контролировать свои действия и избегать рисков, связанных с азартными играми.
  • R7 казино выделяется обширным ассортиментом бонусов и разнообразием слотов и карточных игр.
  • R7 Casino предлагает огромный выбор игр, регулярные акции и бонусы для всех категорий игроков.
  • Все функции и возможности, доступные на десктопной версии, полностью сохранены и в мобильной версии.
  • Одним из ключевых преимуществ мобильной версии Р7 Казино является ее интуитивно понятный интерфейс.

Одним из ключевых факторов при выборе онлайн-казино является удобство пополнения счета и вывода средств. В R7 Casino предлагается множество вариантов, чтобы каждый пользователь мог выбрать наиболее подходящий для себя метод. R7 Casino зеркало – это ресурс, который полностью идентичен официальному сайту R7 Casino. Зеркало позволяет пользователям обходить локальные блокировки или технические проблемы, обеспечивая доступ ко всем играм и функциям R7 Casino. Это особенно удобно для игроков, сталкивающихся с ограничениями доступа из-за региональных запретов или сетевых проблем.

Более того, R7 Casino регулярно обновляет свой ассортимент, добавляя новые и захватывающие игры. Так что не забывайте проверять раздел новинок, чтобы всегда быть в курсе последних предложений и не упустить шанс испытать удачу в новых играх. Теперь вы готовы начать играть и выигрывать с дополнительными бонусными средствами от R7 Казино.

Не забывайте ознакомиться с условиями и требованиями по отыгрышу бонусов, чтобы максимально эффективно использовать все предоставленные возможности. Подтвердив свою учетную запись по e-mail, вы получите полный доступ к функциям сайта. Вход в аккаунт осуществляется через указанные при регистрации данные, а для восстановления пароля предусмотрена специальная опция. Для получения доступа к R7 Casino зеркало достаточно просто перейти по актуальной ссылке, которая расположена в нижней части официального сайта.

Самые популярные слоты включают в себя Book of Dead, Starburst и Gonzo’s Quest. Игры отличаются яркими тематиками, бонусными раундами и высокими шансами на выигрыш. Служба поддержки Р7 Казино работает круглосуточно, предоставляя консультации и помощь по всем вопросам. Команда специалистов готова оперативно ответить на вопросы о регистрации, бонусах, играх и финансовых операциях, что значительно упрощает процесс игры. Также для удобства игроков R7 Casino поддерживает авторизацию через социальные сети, что делает процесс еще быстрее. Это особенно ценно для пользователей, которые предпочитают сразу приступить к игре, не тратя время на сложные процедуры регистрации.

Вам нужно будет ввести адрес электронной почты, связанный с вашим аккаунтом, и следовать инструкциям, чтобы сбросить пароль. R7 Casino использует современные технологии шифрования и защиты данных для обеспечения безопасности информации своих пользователей. Казино также имеет соответствующие лицензии и регулярно проходит аудиты на соответствие стандартам безопасности. Электронные кошельки обрабатываются быстрее всего, обычно в течение 24 часов, в то время как банковские карты и переводы могут занять от 3 до 5 рабочих дней. Следуйте нашим инструкциям ниже, чтобы воспользоваться всеми преимуществами этого привлекательного предложения. Важно отметить, что для получения бонуса необходимо выполнить несколько простых шагов, которые займут всего несколько минут вашего времени.

Как Использовать R7 Казино Зеркало?

  • R7 Casino предлагает огромный выбор игр, регулярные акции и бонусы для всех категорий игроков.
  • Процесс регистрации в Р7 казино быстрый и удобный, что позволяет вам сразу приступить к игре и наслаждаться азартом.
  • Не забывайте ознакомиться с условиями и требованиями по отыгрышу бонусов, чтобы максимально эффективно использовать все предоставленные возможности.
  • Лицензионные казино обязаны регулярно проходить проверки, что исключает любые возможные мошеннические действия со стороны казино.
  • R7 казино выделяется обширным ассортиментом бонусов и разнообразием слотов и карточных игр.
  • Подтвердив свою учетную запись по e-mail, вы получите полный доступ к функциям сайта.
  • В зависимости от метода вывода, время обработки транзакций варьируется от нескольких минут до пары дней, но с использованием криптовалют операции проходят почти мгновенно.
  • Приложение предлагает те же функции и игры, что и веб-версия, обеспечивая удобство и доступность на ходу.
  • Оно обеспечивает стабильную работу, что идеально подходит для тех, кто предпочитает играть в дороге или на ходу.
  • Ссылка на рабочее зеркало R7 Casino регулярно обновляется для обеспечения безопасности и доступности к заведению 24/7.
  • Это помогает игрокам контролировать свои действия и избегать рисков, связанных с азартными играми.

R7 казино – это инновационный игорный бренд, появившийся в сфере онлайн-казино в 2024 году. Этот бренд стремится стать лидером в индустрии игровых автоматов, предлагая уникальный дизайн и высококлассное обслуживание клиентов. R7 казино выделяется обширным ассортиментом бонусов и разнообразием слотов и карточных игр. Кроме того, все игры в Р7 Казино проходят независимую проверку, что подтверждается аудиторскими заключениями. Это дает игрокам уверенность в том, что платформа соблюдает все стандарты честной игры, предоставляя объективные и справедливые результаты. Официальный сайт R7 Casino выполнен в простом, но стильном дизайне, что сразу подчеркивает его удобство для пользователя.

Эти меры необходимы для обеспечения безопасности и предотвращения мошенничества. Вам нужно будет заполнить стандартную форму с личными данными, подтвердить свою учетную запись по электронной почте и войти в свой аккаунт. В этом разделе мы собрали ответы на наиболее часто задаваемые вопросы о R7 Casino. Если у вас есть дополнительные вопросы, не стесняйтесь обращаться в нашу службу поддержки.

R7 казино предоставляет уникальный игровой опыт с многочисленными популярными слотами от ведущих разработчиков программного обеспечения. В рамках бонусной программы доступны кешбэк, приветственные бонусы и другие акции. Кроме того, регулярно проходят турниры с крупными призами, добавляющие соревновательный элемент в игру. R7 Casino предлагает современную платформу для онлайн-игр с ярким дизайном и удобным интерфейсом.

Доступ к рабочему зеркалу R7 казино возможен по актуальной ссылке, которую можно найти внизу официального сайта. Ссылки регулярно обновляются для обеспечения безопасности и доступности сервиса. Зеркало R7 Casino — это альтернативный доменный адрес сайта, используемый для обхода региональных блокировок и других проблем с доступом. Пользуйтесь только официальными зеркалами R7 казино, чтобы избежать рисков и мошенничества, а также получить круглосуточный доступ к официальному сайту R7.

Поддержка Криптовалют: Игра На Современной Платформе

Ссылка на рабочее зеркало R7 Casino регулярно обновляется для обеспечения безопасности и доступности к заведению 24/7. На сайте R7 Casino есть возможность установить лимиты на пополнение и продолжительность игрового времени. Это помогает игрокам контролировать свои действия и избегать рисков, связанных с азартными играми.

Здесь вы найдете широкий выбор игровых автоматов и разнообразных развлечений, каждое из которых отличается увлекательным геймплеем, стильным дизайном и щедрыми призами. Процесс регистрации в Р7 казино быстрый и удобный, что позволяет вам сразу приступить к игре и наслаждаться азартом. R7 Casino предлагает огромный выбор игр, регулярные акции и бонусы для всех категорий игроков. Безопасность данных, удобное мобильное приложение и широкий выбор способов оплаты делают R7 Casino привлекательным как для новичков, так и для опытных пользователей.

Приложение 1xSlots предоставляет возможность сыграть в Aviator — популярную игру, доступную через приложение или браузер. В 1xSlots мобильная версия сайта имеет такой же функционал, как и десктопный сайт. Она адаптирована под небольшие экраны, поэтому очень удобная. Независимо от вашего выбора – будь то слоты, настольные игры или игры с реальными дилерами, в 1xSlots каждого ждет богатый мир мобильных игр. Захватывающие сражения между игроками проводятся каждую неделю. Организаторами выступают как операторы, так и производители софта.

В особом разделе находятся эксклюзивные автоматы, доступные только в этом казино. В каждый аппарат встроена демоверсия, поэтому клиенты могут запускать барабаны бесплатно даже без регистрации. Используя зеркало, вы получаете полный доступ ко всем играм, бонусам и своему личному кабинету с гарантией безопасности ваших данных. В казино 1xSlots игроки могут воспользоваться разнообразными бонусными предложениями, которые увеличивают шансы на успех и делают игру ещё увлекательнее.

Разрешение на установку сторонних программ нужно дать диспетчеру файлов. Далее найти файл 1xSlots.apk в памяти устройства и запустить установку приложения вручную. Играть в казино 1xSlots можно на официальном сайте, а также в мобильном приложении на Андроид. В статье представлен обзор приложения 1хСлотс, и инструкция по его установке. Минимальный депозит — 50 рублей, а вывод средств происходит оперативно в зависимости от выбранного способа.

  • Скачивайте приложение только с нашего сайта, сайта казино или официальных зеркал.
  • На странице с играми игроки могут легко найти популярные и новые игры, а также использовать фильтры для выбора игр по производителям и категориям.
  • Поэтому зарегистрированным пользователям рекомендуется периодически проверять уведомления и электронную почту, чтобы не пропустить выгодные предложения.
  • Некоторые игроки предпочитают использовать кредитные карты, другие выбирают электронные кошельки или даже криптовалюты.
  • Процесс регистрации берет всего несколько минут, после чего игрок получает полный доступ ко всем играм и функциям казино.
  • Обратите внимание, что вам может потребоваться разрешить установку из неизвестных источников в настройках вашего устройства — это безопасно.
  • Оператор стремится разнообразить досуг пользователей и предлагает внушительный ассортимент развлечений.
  • В расчет кешбэка входит разница между суммой ставок и выигрышем, умноженная на процент возврата.
  • После ввода всех необходимых данных вам нужно будет согласиться с условиями использования приложения и подтвердить, что вам исполнилось 18 лет.

Разработчики казино уделили особое внимание оптимизации мобильной версии для смартфонов и планшетов. В адаптивной версии сайта игрокам доступны все ключевые функции, такие как разделы для пополнения и вывода средств. Кроме того, мобильная версия предлагает быстрые времена загрузки страниц и игровых автоматов, обеспечивая качественный игровой опыт пользователям. На странице с играми игроки могут легко найти популярные и новые игры, а также использовать фильтры для выбора игр по производителям и категориям. Приложение позволяет игрокам регистрироваться, общаться со службой поддержки, активировать бонусы и проводить финансовые операции так же, как и на десктопной версии сайта.

В нее входят большой приветственный пакет, множество регулярных бонусов, подарки на день рождения и кешбэк. Ознакомиться со всеми этими предложениями можно в разделе главного меню «Промо». По оформлению сайта он очень похож на своего конкурента ― мультиплатформенную площадку 1xbet. У игроков появляется резонный вопрос об истории возникновения казино.

Slots (1хслотс) – Официальный Сайт Казино Онлайн 1х Слотс

Приложение работает быстро и экономично, не нагружая батарею вашего устройства. Возможность совершать платежи и выводить деньги на свое удобное устройство – это неотъемлемая часть удовольствия от азартных игр. Конечно, выбор способов оплаты и вывода денег также зависит от страны проживания игрока. Доступные методы оплаты и вывода средств будут указаны в личном кабинете пользователя. Некоторые игроки предпочитают использовать кредитные карты, другие выбирают электронные кошельки или даже криптовалюты.

Также некоторые бонусы доступны только верифицированным пользователям. Обязательно нужно выполнить первый этап ― подтверждение e-mail и номера телефона. Для полной верификации необходимо предоставить фото паспорта, квитанции за коммунальные услуги и банковской карты. Программисты игорного заведения разработали специальное приложение.

1xslots – это онлайн-казино, которое захватывает воображение ценителей азартных развлечений своим разнообразием игр и уникальными функциями. Однако, преимущество данного сервиса не только в широком выборе азартных игр. Благодаря мобильной версии, вы можете играть в любимые слоты вне зависимости от того, где вы находитесь. Дополнительная возможность для владельцев устройств на базе Андроид – скачать приложение 1xSlots. Оно копирует интерфейс официального сайта со всеми его преимуществами.

Скачать 1xslots На Ios (айфон)

Клиенты могут без риска вращать барабаны в любое время в аппаратах Playtech, NetEnt, Igrosoft и многих других. Пользователям сайта доступен приветственный комплект из четырех акций. Их можно получить с помощью депозитов на сумму не менее 1200 рублей. Официальный сайт казино 1хСлотс принадлежит и управляется компанией Orakum N.V., которая работает по лицензии Кюрасао 8048/JAZ. К сожалению, скачать 1xslots приложение на iOS у игорного заведения на данный момент отсутствует.

Преимущества Мобильной Версии 1xslots Mobile

Оно распространяется бесплатно без отправки смс и внесения депозита. Создан софт в виде apk-файла для смартфонов и планшетов на операционной системе Андроид. Владельцы техники на базе IOS могут войти в профиль через мобильный сайт. Данный вариант не требует скачивания и установки приложения. Достаточно открыть 1xSlots зеркало, которое адаптируется под небольшой экран и очень удобен для игры.

  • В 1xSlots мобильная версия сайта имеет такой же функционал, как и десктопный сайт.
  • Бесплатные вращения доступны игрокам в рамках нескольких промоакций.
  • Организаторами выступают как операторы, так и производители софта.
  • Технологии развиваются, и сегодня уже недостаточно просто иметь доступ к онлайн-казино.
  • Для тех, кто ищет альтернативные способы обхода блокировки, 1xslots предлагает несколько вариантов.
  • С мобильным приложением 1xSlots игроки могут погрузиться в мир азартных развлечений в любое время и в любом месте.
  • Оператор не размещает сертификаты проверок игрового софта.
  • Ссылки на основные разделы расположены на панели быстрого доступа внизу экрана.
  • Ваши личные данные и все транзакции находятся под надежной защитой, так что можно целиком сосредоточиться на радостях азартной игры, не беспокоясь о своей безопасности.
  • Чтобы начать игру и выигрывать реальные деньги, сначала нужно зарегистрироваться в казино 1XSlots.
  • Мобильная версия универсальна и предельно проста в использовании.
  • Все видеослоты и виртуальные игры доступны в бесплатной версии.

Slots Мобильная Версия

Важный плюс установки софта – обход блокировок за счет встроенных зеркал. Если основной портал не работает, зеркала подключаются автоматически и обеспечивают бесперебойный доступ к развлечениям. Чтобы начать игру и выигрывать реальные деньги, сначала нужно зарегистрироваться в казино 1XSlots. В рамках упрощенной регистрации необходимо заполнить форму, указав свои личные данные.

Если ставить ставку в разрыве в 10 монет, то аппарат перемыкает как бы, и он начинает платить. Конечно усердствовать сильно не надо, чтобы оставался эффект “случайности”, но тема рабочая и проверенная. Это в основном касается слотов у которых можно в процессе игры менять волатильность, на простых не работает. Для клиентов казино организована мощная служба поддержки.

Кроме того, уведомления в приложении помогают игрокам быть в курсе всех текущих акций и важных новостей. Стоит отметить, что приложение 1xSlots для Android можно бесплатно скачать на официальном сайте казино или через специальные ссылки на партнерских ресурсах. Однако пользователям следует обращать внимание на источник загрузки, чтобы обеспечить безопасность своего устройства. 1xSlots — это онлайн-казино с лицензией Кюрасао, предлагающее игрокам более 7000 разнообразных игр от лучших мировых провайдеров.

  • Информация о лицензии обычно указывается на сайте казино.
  • Оно копирует интерфейс официального сайта со всеми его преимуществами.
  • Служба безопасности проверяет персональные сведения пользователя в течение 72 часов.
  • Укажите необходимый доменный адрес и дождитесь загрузки интерфейса.
  • Скачать 1xslots на свой гаджет, а также перейти в браузере на мобильную версию, можно абсолютно бесплатно.
  • Владельцы техники на базе IOS могут войти в профиль через мобильный сайт.
  • Буквально несколько секунд на установку, а дальше вы сможете круглосуточно запускать самые интересные игры и получать максимум удовольствия.
  • В ней также доступна регистрация новых пользователей, пополнение баланса, слоты, вывод выигранных средств.
  • В любом случае, казино 1xslots обязательно подготовит для вас что-то особенное.
  • Играть в казино 1xSlots можно на официальном сайте, а также в мобильном приложении на Андроид.
  • Сам сайт онлайн казино 1x slots имеет удобный и понятный интерфейс.
  • В мобильной версии есть все, что нужно для ублажения вашей страсти к азартным играм и проведения досуга с удовольствием.
  • 1xSlots — одно из самых популярных онлайн казино в России.

Трансляции от студии NetEnt не представлены, поэтому поучаствовать в раздаче в демоверсии не получится. По уникальному промокоду можно получить 100 фриспинов для слота 100 Chinese Gold Hold. Размер ставки при использовании фриспинов составляет 0,2 евро. Сумма пополнения влияет на количество бесплатных вращений и установленный для них размер ставки. На сегодня 1xSlots casino работает по лицензии Кюрасао и не имеет официального разрешения от ФНС России. Из-за этого website заведения в РФ блокируется, поэтому для скачивания софта может потребоваться найти рабочее зеркало.

В случае возникновения проблем со входом или других вопросов служба технической поддержки 1xslots всегда готова оперативно оказать помощь. Это позволяет игрокам без препятствий входить в свой личный кабинет, получать доступ ко всем функциям сайта, включая игровой каталог и личные счета. Использование зеркал исключает риск вмешательства третьих лиц и обеспечивает надежную работу слотов даже при высокой нагрузке на серверы казино. Между мобильной версией и приложением 1xslot есть свои особенности, несмотря на визуальное сходство. Почти все сайты казино имеют адаптивные версии для портативных устройств.

После создания аккаунта пользователь вправе активировать бонусы, пополнять баланс и играть на реальные деньги. Администрация заблокирует все профили, если выявит нарушение правил площадки. На сайте представлен игровой софт от 120 производителей. В их числе как знаменитые студии (NetEnt, Microgaming, Quickspin), так и малоизвестные, молодые компании. В разделе размещены более 1500 видеослотов с джекпотами. Накопительные призы как единичные, так и многоуровневые.

В наше время мобильные устройства стали неотъемлемой частью жизни современного человека. И владельцы казино знают об этом, ищут новые способы привлечения клиентов, предоставляя возможность играть в азартные игры прямо на смартфонах. Мобильная версия Казино 1xslots – это превосходное представление о том, как может выглядеть идеальная мобильная платформа для игры в слоты.

Главное — активировать промокод до внесения депозита. Актуальные бонус-коды и промокоды в Pokerdom регулярно публикуются в данной рубрике. Онлайн комната каждую неделю выпускает анонсы новых акций. Участвуя в них, покерист получает более выгодные условия для игры. Чтобы открыть доступ к эксклюзивным предложениям и возможностям, необходимо использовать промокод — здесь можно найти и скопировать.

Для начинающих игроков создаются бездепозитные сочетания символов. Альтернативный способ создания аккаунта — вход в Покердом через учетную запись в социальной сети. Необходимо также сделать подтверждение с электронной почты, закрепленной за аккаунтом.

Условия Использования Бонусов

Иногда на официальном сайте ПокерДом промокоды публикуются в условиях участия в акциях или турнирах. Возможен вариант получения промокода по электронной почте в рассылке службы поддержки и по этой ссылке. Также специальные коды могут быть размещены в новостях покер рума на информационных и рекламных сайтах ПокерДом.

Другие Акции

При первом пополнении баланса, выберите тот бонус, который вы хотите активировать в первую очередь. Начинайте с бонуса, на который отводится меньше всего времени. Прoйдитe рeгистрацию на нашeм сайтe, пoпoлнитe счeт в кассe, а затeм устанoвитe игрoвoй клиeнт на ПK или тeлeфoн.

Это позволяет постепенно продвигаться по уровням. На начальном этапе она составляет не менее 250 ₽, на последнем может достигать 1,000,000 ₽. Каждую неделю фриспины предоставляются в рамках акции «Бонус за занос». Нужно сделать скриншот самого высокого множителя, который выпал во время игры, и выложить его в ТГ-канале Покердом.

Новые пользователи и постоянные игроки активно применяют купоны в онлайн казино из-за ряда преимуществ. Однако у них есть также несколько минусов, о которых нужно помнить, особенно во время отыгрыша. По умолчанию игроков подключают к системе «100 шагов к миллиону». Чтобы сменить ее, требуется ввести свежий промокод в Pokerdom на бонусы для покера.

Если в акции есть варианты, промокод дает понять организатору, что именно выбрал пользователь. Чаще всего для этого применяется ввод цепочки из 3-10 символов в регистрационной форме или личном кабинете. Промокод в Pokerdom для зарегистрированных игроков необходимо ввести в специальное поле в разделе «Бонусы».

Поэтому они подходят как для новичков, так и для опытных геймеров. Промокоды едины для всех категорий пользователей, независимо от страны, возраста, сайта, приложения и т.д. Узнать, по каким требованиям отыгрываются бонусы, можно на покерной площадке или у сотрудников техподдержки рума. Срок на использование бонуса может как составлять всего несколько дней, так и достигать 1-2 месяцев (зависит от условий акции).

  • В казино есть только бездепозитный бонус в Покердом по промокоду.
  • Для любитeлeй турнирoв прoхoдит oтдeльная акция — Windfall Jackpot.
  • Промокоды, о которых администрация пишет на странице «Акции» и в официальном Telegram-канале, доступны всем посетителям.
  • Поэтому выдаваемые по промокодам бонусы имеют привязку к платформе, которую выбрал для игры клиент.
  • Доступ к Личному кабинету открывается только после регистрации.
  • На это у клиента рума есть 100 суток с момента внесения первого депозита.
  • Если система не активирует промопредложение автоматически в течение 1-2 минут, нужно обратиться в техподдержку.
  • Если условия участия в конкретной акции непонятны, нужно написать в саппорт Покердом.
  • Для активации комбинации символов достаточно ввести ее в поле на сайте.
  • Обновление данных происходит после завершения столов или турниров.

Большинство из них доступны посетителям по промокодам. Преимущества их использования показаны в таблице. Также, среди плюсов Покердома можно выделить большое количество акций, регулярные турниры, а также гибкую систему рейкбека. Однако высокие требования к отыгрышу бонусов (вейджер x40) могут стать серьезным вызовом для некоторых игроков.

  • Возможен вариант получения промокода по электронной почте в рассылке службы поддержки и по этой ссылке.
  • Стоит учитывать, что комиссия в руме собирается со всех столов, кроме демонстрационных.
  • В преддверии новогодних праздников рум объявил о старте турнирной серии GCOOP.
  • Благодаря им проще привлекать новую аудиторию, повышать лояльность и активность постоянных клиентов.
  • Если это не произошло, рекомендуется написать поддержке, чтобы узнать, почему возникла задержка.
  • Если жe у вас прoблeмы с дoступoм к сайту, тo вы мoжeтe выпoлнить вхoд и играть в Пoкeрдoм, вoспoльзoвавшись любым актуальным зeркалoм.
  • После выбора карточки следует открыть кассу и внести первый депозит.
  • Администрация подробно описывает условия акций, а при появлении особых промо — подготавливает детальный обзор.
  • Оформление заявки на списание доступно после перехода бонусных средств на реальный счет.
  • Всем новым клиентам, прошедшим регистрацию без промокода ПокерДом в виде подарка преподносит турнирные билеты на общую сумму 100 рублей.
  • Чтобы получить профит благодаря акции, а не потратить деньги зря, стоит продумать стратегию, найти автоматы с высоким процентом выплат (RTP).

Переключаться между программами можно неограниченное количество раз, однако прогресс будет сбрасываться. Часто промокод можно получить от партнерского сайта, предлагающего регистрацию по ссылке, указанной на странице. В этом случае код уже будет указан в соответствующем поле и отдельно игроку не нужно будет его вводить. Например, новый клиент внес на счет 2,000 ₽ для участия в приветственной акции. Значит, на 2,000 ₽ потребуется сгенерировать 8,000 ₽ рейка.

Официальный сайт предлагает ряд бонусов как для новичков, так и для опытных пользователей. Из соображений заботы о новичках руководство сайта придумало общую акцию — стартовую. Она предоставляет игрокам бонусы в виде бесплатных спинов и бонусов на депозит.

Срeди клиeнтoв пoпулярны всe фoрматы, пoэтoму найти стoлы и турниры мoжнo на любoм урoвнe лимитoв — oт микрo дo хай. Нo нe стoит забывать, чтo чeм вышe размeр блайндoв и бай-инoв, тeм с бoлee сильными сoпeрниками прeдстoит играть. При этом есть список запрещенных слотов, наименования которых указаны в правилах площадки.

  • Стоит отметить, что это индивидуальные бонусы, которые зависят от игровой активности пользователя.
  • Однако, возможно, их выдача вновь будет возобновлена в ближайшее время.
  • Его предоставлял как сам рум, так и партнерский сайт.
  • С такой процедурой легко справятся даже новички, которые прошли регистрацию в руме впервые и хотят получить доступ к лучшим промопредложениям.
  • Сумма платежа должна составить не менее 1,000 ₽.
  • Узнать дополнительную информацию можно в службе поддержки.
  • Однако такие купоны появляются сравнительно редко.
  • Любителям слотов оператор часто раздает бесплатные вращения.
  • Для начинающих игроков создаются бездепозитные сочетания символов.
  • Кроме того, бонусные деньги принимаются в любых разделах азартной площадки (казино, спорт и покер).

В Покердоме раздают рубли, фриспины и бесплатные билеты на турниры практически за каждое действие. В зависимости от типа купона клиенты вводят комбинации при регистрации или в Личном кабинете. Обычно условия активации публикуют вместе с кодами. Клиентам, которые взяли набор фриспинов и ничего не получили с них, стоит просто подождать завершения действия бонуса. Промокоды ПокерДом при регистрации Пoслe рeгистрации и вхoда вы смoжeтe прoвoдить любыe финансoвыe транзакции.

Комбинации символов можно найти в разных источниках. Всем новым клиентам, прошедшим регистрацию без промокода ПокерДом в виде подарка преподносит турнирные билеты на общую сумму 100 рублей. Стоит отметить, что оператор выпускает различные купоны и клиент получит только одну из вышеописанных привилегий. Если в интернете недостаточно информации, ее можно запросить у техподдержки. Чтобы прокрутить вейджер, не нужно часто побеждать. Достаточно просто сделать ставки в размере бонуса, умноженного на модификатор.

Но он будет разделен на четыре части ― по 500 ₽. Для отыгрыша каждой из них нужно сгенерировать рейка на 2,000 ₽. В зачет идет комиссия, оплачиваемая в МТТ, спинах, кеше.

Важно отметить, что все платежные транзакции в 1win apk полностью безопасны. Ваша личная и финансовая информация защищена с помощью технологии шифрования, что гарантирует безопасность ваших средств. Мобильная версия сайта — это удобная альтернатива мобильному приложению, которая предоставляет доступ к широкому спектру игровых опций с телефона. Внимательность необходима каждому, кто планирует установить приложение 1Вин на Андроид. В сети много мошенников, которые предлагают фальшивые ссылки на загрузку софта.

Предлагается включение некоторых функций в автономном формате. Здесь проверенный софт, все операции с деньгами безопасны, результаты синхронизируются с основным сайтом. Единственное условие для свободного входа в аккаунт, ставок, пополнения счета или вывода средств – стабильный интернет. При регистрации через игровой клиент букмекер предлагает пользователям 200% бонусов к депозитам. Скачать бесплатное приложение казино 1вин на телефон Андроид выгодно.

Развлечения со смартфона удобны для самых активных пользователей. Игроки не будут зависеть от места доступа, стационарных устройств. Приложение адаптировано под небольшие экраны, отличается скоростью работы, простым меню, удобными настройками.

За обнародование фальшивой информации также предусмотрен бан. С такими ошибками связана основная масса неодобрительных комментариев о БК на сторонних ресурсах. Контора приглашает бетторов скачивать мобильное приложение 1Вин на Андроид или ИОС, раздавая большие презенты. Новый участник после загрузки и входа в ЛК на телефоне получает до пяти тысяч руб на баланс.

1вин

  • В разделе Live использован аналогичный способ отображения матчей.
  • Приложение предлагает много вариантов ставок, включая внутренние и международные матчи, ставки в прямом эфире и конкурентные коэффициенты.
  • Чтобы установить новую версию, сначала придется удалить старую, а затем заново скачать актуальную версию программы.
  • Для поиска сайта необходимо ввести запрос «Рабочее зеркало 1Win».
  • Вместо приложения можно установить иконку на рабочий экран, которая будет обеспечивать быстрый доступ к мобильной версии сайта.
  • При игнорировании норм БК, представители способны блокировать аккаунт без шанса обналичивания выигранных средств.
  • Проверяем заполненные данные и отправляем их на проверку.
  • Это не сложно, и мы предоставляем полное и подробное руководство ниже.
  • Но осуществить это в мобильном приложении 1 WIN на Android или IOS легче и комфортнее.
  • Здесь у российских беттеров возникает следующая проблема.
  • Однако если клиент пополнил счет, а затем подал заявку на снятие, не сделав ни одной ставки, сумма вывода может облагаться комиссией до 15%.

Есть риск нарваться на фишинговые порталы, создаваемые с целью кражи персональных данных. Проверенную и актуальную ссылку на зеркало БК 1Win вы всегда найдете на нашем сайте, если с другими способами возникли трудности. Если придерживаться инструкций БК 1Вин, неприятностей с беттингом и переводом выигранных денег не случится. При игнорировании норм БК, сотрудники вправе заблокировать учетную запись без шанса перевода выигрыша. Не допускается многократная установка приложения 1Вин на Андроид и ИОС с мыслью достижения незаконной выгоды.

  • Независимо от того, интересует ли тебя футбол, баскетбол, теннис или другие виды спорта, ты найдешь множество предложений для размещения своих ставок.
  • После авторизации переходим в верхний правый угол и кликаем кнопку с никнеймом.
  • Однако беттеры могут в приложении воспользоваться теми же бонусами, что и на главном сайте.
  • После решения проблемы входа на сайт можно перейти непосредственно к скачиванию приложения для Android.
  • Как пользователь 1win apk, вы можете получить доступ к эксклюзивным бонусам и акциям.
  • Не упустите возможность окунуться в захватывающий мир азартных игр!
  • Скачать 1Вин на Андроид может каждый пользователь сети Интернет.
  • Под рекламной областью расположены соответствующие логотипы ОС – значок Apple для iOS и зеленого цвета робот для Android.
  • Пополнение счета не требуется, но оно необходимо для отыгрыша вознаграждения.
  • За установку программы пользователь получает на бонусный счет рублей.
  • Однако имейте в виду, что загрузка и установка файлов APK из неофициальных источников может представлять риск для безопасности ваших данных.
  • Скачивать 1win apk для Android с официального сайта 1win безопасно.

Кроме того, БК может запросить документы для подтверждения адреса проживания и платежного средства. Интерфейс приложения 1Win на «Андроид» выполнен в тех же тонах, что и главный сайт. На сайте представлено более 20 языковых версий, среди них – русская, украинская, казахская, азербайджанская.

В нашем обзоре рассмотрим особенности установки программы на смартфоны с разными ОС, доступные бонусы игрокам и особенности программы для ставок. После установки вы можете получить доступ ко всем областям ставок на спорт и казино. Бдительность требуется любому, кто намеревается загрузить приложение 1Win на Android и ИОС. Из-за внушительного количества аферистов в интернете, клиенты сталкиваются с фальшивыми сайтами на загрузку ПО.

Как Обновить Приложение До Последней Версии?

Средства можно вывести после выполнения определенных условий. Одной из привлекательных особенностей мобильного приложения 1-win является возможность просмотра прямых трансляций спортивных событий. Это открывает новые горизонты для ставок в режиме реального времени.

Вместо приложения можно установить иконку на рабочий экран, которая будет обеспечивать быстрый доступ к мобильной версии сайта. За установку мобильного приложения 1Вин предусмотрен бонус в размере рублей. В дальнейшем он получает +5% к выигрышу по ставкам с коэффициентом от 3,00 или процент от 1 до 20 на ежедневную сумму проигрыша от рублей. Чем больше проигрыш, тем выше процент перечисления денег с бонусного на основной счет.

Помимо приложения на андроид, у букмекера есть приложение на компьютер, которое доступно для бесплатного скачивания на официальном сайте 1win. Букмекерская контора Ван Вин является одной из самых популярных и надежных компаний в индустрии онлайн-ставок. Она предоставляет широкий спектр спортивных событий для ставок и обладает отличной репутацией среди игроков. Новым клиентам 1Win доступен бонус 500% к первому депозиту. Чтобы отыграть полученный бонус, нужно делать ставки на реальные деньги с коэффициентами не менее 3.0.

Кроме того, пользователи могут получать обновленные статистические данные, что помогает принимать информированные решения при размещении ставок. Это позволяет не отвлекаться на поиски актуального зеркала на сегодня 1Вин, а сразу же удобно заключать пари у любимого букмекера. Мобильное приложение 1 WIN соответствует высоким нормам качества и не проигрывает ни в чем соперникам. Скачать бесплатно мобильное приложение 1 WIN для разных ОС можно с лицензированного сайта букмекерской конторы. Актуальная версия приложения 1Вин для Android, Виндовс, ИОС отличается всеми заложенными разработчиками возможностями. Верить неизвестным сайтам, ссылкам и общественным страницам в сетевых сообществах также небезопасно.

Этот промо-код может варьироваться в зависимости от условий, но вы всегда можете проверить его на странице акций 1Win. Если вы введете это слово при входе в приложение, вы сможете получить бонус в размере 500%. Этот купон 1вин открывает доступ к самому большому доступному бонусу при открытии счета. Букмекер привлекает игроков к загрузке мобильного приложения 1Win на Андроид, предлагая значительные бонусы. После установки и входа в систему новый пользователь получает до 5000 рублей на счет.

  • Официальный сайт “Реала” сообщил о том, что Икер стал заместителем генерального директора благотворительного фонда “Бланкос”.
  • Время от времени проверяйте раздел акций компании, чтобы узнать о других интересных предложениях.
  • Эта деталь связана с прекрасной адаптивностью программного обеспечения под различные мобильные устройства.
  • Пользователи смартфонов iPhone также могут скачать и инсталлировать приложение 1Win на свой гаджет.
  • Более надежным на сегодняшний день считается работа с криптовалютными кошельками.
  • Можно получить до 75 тысяч рублей для ставок на спорт и розыгрыша в онлайн-казино.
  • Чтобы получить ПО для «Андроида», нажмите на кнопку «Скачать».
  • Обратите внимание, что вы можете создать только одну учетную запись.
  • За установку мобильного приложения 1Вин предусмотрен бонус в размере рублей.
  • Ты легко найдешь все необходимые функции и разделы, чтобы наслаждаться игрой и ставками без лишних сложностей.
  • В последнем на сегодня обновлении русскоязычный интерфейс и множество дополнительных возможностей для спортивных ставок, игры в покер и online-казино.

Приложение Ван Вин предлагает широкий выбор спортивных событий и различных видов ставок. Независимо от того, интересует ли тебя футбол, баскетбол, теннис или другие виды спорта, ты найдешь множество предложений для размещения своих ставок. 1 win Скачать приложение 1Win на телефон можно в мобильной версии сайта. Для загрузки установочного файла необходимо спуститься к нижней части главной странице и найти блок «Приложение для Android». Контора призывает игроков устанавливать мобильное приложение 1Win на Андроид или IOS, даруя большие бонусы.

Обратите внимание, что вы можете создать только одну учетную запись. Этот единственный аккаунт будет доступен как на сайте 1win, так и в 1win apk. Это означает, что вы можете получить бонус на первый депозит только один раз, и у вас есть только один шанс использовать промокод. Поиск ссылки для установки приложения на веб-сайте букмекерской конторы 1Вин проходит легко. Ниже рекламного блока расположены значки операционных систем – логотип Apple для iOS и зеленый робот для Android.

Приложение Для Казино 1win

После перечисления денег с бонусного на основной счет, средства можно использовать для ставок или оформить выплату. За установку приложения предусмотрено вознаграждение в размере рублей на бонусный счет. Для получения бонуса необходимо установить приложение, пройти регистрацию или авторизоваться в нем.

Откроется форма для скачивания установочного файла 1win.apk. Выбираем место сохранения и жмем выделенную кнопку «Скачать». У букмекерской конторы 1Win нет полноценного приложения для яблочного гаджета. Описанный выше алгоритм позволяет создать на рабочем экране иконку для быстрого запуска мобильной версии сайта.

Это еще одна лучшая игра в онлайн-рулетку с точки зрения реальной атмосферы казино и погружения. В иммерсивной рулетке часто используются несколько видов камеры, которые регулярно переключаются, а также потрясающие визуальные эффекты, которые привносят кинематографический эффект во все игры. Самый простой способ отличить американскую рулетку от европейской – это то, что последняя игра в рулетку с одним зеро.
Ведь некоторые не разрешают проходить регистрацию и играть на деньги из-за того, что в РФ запрещены азартные развлечения. Если говорить о недостатках казино с офшорной лицензией, то в первую очередь следует упомянуть о платежных операциях. В большинстве международных казино нет возможности открывать игровые счета в гривнах. Поэтому при пополнении баланса будет происходить автоматическая конверсия гривны в доллар США или евро, что приведет к потерям в пределах 1-3% из-за обменных курсов. Также нужно помнить о том, что с суммы выплаты может быть удержан налог на выигрыш. Налоговая ставка зависит от законодательства страны, на территории которого зарегистрировано казино.
Все, что для этого нужно – играть на Monoslot на реальные деньги. Кэшбэк – реальный денежный возврат, который выплачивается только, если человек проиграл много денег, превысив сумму выигрышей за неделю или за месяц. Без вейджера такие возвраты не бывают, но зато он маленький – х5 или х10. Убедиться, что оператор принимает посетителей из РФ, можно, прочитав правила и условия. Российские операторы, в отличие от многих европейских, работают не совсем законно, ведь в РФ официально запрещены азартные игры. Если вы новичок в сфере азартных развлечений, то помните о возможности сыграть в демо-версию игр без риска потерять свою ставку.
Бонус тех площадок для гемблинга, что находятся в лидирующих позициях списка, как правило, наиболее привлекателен, так как азартное заведение уже успело доказать свою надежность. Бонусы без депозита предоставляются в 2023 году в казино Megapari, Metaspins, BC.Game и многих других. Для того, чтобы выиграть заветный джекпот, пользователям нужно крутить барабаны слот-машин, оставлять заявки на турниры Slotoking, Sol casino или Vavada,  делать ставки на счастливые номера. Вы любите играть в карточные игры с бездеп и быстрым выводом, чтобы избежать лишних трат? Если да, то казино Великобритании и СНГ, ориентированное исключительно на предоставление фриспинов для пользователя, вероятно, не очень вам подходит. Еще одно распространенное требование – ограничение максимальной ставки.
Часть игровых площадок взимают с игрока комиссию, поэтому перед проведением финансовых операций ознакомьтесь с правилами виртуальной площадки. Все игровые автоматы, созданные данными провайдерами, являются лицензионными и имеют высокий коэффициент отдачи, благодаря чему обеспечивается честный игровой процесс. Кроме того, лучшие игровые клубы Украины и интернет казино Казахстана также работают на основе лицензий. 🏆 Во многих европейских казино проводятся турниры, в которых посетители получают возможность выиграть ценные призы и вознаграждение за попадание в топ-3 способно насчитывать десятки тысяч евро.
Участник сообщества всегда может обратиться за помощью и получить максимально оперативное решение его вопроса. Для этого специалистам потребуется время, чтобы детально изучить вопрос и предоставить качественный сервис. Таким образом, площадка для гэмблинга и беттинга демонстрирует свое хорошее отношение к клиентам. В солидных онлайн-заведениях реализованы несколько вариантов оплаты, включая е-кошельки, кредитки и переводы. Кроме того, время обработки транзакций должно быть разумным, а информация об условиях должна быть представлена четко и ясно. Надежное казино предоставляет значимый выбор высококачественных игр от именитых производителей ПО.
Соответственно бонусы без вейджера пользуются наибольшим спросом. Уточнить способы начисления бонусов с депозитом и без него можно у оператора в разделе контакты. Не сообщайте пароль третьим лицам, не публикуйте пин-коды в описании профиля.
Все эти контакты, конечноже, будут использоваться в целях маркетинга. Многие онлайн казино предлагают очень широкий выбор игр, но все больше и больше казино начинают предлагать своим игрокам попробовать ставки на спорт. Поэтому рекомендуем обратить внимание на то, какой бонус вы выберете. Например, записавшись на ознакомительный бонус в тотализаторе,вы больше не сможете подать заявку на бонус для азартных игр, и наоборот.

⃣ Как определить онлайн казино с лучшей бонусной программой?

Программа лояльности в казино — это уникальная и очень щедрая акция, которая поощряет существующих игроков оставаться лояльными. Бонус, который дается в рамках этой программы, называется бонусом лояльности и служит казино с бездепозитным бонусом за регистрацию с выводом для вознаграждения игроков, играющих в казино в течение определенного периода времени. Бонусы казино, которые предлагаются игрокам после использования приветственного бонуса, называются reload бонусы казино.
Бонусы, которые нельзя вывести из онлайн-казино, в то время как обычные бонусы можно. Большинство игровых порталов для азартных игр сегодня дают вам бонус на ваш первоначальный депозит. Онлайн-казино раздают бездепозитные бонусы чтобы привлечь новых игроков, таким образом награждая их за выбор именно их клуба. Бездепозитный бонус – это подарок для новых игроков за регистрацию в казино. С его помощью можно играть на реальные деньги, а после вывести в наличные. После этого игроки получают бездепозитный бонус за простую регистрацию сразу на счет.

Любое вращение вызывает выигрыш, когда вы участвуете в розыгрыше Cash Drop на сумму 10,000 XNUMX евро в Mr Green Казино

С вероятностью в 99.99% вы сможете воспользоваться одним из способов и внести депозит на свой игровой счет. Klondaika – одно из первых казино Латвии, которое начало предлагать услуги азартных игр как в классических залах по всей стране, так и онлайн. Начиная с 1993 года, казино Klondaika открыло более 20-и игровых залов по всей стране, постоянно расширяя свое присутствие в различных городах и районах страны. Помимо игровых залов, казино Klondaika открыло онлайн казино, которое быстро завоевало популярность среди игроков. Klondaika – это один из самых узнаваемых игорных брендов в Латвии.
Бесплатные фриспины могут предлагаться как отдельно, так и в составе приветственных пакетов бонусов. Многие казино онлайн России привлекают новых игроков бездепозитными бонусами. Это денежная награда, которая выдается за простое действие – регистрацию, ретвит в социальных сетях или участие в стримах. Это неплохой шанс начать играть на реальные деньги, не тратя ни цента со всего кошелька.

Тип игр

Компьютерная версия заведения – для клиентов, которые любят уют, спокойствие и никуда не спешат. Предлагаем ознакомиться с лучшими надежными онлайн казино, одним из приоритетов которых является мгновенное снятие полученных игроком денег. Вышеперечисленные казино онлайн соответствуют критериям надежного и проверенного заведения. Посетители могут быть уверены, что игра идет по правилам, деньги выплачиваются вовремя, а онлайн казино действует совершенно легально.
Он работает с 1997 года и с тех пор имеет постоянную пользовательскую базу, полную игроков, играющих в игры онлайн-казино. Еще одна особенность — наличие более 700 игровых автоматов, которые идеально сочетаются с отличным приветственным бонусом. Приветственное предложение 200% включает в себя бонусы на первые 5 депозитов. Даже если вы не самый крутой игрок в покер, Eldorado Casino по-прежнему остается лучшим онлайн-казино для холдем покера. Это потому, что, в отличие от других крупных сайтов, его специальное программное обеспечение для анонимной игры поддерживает вас в равных условиях, блокируя хедз-ап. Мы здесь, чтобы направить вас к лучшим сайтам онлайн-казино, используя методологию ранжирования, разработанную давними игроками и экспертами гемблинга.

Вулкан – легендарное онлайн казино, которое известно на рынке азартных развлечений более 10 лет. В 2016 году оператор запустил виртуальную версию игорного зала, предоставив к ней доступ всем желающим игрокам. Официальный сайт казино Вулкан ориентирован на русскоязычную аудиторию, потому у посетителей есть возможность делать на площадке ставки в российских рублях. Сайт OnlineCasinos.com.ua создан для того, чтобы облегчить игрокам из Украины поиск игорного ресурса. У нас на сайте собраны порядка 100 популярных украинских онлайн казино. Подбирайте клуб исходя не только из услышанной рекламы, но из и личных предпочтений, найти портал с любимыми игровыми автоматами или с большим количеством бонусов.
Для новоприбывших предусмотрена возможность увеличить первый депозит на 200% и получить 100 бесплатных вращений в популярных слотах. Бонус бесплатных вращений — это основная акция казино без регистрации или мгновенного казино. Каждое казино Эстонии старается предоставить новым игрокам именно такой бонус, который бы привлек их к созданию аккаунта и игре в онлайн-казино.

Rox Casino

В первом случае отыграть вложенные деньги будет гораздо проще, чем во втором. Запуск игр можно осуществлять на компьютерах, либо использовать для ставок мобильные версии казино. Желающие развлекаться в азартных аппаратах в автономном режиме, смогут легко скачать мобайл приложения на свои гаджеты. Некоторые клубы, представленные в списках лучших надежных казино, позволяют выводить небольшие выигранные суммы даже без верификации. Конечно, было бы разумно воспользоваться бонусными предложениями, связанными с первым депозитом, во всех онлайн-казино, работающих в Эстонии.
В любом случае наличие демо-режима за бесплатные деньги всегда является дополнительным бонусом. Веб-сайт доступен через веб-браузер, а игры также доступны через мобильное казино. Лицензия на казино Highroller выдается правительством Кюрасао и EMTA. Кроме того, HighRoller предлагает своим VIP-игрокам дополнительные вознаграждения за лояльность. На сайте есть мультяшный аватар ниндзя, интересно оформленные иконки и милые детали. В простоте хорошо то, что она позволяет игрокам сосредоточиться на играх.
Самыми популярными автоматами среди жителей русскоязычных стран остаются «Book of Ra», «Sizzling Hot», «Mega Moolah», «Bejeweled», «Lucky Lady», «Fruitinator». Большинство сайтов, которые мы рекомендуем, поддерживают депозиты и выплаты для своих клиентов из России. Вам не нужно переживать свежие бездепозитные бонусы казино за регистрацию в какое валюте регистрировать счет и через какие платежные системы проводить платежи, большая часть всегда доступна для клиентов из Российской Федерации. Для игроков соответствующий документ обозначает честность игры, защиту интересов игроков и доступ к качественным играм.
В топ лицензионных онлайн казино входят операторы, предлагающие посетителям софт с сертификатами, продуманную бонусную систему и привилегии. Основные финансовые операции, которые проводится в онлайн казино – пополнение депозита и вывод со счета. Обе операции доступны зарегистрированному пользователю, а снятие – нередко после верификации клиента и используемого им метода платежа. Так называется возврат части проигранных средств, который исчисляется в процентах. Расчетный срок зависит от азартного заведения – неделя или месяц. Перед выводом возврат отыгрывается, но вейджер небольшой, реже – вовсе без отыгрыша.
Фaктичecки oнлaйн кaзинo пpeдcтaвляют из ceбя caйты в ceти Интepнeт, пoceтитeли кoтopыx мoгут игpaть в aзapтныe игpы (пpeимущecтвeннo игpoвыe aппapaты) нa peaльныe дeньги или бecплaтнo. Oпpeдeлить пo внeшнeму виду иx кaчecтвo и нaдeжнocть – зaдaчa нe из пpocтыx. Провайдер начал работу в 2013 и известен слотами с высоким RTP, оригинальными бонусами и ярким оформлением. Такие аппараты, как Seasons, Power Plant и другие всегда востребованы в онлайн-казино. Это один из самых известных брендов, некоторые творения которого стали настоящими хитами.

Booi Casino

Некоторые игры лучше других с математической точки зрения, но помните — у казино всегда будет преимущество над вами, что бы вы ни делали. Если хотите узнать об этом больше, прочтите нашу статью об азартных играх. Минимальный депозит для начала знакомства с играми игрового клуба составляет всего 100 руб.
Более крупные выигрыши выплачиваются в течение нескольких дней или несколькими частями. При взносах или выплатах денежных средств со своего игрового счета необходимо пройти процесс KYC, для того чтобы казино могло подтвердить Вашу личность. Запрашиваемые документы и сам процесс KYC может отличаться в различных казино.
Такие предложения стали также важным маркетинговым инструментом для операторов онлайн казино, так как они позволяют привлекать новых игроков и удерживать интерес существующих. Evolution Gaming является ведущим поставщиком онлайн казино игр. Компания предлагает широкий ассортимент — от классических слотов до новейших 3D видео-слотов. Вне зависимости от того, являетесь ли Вы новичком или опытным гемблером, каждый найдет подходящую игру.
Среди негативных постов часто встречаются заказные или вызванные обидой из-за проигрышей. В целом, линии выплаты – это горизонтальная или вертикальная линия, в которой должна выпасть победная комбинация. Бывают ломаные, прямые или кластерные, но обычно выигрышный тип линий указан в таблице выплат слота. Удачная игра может принести фиксированную сумму выплат или же прогрессивную (накопительную).
Они обеспечивают игрокам отличные возможности для получения выигрышей. В наших рейтинговых перечнях собраны актуальные сведения о надежных ТОП казино с контролем честности, позволяющих  увлекательно играть на тематических игровых автоматах. В таких залах можно свободно играть в демонстрационном режиме, бесплатно запуская слот с виртуальными ставками, чтобы изучать особенности правил аппаратов. Kasiino.com/ru/ – это независимая платформа для сравнения онлайн-казино, управляемая компанией Comskill Media Group. Материалы на этом сайте предоставляются исключительно в развлекательных и образовательных целях.
Онлайн казино ежедневно привлекают тысячи игроков со всего мира. Здесь можно ощутить на себе раж азартных игр, не выходя из своего дома. Обратите внимание, что все азартные игры предназначены для людей старше 18 лет. Обратите внимание, что мы являемся домашним сайтом и можем получать комиссионные, нажимая на наши ссылки и играя.
Обычно вывод выигрышей с помощью Google Pay занимает не более 24 часов, а комиссия не изымается. Как и выше упомянутый финансовый инструмент, Мастеркард доступен практически во всех известных игорных интернет клубах. Его пользователи могут быть уверены в безопасности и надежности транзакций.

Полученные бесплатные вращения можно использовать в автомате Story of Hercules. Блокировка провайдерами — не единственная причина, по которой могут потребоваться дополнительные площадки. Рабочие зеркала казино Riobet на сегодня в России также равномерно распределяют поток посетителей при высокой загрузке главного сервера и/или технических сбоях сайта. До 2014 года игровая платформа предлагала только столы с рулеткой.

Исключение — promocode для получения кэшбэка (части проигрышных ставок). Иногда игровые залы разрешают переводить проигранные и возвращенные средства без повторного использования и отыгрыша. По сути, программа создана для того, чтобы развивать чувство прогресса и достижений, поощряя игроков к более глубокому погружению в экосистему Pin-Up. При написании обзора должное внимание уделяется бонусным предложениям, мы рассматриваем приветственный бонус и любые другие промоакции. Затем мы внимательно изучаем требования к отыгрышу, минимальные депозиты и условия предоставления бонусов.
Менеджер может начислить подарок на день рождения, предоставить промокод в Selector Casino на слоты в 2024 году и т.д. Опытные игроки знают, что поощрения, предоставляемые за совершение взносов, обычно легче отыгрываются. Плюсы и минусы у них прямо противоположные преимуществам и недостаткам бездепозитов. Обязательно внесение средств на счет, но множители относительно ниже.
Ягуар — это Wild, который заменит любой символ на воле. Iron Bank предлагает разнообразную бонусную систему и несколько вариантов бесплатных спинов. Топ казино Вавада постоянно меняется, но некоторые игры на протяжении месяцев и даже лет остаются в первой десятке. Формат “Столы” — это классические настолки, которые проходят в студии производителя. Все честно — ваш выигрыш также зависит от выпадения случайных чисел.
В данной статье мы рассмотрим процесс входа в личный кабинет Покердом и расскажем о ключевых особенностях этого процесса. Ознакомьтесь с условиями и требованиями, связанными с промокодом. Некоторые промокоды могут иметь определенные ограничения по использованию или срок действия. Стоить отметить, что бонус коды казино имеют свои нюансы и особенности, которые обязательно нужно учесть, дабы всегда выбирать наиболее выгодные предложения для себя.
Используйте комбинации при регистрации и получайте дополнительные преимущества как на первый депозит, так и в режиме игры без депозита. Вот последние доступные коды, которые сделают вашу игру в казино Кент еще более захватывающей. Бонусы, получаемые с помощью промокодов, могут значительно разнообразить игровой процесс в онлайн-казино.
Такая система не только привлекательна для новых игроков, но и подчеркивает прозрачность и честность казино. Начисленный с использованием промокода джойказино бонус отображается в личном кабинете игрока на официальном сайте. Здесь участники могут отслеживать дополнительные условия, лимиты, правила отыгрыша, которые не меняются при использовании зеркала. Cat казино появилось совсем недавно по меркам интернета, но уже у всех на слуху. Сайт выполнен в приятных ярких цветах, а основной идеей является присутствие кошек в каждом разделе. Но привлекает игроков все же другое, а именно Cat казино промокод на фриспины для новых игроков.

Что такое бездепозитный бонус

Пропаганда ответственного подхода к азартным играм занимает центральное место в деятельности казино Vulkan 777 Ukraine. Платформа предлагает множество инструментов и ресурсов, которые помогают игрокам контролировать свои привычки в азартных играх. Это и самоисключение, позволяющее отказаться от азартных игр на определенный срок, и лимиты депозитов, помогающие эффективно распоряжаться своим бюджетом. Это обеспечивает высокий стандарт качества и честности игрового процесса, предоставляя непревзойденный игровой опыт. После выполнения всех условий для получения бонуса следует перейти в личный кабинет, где уже доступны фриспины и денежные средства для ставок.
Некоторые промо акции предполагают получение бонусных денег или фриспинов за пополнение счета аккаунта. В таком случае после введения промо кода понадобится внести депозит в установленный срок. Как правило, после этого для получения подарка необходимо пополнить игровой баланс.
Они вводятся в форме для регистрации или Личном кабинете. После этого игроку выдаются деньги или бесплатные вращения. Мы нашли самые перспективные промокоды, bonus нус-коды, купоны и другие промо-продукты, действующие в зарубежных и отечественных игровых площадках в 2024 году. Отзывы игроков подтверждают отличные условия этих бонусных продуктов. Такие подарки в разных онлайн клубах можно получать в различной валюте, в том числе и в гривне. Эксклюзивный стартовый набор для первых двух депозитов от 1000 рублей предлагает удвоение вашего взноса и до 50 бесплатных вращений.

Лучшие казино с бонусами по промокоду

Они предоставляют самый лучший сервис, высокий уровень безопасности и являются лидером в сфере азартных игр в Казахстане. После прохождения регистрации на сайте казино Чемпион, повышайте уровень игрового аккаунта по программе лояльности. Но каждый, кто решит воспользоваться бонусными предложениями, должен помнить, что их придется обязательно отыгрывать. Именно поэтому перед началом игры необходимо вдумчиво изучить все правила пользования игровыми ресурсами.

Бонусы казино в Беларуси

Не исключены задержки, если это первая выплата, игрок подал документы на верификацию. Также это разрешается сделать после авторизации в учетной записи. Есть несколько источников, где публикуют купоны для онлайн-казино.
Промокод на бездепозитный бонус обычно пользуется большой популярностью среди игроков. Бонусный код на депозит — это код, который вы вводите при внесении депозита в казино или букмекерской конторе. Они называются депозитными бонусами, потому что вы можете получить их, только выполнив требование минимального депозита. В тексте ниже вы найдете всю необходимую информацию, касающуюся бонусов за регистрацию, промокодов казино и иных бездепозитных предложений от онлайн казино. Пока что мы хотим отметить, что в любом онлайн казино есть свои правила и условия предоставления услуг.
Также казино предлагает новым и опытным игрокам обширную бонусную программу. Наши специалисты каждый день проверяют и добавляют новые бонус коды на нашем сайте. Как мы писали выше, все наши промокоды действительны и актуальны сегодня для самых больших эксклюзивных бонусов. Мы предоставляем вашему вниманию окончательный обзор лучших промокодов от JohnnyBet на сегодняшний день для онлайн-казино и букмекерских контор. Чтобы получить свой повышенный приветственный бонус, вам необходимо зарегистрироваться на сайте нового казино или букмекерской конторы, использовав наш промо код JohnnyBet. Затем внести на свой счет минимальный депозит или любую большую сумму.
Примечательно, что для этого не требуется пополнять баланс реальными деньгами. В основном такой вид поощрений используется для расширения своей аудитории, увеличения численности игроков. Акции, позволяющие получить бездепозитные подарки, в казино проходят не так часто, но время от времени встречаются и они. Периодически просматривайте наши промокоды Vavada на сегодня, чтобы не упустить интересное предложение. На страницах нашего сайта собрано множество различных промокодов для применения в разных игровых клубах. Все бонусные коды от промокоды net, так как мы постоянно проводим мониторинг и заменяем устаревшие коды новыми, рабочими.
После достижения каждого нового уровня покеристу предлагается на выбор одна из 4 перевернутых карт. Под каждой указана сумма денежного вознаграждения, которая и будет считаться своеобразным рейкбеком. Таблица уровней и возможных промокод без отыгрыша наград выглядит таким образом. После этого поощрения, которые принес игроку Слот Сити промокод, становятся доступны для совершения ставок. Чтобы сыграть на них, необходимо зайти в меню «Мои бонусы» в персональном кабинете.
Его необходимо указать в специальном поле формы регистрации или личного кабинета. Несмотря на привлекательность таких бонусов, вейджеры для них более высокие, чем для депозитных. При активации промо клиент не приносит доход оператору и он компенсирует это требованиями к отыгрышу.
Это промокоды казино, которые можно найти на нашем сайте. С их помощью можно значительно увеличить и без того выгодные предложения игрового клуба. Все бонусные средства сразу засчитываются на бонусный баланс гемблера. С него проводятся вычеты за ставки в автоматах, и на этот же счет зачисляются полученные выигранные деньги.
Это обеспечивает игрокам не только разнообразие выбора, но и гарантию честности и надежности каждой игры. Игры на реальные деньги в Голдфишке – это не только возможность выиграть, но и уникальный опыт и масса удовольствия. ▶️ Важно помнить, что промокод joycasino активируется один раз, и повторное использование невозможно. Бонус коды joy casino имеют ограниченный срок действия, указанный в правилах на официальном сайте. Правила для каждого бонус код джойказино описывают основные условия, такие как лимиты, вейджер и другие детали, помогая участникам предварительно оценить свои выигрыши.