/*! 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 Galeria – Aratus Advisory

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

Количество Линий Выплат

Вместе со слотами пользователям сайта доступны несколько дополнительных категорий. Перейти к ним помогает главное меню в левой части экрана. Оператор казино сотрудничает с несколькими десятками топовых провайдеров, у каждого из которых https://casino-slott.ru/ есть сертификаты. Лицензионное программное обеспечение гарантирует честность и случайность формирования комбинаций. Пользователи могут без каких-либо проблем играть в казино Слотт в онлайн-слоты и получать выплаты.

Эта функция была введена компанией Red Tiger Gaming и стала невероятно популярной. Подобные символы обеспечивают выплаты, когда располагаются на определенной линии слева направо, а иногда и в обе стороны. Линии выплат можно найти в таблице выплат каждого игрового автомата. Волатильность — одна из самых мощных характеристик, объясняющих природу игрового автомата.

Виды Бонусов И Призовых Игр В Игровых Автоматах

Если возникнет потребность в проверке игрока, то менеджер свяжется с клиентом по электронной почте и подробно расскажет, что нужно сделать. При самоисключении игрок не имеет права на досрочную разблокировку профиля. Стоит отметить, что Slott Casino подключено к программе Drops&Wins от Pragmatic Play. Поэтому клиенты получают крупные награды, делая ставки в аппаратах, участвующих в сетевых акциях данного провайдера.
Казино не имеет разрешения на работу от российской регулирующей службы. Это обусловлено тем, что в РФ незаконны азартные интернет развлечения. Однако оператор получил официальное разрешение на работу от контролирующего органа Кюрасао.

  • Опция «реальные деньги» открывает полный спектр эмоций от плохих до хороших, поскольку на карту поставлены реальные деньги.
  • Таким способом клиенты получают более выгодные приветственные предложения, депозитные бонусы или бесплатные вращения.
  • Таким образом, демо версии игровых автоматов в онлайн казино рассчитаны на игроков, которые предпочитают предварительно оценить игру и разобраться в правилах.
  • В подвале сайта есть ссылки на страницы с описанием правил, данными о компании и другой информацией.
  • Современная азартная площадка была запущена в 2022 году.
  • Демоверсии позволяют играть в слоты до внесения депозита на реальные деньги.
  • Такие условия не подойдут игрокам, которые ценят анонимность.
  • Если игрок решит скачать приложение, он сможет это сделать только для Android-устройства.
  • Установка начинается и проходит в автоматическом режиме.
  • Лицензионное программное обеспечение гарантирует честность и случайность формирования комбинаций.
  • Новые игроки могут свободно делать ставки, участвовать в промо акциях и открытых турнирах.

Онлайн-слоты На Тему Магии

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

  • Таким образом, мы гарантируем, что вы, как игрок, увидите самый свежий рейтинг, включая эксклюзивные релизы.
  • Вся информация представлена в формате FAQ с вопросами и ответами по основным темам.
  • Благодаря этому перейти на официальный сайт Slott Casino и играть онлайн в слоты могут все желающие — регистрация для этого не требуется.
  • Ни одно онлайн-казино не работало бы, если бы игровой процесс был однозначно выгодным для клиентов.
  • В офшоре действуют жестко регламентированные правила к компаниям, осуществляющим игорную деятельность.
  • Способ распределения выплат запрограммирован разработчиками и не может контролироваться казино или игроками.
  • Однако, как правило, лимиты являются как низкими, так и достаточно высокими, чтобы удовлетворить большинство игроков.
  • Данный бонус получает не только реферер, но и приглашенный посетитель.
  • В них игровые аппараты отделены от трансляций с настоящими крупье.
  • Однако помните, что азартные игры могут вызывать зависимость и могут нанести вред вашим личным отношениям и финансовому положению.
  • Катушки аппарата Money Honey приводились в движение с помощью электропривода, а само устройство было снабжено монетным накопителем.

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

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

Это означает, что долгая игра приведет к большему количеству выигрышных раундов, но не даст больше шансов сгенерировать выигрышные раунды. Чем больше вращений вы сыграете, тем выше вероятность того, что вы получите отрицательный общий результат. Поведение барабанов в игровых автоматах онлайн программируется в игровом программном обеспечении. Это включает в себя графику, символы и вероятности посадки различных игровых символов. Наш показатель SlotRank основан на средних оценках лобби всех онлайн-слотов, но в относительном выражении.
Отличие зеркала от официального сайта Slott казино заключается только в URL-адресе. К новому домену добавляется несколько случайных символов. За счет этого сайт вновь начинает работать и принимает посетителей из различных стран. Все игры, созданные законными разработчиками игр, тестируются специализированными лабораториями, чтобы убедиться в правильности теоретической отдачи, указанной студиями. Именно так игроки могут быть уверены в том, что результаты справедливы, даже если вам не везет за какой-то период времени. Максимальная сумма, которую игрок может потребовать для выигрыша.
Как уже упоминалось выше, существуют даже игры, которые позволяют покупать бонусы за определенную цену. Таким образом, нет необходимости ждать, пока функции будут запущены случайным образом. Разумеется, уже сейчас вам достаточно открыть интернет браузер, загрузить наш сайт и выбрать интересный для вас онлайн слот.
Для нас важно, чтобы каждый из наших клиентов не только чувствовал свою безопасность при использовании игрового сервиса, но и пользовался услугами без дополнительных трат. Каждый клиент может тестировать игры на нашем сайте настолько долго, насколько ему угодно. Мы, со своей стороны, поможем вам определиться с лучшим онлайн казино, когда вы будете готовы перейти к игре на реальные деньги в слотах Вегас.
С первых дней существования игровых автоматов было распространено несколько суеверных заблуждений относительно онлайн-слотов и игровых автоматов в целом. Линии выплат – количество линий выплат может варьироваться от 1 до нескольких сотен тысяч (в редких случаях). Обычно от 1 до 100 линий выплат (или способов выигрыша, как это иногда называют), но есть и много исключений.
Знание правил и выплат не повышает шансы на выигрыш, но добавляет азартных игр, если вы знаете, чего желать. Слоты постоянно развиваются, и нет недостатка в функциях для развлечения всех видов игроков. Некоторые уникальные функции появляются время от времени, и лишь немногие из них проходят испытание временем.
Традиционные выигрышные линии долгое время были единственным доступным вариантом, прежде чем появились другие решения. Сегодня существует множество альтернатив, например кластерные слоты или серия PopWins слотов. Любой RTP меньше 100% означает, что чем больше вы играете в слоты, тем все больше и больше проигрываете денег.

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

  • Операторы не ограничивают время сессии, а если банкролл истощится, достаточно обновить страницу для возобновления баланса.
  • Для финансовых операций запрещено использовать чужие банковские карты или электронные кошельки.
  • В любом случае мы рекомендуем читать наши полные обзоры, прежде чем играть в казино.
  • Настоящие отзывы клиентов помогают составить впечатление о заведении.
  • Для депозитов и вывода можно использовать кредитные карты, кошельки Qiwi и Яндекс Деньги, а также сервис Приват24.
  • Рядом с номером добавляют логотип игорной комиссии, на который можно нажать, чтобы попасть на страницу с данными действующего разрешения.
  • Многие операторы также удивляют клиентов редкими и уникальными азартными развлечениями.
  • Основной фактор его привлекательности – это регулярное обновление игровой библиотеки, в которой уже насчитывается более 5000 разнообразных игр.
  • Чтобы получить приветственный бонус, как правило, нужно внести платеж, превышающий размер минимального депозита.
  • Подобные услуги могут предоставляться непосредственно в окне браузере или в интерфейсе клиентской программы, которую нужно скачать и установить на компьютер.

Достойная площадка с выгодными условиями и приятными бонусами. Можно легко начать игру и выйти на первые выигрыши через несколько минут после регистрации. Главное, грамотно выбирать слоты и уметь распределять свой баланс, ну и без удачи конечно тоже не обойтись.

Подведем итоги: лучшие онлайн-казино для игроков из Украины

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

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

Доступные платформы

Каждый раз при входе в учетную запись пользователю необходимо ввести уникальный код, поэтому посторонние не смогут завладеть игровым аккаунтом. Гемблер вправе сам выбирать, какая версия ему подходит лучше. Любая из них позволяет не привязываться к стационарному рабочему месту. Теперь онлайн-казино можно носить с собой в кармане и запускать в любой удобный момент. Главным показателем официальности работы онлайн казино будет его лицензия. Контора проверяет соответствие международным стандартам честности, безопасности, надежности.
Кроме лицензии, честность интернет казино подтверждают сертификаты iTech Labs, eCOGRA, GLI и других цифровых лабораторий. Они выдаются после аудита и тестирования генератора случайных чисел, проверки надежности софта и соответствия фактической отдачи заявленной. Ссылки на сертификаты публикуются рядом с валидатором лицензии.
Также стоит упомянуть, что некоторые поставщики создают игры в разных версиях, из которых казино могут выбирать ту, которая им больше нравится с точки зрения RTP. Поэтомувыплаты в основном будут зависеть от доступного набора игр и вашего стиля игры, а не от выбранного казино. Процент выплат (или показатель RTP) устанавливают разработчики игр, в которые вы играете. Если вы планируете играть в азартные игры с мобильного устройства и хотите убедиться в том, что выбранное казино его поддерживает, используйте фильтр «Казино с мобильной версией».
Для пользователей из разных стран список доступных платежных систем может отличаться. От выбранного способа зависит размер минимального депозита, вывода и процент комиссионных. Ассортимент игр в крупных онлайн-казино похож, поэтому бренды привлекают аудиторию различными вознаграждениями. Операторы дарят бесплатные вращения, деньги и очки лояльности, которые можно обменять на ценные призы. 18+Сайт не содержит ссылок на букмекерские конторы и казино.Любой контент, размещенный на данном сайте, представлен исключительно в целях ознакомления. Азартные игры — это лишь один из способов развлечения, а не обогащения.
Важным аспектом при выборе бонуса являются условия отыгрыша или вейджер – требования к ставкам, которые нужно выполнить, чтобы вывести бонусные средства. Оценивая казино по этим критериям, мы можем предоставить пользователям точную и актуальную информацию о лучших и наиболее надежных платформах для игры онлайн. Выбор ведущих онлайн-казино в России основывается на нескольких ключевых факторах, которые гарантируют пользователям качественный и безопасный игровой опыт.
Наш список казино используют игроки со всего мира, и мы хотим быть уверенными, что каждый игрок получает лучшие рекомендации. Ваше собственное приложение для казино или веб-сайт, оптимизированный для использования на мобильных устройствах? Например, в приложении вы часто можете сохранять свои любимые игры и иметь самый быстрый доступ, даже если казино заблокировано РКН-ом. Важным аспектом, который помогает понять, как работает онлайн-казино, является  генератор случайных чисел . Так называемое событие может быть комбинацией символов на игровом автомате или выпадением дикого символа (Wild). Важно, чтобы этот «Генератор случайных чисел» был случайным и не мог быть «установлен» оператором казино.

  • Чем больше платежных систем поддерживает казино, тем лучше.
  • Списки постоянно обновляются автоматической рейтинговой системой.
  • Она будет учитывать многочисленные факторы, позволяющие составить объективный рейтинг, по которому читатели смогут выбрать действительно лучшие казино.
  • Виртуальные онлайн казино – обычные сайты в интернете, на которых можно играть в азартные игры на деньги и бесплатно.
  • Наш список казино используют игроки со всего мира, и мы хотим быть уверенными, что каждый игрок получает лучшие рекомендации.
  • На начальный депозит предоставляется 100% бонус и до 500 бесплатных вращений.
  • На мошеннических сайтах пользователи не встретят свежие релизы крупных брендов, потому что разработчики не сотрудничают с нелегальными казино.
  • Более того, разработчики софта не позволяют владельцам электронных казино влиять на ГСЧ.
  • Составить персональный рейтинг и список лидеров поможет внимательный анализ каждого бренда по нескольким позициям.
  • Во время первого вывода средств большинство казино запускают процедуру KYC (англ. Know Your Customer или «Знай своего клиента»).

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

Получение приветственных бонусов

Программа принимает определенные значения, на которые нужно обратить внимание и именно по ним анализирует официальный сайт онлайн казино. После создания персонального аккаунта на Азино777, в течение 24 часов игрокам доступна опция активации бонуса без депозита в размере 777 рублей. Для этого необходимо зайти в раздел “Бонусы” личного кабинета и кликнуть на “Получить”.

И последний элемент получения выигрыша — удача, от которой зависит выпадение наиболее высокооплачиваемой комбинации. Сегодня вы узнаете о 10 рейтинговых онлайн-казино, где можно играть на реальные деньги. Наш новый список на 2024 год объединил казино с безупречной репутацией и высокими показателями в других параметрах.
Важно понимать, что каждый из этих аспектов имеет решающее значение при формировании рейтинга. Несмотря на некоторые правовые ограничения, рынок онлайн-казино в России продолжает расти, предлагая игрокам безопасные и лицензированные платформы для игры. Это введение предоставляет общий обзор состояния индустрии онлайн-гемблинга в России и служит отправной точкой для дальнейшего изучения этой динамичной и захватывающей сферы.

  • Они гораздо скромнее, чем содержимое бонусов за депозит, а требования к отыгрышу более сложные.
  • Для определения результатов провайдеры применяют сложные алгоритмы.
  • Они применяются к одной транзакции через различные платежные системы, для их суммы за день, неделю и месяц.
  • В каталог онлайн казино с бонусами в 2024 году на этой странице вошли игровые площадки с более выгодными предложениями.
  • Проверенные бренды придерживаются политики KYC (Знай своего клиента), чтобы бороться с отмыванием денег и другими мошенническими действиями.
  • Как новичкам, так и ветеранам онлайн-игр понравится широкий ассортимент предлагаемых бонусов.
  • Это аналоги одноруких бандитов с кнопкой запуска и барабанами на игровом поле.
  • Они же получают возможность участвовать в акциях и турнирах, в которых разыгрываются бонусы и реальные призы.
  • По словам казино, они поддерживают Украинский онлайн-чат.
  • В этом случае пользователь связывает две учетные записи.

Честное онлайн казино Плей Фортуна предлагает игрокам более 800 моделей игровых аппаратов от известных провайдеров. В каталоге азартного клуба можно найти автоматы от ELK, Thunderkick, Yggdrasil, Microgaming, NetEnt и других компаний. Помимо того, что ставить можно на зеркале, посетители казино Плей Фортуна также могут играть через мобильную версию. К слову, ставки можно делать в рублях, гривнах, долларах, евро и даже злотых.
С другой стороны, если вам придется ждать ответа по электронной почте три дня, вы теряете желание играть. Все азартные развлечения отсортированы по отдельным тематическим вкладкам. Также отыскать их можно по провайдеру, новизне, дате добавления или в алфавитном порядке. Онлайн-игры функционируют согласно алгоритму ГСЧ, поэтому генерируют честные результаты. Никто не может повлиять на них или изменить в свою пользу.
Игрок не тратит деньги при их использовании, а выплаты может вывести после выполнения вейджера. Для кешаута в этом разделе нужно выбрать другую вкладку. Максимальный срок указывается в правилах рейтинг казино игровой площадки.

Но администрация в любой момент может запросить подтверждение личности. Также некоторые бонусы доступны только верифицированным пользователям. Обязательно нужно выполнить первый этап ― подтверждение e-mail и номера телефона. Для полной верификации необходимо предоставить фото паспорта, квитанции за коммунальные услуги и банковской карты.
Однако команды, владелец и наполнение совершенно разные. Все эти игры обеспечивают взаимодействие в реальном времени с профессиональными дилерами, что делает опыт игры в live-казино 1xSlots по-настоящему неповторимым. Приложение загружаются быстро, а трафик расходуется экономно. Интерфейс приложения максимально прост и понятен даже неопытному игроку. Заявки на вывод средств исполняются в течение 15 минут.
Большая часть современных азартных игроков ценят мобильность и простоту доступа к онлайн-казино. Поэтому разработчики ввели возможность скачать 1xSlots на своё мобильное устройство — для этого подойдёт любой гаджет или планшет. Буквально несколько секунд на установку, а дальше вы сможете круглосуточно запускать самые интересные игры и получать максимум удовольствия. Возможность внесения депозита и вывода средств доступна только авторизованным игрокам сайта. Для этого используются все те же способы, что и в браузерной версии ПК.

  • Приложение загружаются быстро, а трафик расходуется экономно.
  • После успешной регистрации следует внимательно ознакомиться с различными бонусами и акциями, которые предлагает казино новым игрокам.
  • Вейджер бонуса (х25) должен быть отыгран за 7 дней.
  • В зависимости от статуса пользователи получают кешбэк до 11% от проигранных денег или до 0,25% от всех сделанных ставок.
  • Очки опыта зарабатываются со ставок в виртуальных автоматах.
  • Полная верификация пользователя не обязательна в интернет-казино.
  • В популярном разделе представлены около 500 развлечений от 21 провайдера.
  • Если основной портал не работает, зеркала подключаются автоматически и обеспечивают бесперебойный доступ к развлечениям.
  • Разработчики веб-портала 1хСлотс долгое время трудились над новым продуктом, а именно мобильным приложением.
  • Программисты игорного заведения разработали специальное приложение.

На сайте представлен игровой софт от 120 производителей. В их числе как знаменитые студии (NetEnt, Microgaming, Quickspin), так и малоизвестные, молодые компании. По уникальному промокоду можно получить 100 фриспинов для слота 100 Chinese Gold Hold. Размер ставки при использовании фриспинов составляет 0,2 евро. Вейджер бонуса (х25) должен быть отыгран за 7 дней. При его выполнении нельзя делать ставки выше 500 рублей.

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

1xslots casino вход

  • Приложение 1xSlots предоставляет возможность сыграть в Aviator — популярную игру, доступную через приложение или браузер.
  • Турнирная таблица находится на странице с акцией.
  • Между мобильной версией и приложением 1xslot есть свои особенности, несмотря на визуальное сходство.
  • Если какой-либо из пунктов непонятен, сотрудники площадки помогут разобраться в правилах.
  • Игровой портал 1xSlots принимает мобильных пользователей со всего мира более двух лет.
  • После установки приложения, вы сможете использовать любые функции и инструменты.
  • Стоит отметить, что приложение 1xSlots для Android можно бесплатно скачать на официальном сайте казино или через специальные ссылки на партнерских ресурсах.
  • Приложение автоматически определяет новый адрес, а уже через несколько секунд вы сможете запускать любимый слот или автомат.

Но рабочее интернет-казино, выигрыши и кешауты и бонусы все есть. Кажется, что перспективы у данного казино неплохие. Отзывы о площадке в большинстве своем положительные. Клиенты отмечают, что играть в казино 1хСлотс в онлайн слоты интересно и прибыльно. Естественно, часть комментаторов сожалеют о неудачах. Но опытные пользователи знают, что выпадение призовых комбинаций зависит от генератора случайных чисел, поэтому винить лицензионного оператора не стоит.
Если же у вас возникнут дополнительные вопросы или проблемы, вы всегда можете обратиться в службу поддержки казино, которая работает круглосуточно. По сравнению с десктопной, в  позволяет загружать страницы сайта и игровые автоматы намного быстрее. Имеет доступ ко всем разделам, которые доступны в полной версии клуба. Для тех, кто ищет альтернативные способы обхода блокировки, 1xslots предлагает несколько вариантов. Один из них – скачивание мобильного приложения, где зеркала уже интегрированы, обеспечивая бесперебойный доступ.

1xslots фриспины

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

1xslots промокод

  • В разделе “Поддержка” на нашем сайте казино 1xslots мы признаем, что вопросы и проблемы могут возникнуть в любое время.
  • По уникальному промокоду можно получить 100 фриспинов для слота 100 Chinese Gold Hold.
  • В комментариях клиенты отмечают низкий порог входа в игру, моментальные выплаты и отсутствие обязательной верификации.
  • Приложение 1xSlots для Android предоставляет игрокам удобный доступ к одному из самых популярных онлайн-казино прямо со своих мобильных устройств.
  • Кажется, что перспективы у данного казино неплохие.
  • Для удобства игроков, платежные системы оптимизированы для максимальной простоты использования.
  • Накопительные призы как единичные, так и многоуровневые.
  • С живыми дилерами можно сыграть в рулетку, сик-бо, покер, баккару или блэкджек.
  • Частота выплат кешбэка зависит от текущего статуса игрока.
  • Аппараты загружаются с официального сайта провайдера и имеют аутентичный интерфейс.
  • Для жалоб и предложений предусмотрен отдельный адрес.
  • Захватывающие сражения между игроками проводятся каждую неделю.
  • Пользователь сам решает, когда ему запустить счастливый эмулятор, в надежде сорвать джекпот.

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

Для клиентов казино организована мощная служба поддержки. Связаться с менеджером можно по электронной почте или в онлайн-чате. Для жалоб и предложений предусмотрен отдельный адрес. Игроки в любой момент могут поучаствовать в организации комфортного сотрудничества с площадкой. В популярном разделе представлены около 500 развлечений от 21 провайдера. С живыми дилерами можно сыграть в рулетку, сик-бо, покер, баккару или блэкджек.
Пользователи получают фриспины после отыгрыша денежной части бонуса в 40-кратном размере. Казино разработало финансовую и бонусную политику с рядом условий, которые касаются всех клиентов. Также оператор ведет борьбу с отмыванием денег и другой незаконной деятельностью.
Приложение 1xSlots для Android предоставляет игрокам удобный доступ к одному из самых популярных онлайн-казино прямо со своих мобильных устройств. Одним из главных преимуществ этого приложения является наличие встроенных зеркал, обеспечивающих непрерывный доступ в казино без необходимости поиска активных ссылок. Интерфейс приложения дружелюбен и интуитивно понятен, что позволяет новым пользователям быстро ориентироваться.
Ознакомиться со всеми этими предложениями можно в разделе главного меню «Промо». Для стимулирования использования криптовалют как метода пополнения, 1xSlots предоставляет дополнительный бонус. При выборе криптовалютного метода пополнения игроки получают +2% к своему депозиту, что делает этот способ еще более привлекательным. 1xSlots предоставляет своим клиентам широкий спектр способов пополнения игрового счета.
Все требования подробно прописаны в правилах и условиях. С каждым переходом на новый уровень, баллы игрока обнуляются, и для достижения следующего уровня необходимо набрать очки снова. Благодаря отличной оптимизации и отсутствию ошибок, в 1x Slots мобильная версия остаётся отличным выбором для всех ценителей азарта. Минимальный депозит составляет 50 рублей, а скорость вывода зависит от выбранного метода.

“Медовый месяц” — важная для новичков особенность рума, акция состоит из 30 заданий для новых игроков, по одному на каждый день. Их можно пропускать, но возвращаться и выполнять пропущенное нельзя. Также игрокам доступен для загрузки клиент на Андроид и iOS. PokerOK унаследовал клиентскую базу от Lotos Poker, которая находится в мировом топ-5 по количеству активных игроков. За последний год ей удалось увеличить число своих пользователей еще на 20%. С 14 по 20 октября в руме пройдет акция, которая рассчитана исключительно на любителей кеша.

  • Теперь это Rush&Cash, у которого нет аналогов в мире.
  • Для каждого формата игры проводятся отдельные рейк-гонки.
  • Можно выбрать один из нескольких вариантов отображения карт, сукна и фона.
  • Чтобы начать играть на реальные деньги, нужно внести депозит.
  • Полностью бесплатных турниров в этом покер-руме нет.
  • Если выпало бб, деньги добавляются к общему банку и достаются победителю раздачи.
  • PokerOK, так же как ранее GGPokerOK — партнер Всемирной серии покера.
  • PokerCraft собирает статистику игрока по всем форматам, показывает графики, в том числе с линией EV, позволяет воспроизводить раздачи.
  • Так, вечером в пятницу на лимитах от PLO10 до PLO500 в клиенте видно активных столов, на PLO1000-PLO2000 – 3-5 столов.
  • При оплате рейка покеристы получают в среднем 100 баллов FP за 1$ комиссии (зависит от формата, типа турнира).
  • Классические дисциплины дополняют уникальные форматы столов и турниров.
  • Они развлекаются, играя в Омаху, быстрый покер Rush&Cash, лотерейный All-in or Fold и турниры с бай-инами от $0.2 до $5,000.
  • Функция бесплатная — необходимо зарегистрироваться в турнире с надписью Early Bird.

Бонусные награды выдаются за достижение https://pokerok-skachat.ru/ каждого подуровня. Продвижение по статусам осуществляется путем заработка бонусных очков Fish Buffet Points. При оплате рейка покеристы получают в среднем 100 баллов FP за 1$ комиссии (зависит от формата, типа турнира).
Новым игрокам предлагается пройти серию из 30 миссий и получить подарки суммарной стоимостью до 350$. Первое задание доступно в день регистрации в акции. Ежедневно предлагается новая миссия с определенными условиями. Чем больше заданий выполняет игрок, тем дороже подарок он получает.
Пользователь должен доказать, что пребывает в стране, которая находится в списке разрешенных у покер-рума. Рекомендуется после регистрации заполнить профиль пользователя. Это можно сделать на сайте или в игровом приложении. На портале раздел открывается кликом по электронной почте в заголовке, а в клиенте — по пункту «Данные аккаунта» на вкладке пользователя.

Для Пк

Главное отличие — вертикальное отображение столов, более удобное для игры на смартфоне. Покер-рум запустился в 2019 году на базе закрывшегося перед этим Lotos Poker. Руководство сохранило деньги игроков старой площадки и автоматически перевело их на новую. GGPoker предлагает новым пользователям бонус 200% до $600. Для участия в акции не нужны коды – бонус необходимо выбрать на странице депозита.
Начисление рейка идет с учетом PVI (индекса ценности игрока). Pokerok (в прошлом – GGPokerok) – флагманский покер-рум сети, ставшей одним из лидеров мирового онлайн-покера. Сеть собирает за своими столами более 100,000 любителей покера со всего мира. Посетители planpokera.com должны придерживаться принципов ответственной игры. Администрация сайта снимает с себя ответственность за негативные последствия ознакомления с обучающими материалами. На портале реализованы все необходимые меры для обеспечения защиты посетителей.
Все желающие могут опробовать популярные автоматы в бесплатном режиме, для чего не обязательно заводить игровой профиль. Достаточно выбрать подходящий автомат или стол и начать игру в режиме демо. Проверка документов в GGpokerok проводится от двух дней до недели в порядке очереди. Длительность зависит от загруженности служб поддержки и безопасности. Сообщение о результатах верификации приходит на электронную почту, указанную при регистрации.

  • А оценить турнирный уровень игрока, продающего долю, можно по его статистике в MTT.
  • В течение 60 дней после первого депозита вы можете увеличить размер оффера до максимального, пополняя счет еще несколько раз.
  • Поиграть в онлайн-покер на ПокерОК бесплатно или на деньги можно только за столами, в турнирах с реальным ставками или во фрироллах.
  • Система сбора и распределения рейка имеет ряд особенностей.
  • Мы не занимаемся организацией игр на реальные деньги, не проводим финансовые транзакции с пользователями.
  • Каждый год 31 октября отмечается канун «Дня всех святых».
  • Причина такого разброса — случайное определение приза при переходе на новый уровень.
  • По умолчанию включена функция Squeeze — карты сдаются в закрытую, их надо «приподнимать».
  • GG Poker Network возникла в 2017 году и всегда была местом для игры китайских и корейских рекреационных любителей.
  • Особенность Rush & Cash — после фолда участник оказывается за другим кэш-столом и получает новые карманные карты.

Как Начать Играть На Ggpoker

Запуск которого состоялся в 2019 году.Британский домен комнаты имеет самую надежную лицензию в мире покера от комиссии гемблинга Великобритании. Официальный сайт ПокерОК запрещает использовать трекеры и софт сторонних разработчиков, но взамен предоставляет свои инструменты. Администрация борется с проявлениями получения нечестного преимущества. Рум предлагает отличные бонусы, проводит самые масштабные акции и турнирные серии в онлайне. Ставки на турниры позволяют клиентам оказывать денежную поддержку другим пользователям и зарабатывать на этом, получая часть от выигранного приза.
Иногда собирается игра с супервысокими ставками – по $100 (Холдем) и $200 (Омаха) за большой блайнд. Я рекомендую быть крайне внимательным всем опытным гриндерам. Бан с конфискацией средств при малейшем нарушении (без предупреждений) – норма. Британский домен рума GGPoker, кстати, имеет одну из самых надежных лицензий в мире – UK Gambling Commission. Плохие PRO – токсичные регуляры, использующие любую +EV возможность, например, бамхантинг или рэтхолинг.

Покерок Скачать Приложение На Iphone, Ipad

Для обращения в саппорт нужно войти на сайт или клиент покерной комнаты. Чтобы задать свой вопрос, следует написать в live-чат или заполнить форму обратной связи. В нем публикуются актуальные промокоды и анонсы предстоящих промо, турниров. Комната ведет аккаунты в социальных сетях Facebook, Instagram, каналы на YouTube, Twitch. Операторы саппорта отвечают на вопросы клиентов в течение 2‒3 часов. Можно одновременно играть несколько первых стадий.
Система автоматически загрузит официальное приложение ПокерОК, оптимизированное под ваше устройство. Для установки приложения на ОС Андроид нужно выполнить вход на официальный сайт GGPoker на русском языке с мобильного браузера и нажать «Скачать». Версия для iOS загружается с каталога App Store. Если клиент для Айфон недоступен в стране игрока, можно воспользоваться веб-приложением, работающем без установки.
Во время пиковой загрузки собирается до 100 столов. Трафик высокий даже на самых дорогих лимитах — $500/$1,000. Здесь играет Линус Луис, Леон Цукерник и другие профессионалы.

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

  • Но в нем есть встроенный трекер PokerCraft и статистический инструмент Smart HUD.
  • Покерная сеть GG Network использует игровой клиент собственной разработки – на нем работают и все другие румы.
  • В 2021 году сеть обогнала PokerStars по объему трафика в кеш-играх и по праву стала самым популярным покерным сайтом в мире.
  • На этапе Go турнир продолжается по правилам классического Холдема.
  • Сайт Pokercashers.com несет исключительно информационный характер.
  • Все игры, турниры и база игроков являются общими для всех покер-румов сети GG.
  • Есть встроенные аналитические инструменты, HUD собственной разработки.
  • Турнирное расписание позволяет играть в онлайн покер на GGPoker с любым банкроллом.
  • Для ввода и вывода средств необходимо зайти на GGpokerok из России через приложение или авторизоваться на сайте.
  • Для этого нужно зарегистрироваться на официальном ресурсе.

За столами 9-макс комната взимает фиксированный рейк в 5%. Комиссия снимается уже с префлопа со ставок 3-бет. Для рейка установлен потолок, зависящий от лимита ставок. В Rush & Cash нет рейка, если за столом есть свободные места. Нажав значок SnapCam, пользователь записывает 15-минутный ролик. После выбора «Отправить», видео показывается соперникам, сидящим за столом, кроме оппонентов, включившим опцию «Режим шлема».
Нарушение ведет с блокировке аккаунта и конфискации средств. PokerOK предлагает круглосуточный экшен практически во всех представленных дисциплинах, не имея конкурентов. Рум предлагает игру  сразу в нескольких эксклюзивных форматах. В 2020 сеть подписала контракт с Мировой серией и провела в том же году сразу несколько фестивалей под этим брендом. Главное событие WSOP Online попало в Книгу рекордов Гиннеса, как онлайн-турнир с самым большим призовым фондом в $27,558,500.

Новым клиентам выдавался бонус в $11 за регистрацию и верификацию аккаунта. Рекомендуется следить за анонсами промоакций, чтобы не упустить выгодные предложения. Заплатив бай-ин, участники данного формата турниров Сит-энд-Гоу не знают размер призового фонда. Он определяется в момент старта и равен взносу, умноженному на выпавший коэффициент. Участник может застраховаться от наименьшего коэффициента и получить бесплатную игру при его выпадении.

  • Пользователь получит выплату от рума в соответствии с вложениями и процентом от призовых.
  • Школа проводит эксклюзивные акции и фрироллы, недоступные другим игрокам.
  • Поскольку игра на деньги в РФ запрещена, Роскомнадзор блокирует покерные комнаты.
  • Играть онлайн в GGPokerok в браузере на реальные деньги нельзя, потому что у покер-рума нет такого клиента.
  • Онлайн комната проводит акции для новых и постоянных игроков.
  • Иногда собирается игра с супервысокими ставками – по $100 (Холдем) и $200 (Омаха) за большой блайнд.
  • Все покеристы сохранили свои деньги, их счета были перенесены в обновленный рум GGPokerOK, который впоследствии сменил название на PokerOK.
  • Доли продаются с коэффициентом, который игрок устанавливает самостоятельно.
  • Когда участник сбрасывает карты, происходит автоматическая пересадка игрока за новый стол.
  • Покеристы самостоятельно решают, какой кэшбэк они хотят получать — плавающий или фиксированный.
  • Если выпало бб, деньги добавляются к общему банку и достаются победителю раздачи.

Какие Преимущества Зеркала Для Обхода Блокировки Рума?

Чтобы уточнить список поддерживаемых платежных систем, нужно авторизоваться в профиле и войти в кассу. Комната осуществляет взаиморасчеты через банковские карты, электронные кошельки (Skrill, Neteller, ecoPayz, MuchBetter), криптовалюту. Функция Hand Moments отображает историю раздачи одной картинкой, которой можно поделиться на сайтах, форумах, в социальных сетях. Функция Smart HUD позволяет изучить стиль игры соперников.
Комната со слабым полем из азиатских игроков — одна из лидеров по трафику. Покер-рум организовывает международные турнирные серии. ПокерОК — российский оператор, который предоставляет доступ к сервисам сети GG. В руме широкий выбор дисциплин и форматов, игровых лимитов для пользователей с любым банкроллом. Разработаны функции, которые помогают новичкам во время раздач. Игрок может установить софт на ПК или мобильное устройство.
Поле состоит из огромного количества любителей и новичков. Встречаются и опытные регуляры, но пользуются спросом турниры с небольшим бай-ином и микролимиты в дисциплине кеша. Игрок может выбрать аватар из стандартных или установить свой.

Скачать Мобильный И Пк Клиент Для Игры На Деньги

  • В акции необходимо зарегистрироваться самостоятельно через раздел «Промо» в клиенте.
  • К файлу для установки прикладывается подробная инструкция с описанием всех действий.
  • Все ПО рума абсолютно бесплатно и не требует дополнительных действий от пользователей.
  • Биржа бэкинга — уникальная функция клиентов сети GG.
  • Чем больше у покериста фишек, тем выше шансы на победу.
  • Игрок будет дан доступ к еженедельным фрироллам, специальным турнирам и удвоению бонуса на первый депозит.
  • Срок действия — 90 дней с первого депозита, причем в первые 60 суток можно сделать еще 2 депозита, чтобы добить сумму до $600.
  • Нажав значок SnapCam, пользователь записывает 15-минутный ролик.
  • Призовые рассчитываются автоматически и выплачиваются покер-румом.
  • Клиент рума можно скачивать на Windows, Android и iOS.
  • На территории РФ официальный портал покерной комнаты РКМ часто блокирует.
  • Кнопка для перехода появляется в клиенте на странице Fish Buffet, когда необходимые условия выполнены.

Речерчи покерных фондов подтверждают, что винрейты в этой комнате кардинально отличаются от других румов. Они делают большие рейзы и используют широкие диапазоны для входа в торги. PokerOK (прежнее название GGPokerOK) уже обошел крупнейших представителей онлайн-покера по трафику и вышел на чистое первое место. Можно быть уверенным, что в будущем PokerOK продолжит развитие и станет еще более приятным местом для игры. В России можно загрузить приложение ПокерОК, которое является частью GGPoker. Все игры, турниры и игровая база объединены между всеми румами.
Основная идея — знакомство с форматами игры и функциями покер-рума. Каждое задание активно 1 день, отложить и вернуться к его выполнению позже нельзя. Сравнивая данные об акциях, форматах или условиях игры в клиенте и на официальном сайте, следует отдавать приоритет первому. Рум сначала корректирует данные в приложениях, а затем — на портале.

  • На сайте площадки нужно кликнуть по кнопке «Скачать».
  • Вся информация структурирована и поделена на разделы.
  • В многостоловых турнирах кроме стандартного рейка в 10% взимается административный сбор — 0,5% с выигрыша.
  • Далее покеристы автоматически идут ва-банк, пока не останется два игрока, которые проходят в следующую стадию.
  • В лобби можно выбрать ставки от $0.01/$0.02/$0.05 до $0.05/$0.10/$0.20.
  • Игрок может навести курсор на карты и приподнять один уголок, чтобы посмотреть номинал.
  • За одним столом можно показать не более 4 видео.
  • Просто перейдите на сайт и найдите соответствующую ссылку для скачивания.
  • Акция для новых клиентов предоставляет шанс получить еще больше бонусов на протяжении 30 дней с момента регистрации.
  • Для каждой дисциплины предусмотрен свой процент рейка.
  • В каталоге Google Play и App Store найти клиент не получится.

GGpokerok использует программу лояльности Fish Buffet, которая действует во всех покер-румах сети GG. Она позволяет получать до 100% кешбэка на короткой дистанции и до 60% — на длинной. Причина такого разброса — случайное определение приза при переходе на новый уровень.

Для ПК это Windows или Mac OS, для мобильных устройств – Android или iOS. То есть вы сможете играть в PokerOK практически на любом компьютере или смартфоне. Academypoker.ru исключительно информационный ресурс.

  • Если выпало 600 бб, сумма делится между всеми игроками.
  • Рекомендуется прочитать подробный обзор системы лояльности покер-рума GGPoker и условия регулярных акций сайта.
  • Скачивайте GGpokerok клиент на русском на официальном сайте и наслаждайтесь игрой в покер вместе с множеством других игроков со всего мира.
  • Для каждого формата игры проводятся отдельные рейк-гонки.
  • В инструкции ниже описано, как решить эти вопросы.
  • Игроку доступен встроенный HUD с базовой статистикой.
  • GGPoker – покер-рум с большим числом игроков-любителей из Азии.
  • Все победители первого раунда попадают за один стол.
  • Необходимо загрузить покер-рум с официального сайта после завершения процесса регистрации.
  • Poker.ru — это исключительно информационный сайт о покере.
  • Требования клиентов к производительности устройств зависят от того, как много столов игрок планирует запускать во время сессии.
  • Пополнить счет и оформить кешаут можно через кассу в приложении.

Снять выигрыш могут только верифицированные аккаунты. В зависимости от времени работают от 200 до 400 кэш-столов. Большая часть покеристов находится в играх с низкими ставками. Вариант один — 6-max в безлимитном формате с бай-инами ББ. При использовании ecoPayz рум ничего не взимает.
Далее покеристы автоматически идут ва-банк, пока не останется два игрока, которые проходят в следующую стадию. На этапе Go турнир продолжается по правилам классического Холдема. Если участник получает бонусную комбинацию из карманных карт в первой раздаче, стек увеличивается на множитель, соответствующий раскладу.
В таком виде игра проходит 15 минут или пока не останутся 15 человек в раздачах. В этой стадии действует формат прогрессивных нокаутов. С помощью биржи бэкинга можно продавать доли на свои турниры или приобретать у других. Пользователь получит выплату от рума в соответствии с вложениями и процентом от призовых. Smart Betting отслеживает действия игрока и его сайзинги в различных ситуациях. Постепенно искусственный интеллект подстраивается под стратегию и предлагает нужные размеры ставок.
Для пополнения счета и запросов на вывод выигрыша не требуется посещать официальный сайт рума. Раздел кассы с множеством способов оплаты доступен в игровом клиенте. Там же можно отслеживать состояние счета, активировать бонусы и участвовать в акциях. GGPoker – одна из самых активных площадок для онлайн-покера. Его сеть поддерживает любительскую аудиторию, поэтому запретила в клиентах HUD, вспомогательные программы и загрузку истории рук. Чтобы установить покерный клиент на ПК, необходимо зайти на официальный сайт онлайн комнаты и нажать «Скачать».
Нажав «Начать медовый месяц» в профиле, покерист будет получать задания — по одному на протяжении 30 дней. За прохождение миссий начисляются награды — кэш, турнирные доллары и билеты. Суммарно можно заработать бонусный пакет на $350. Турнирное расписание позволяет играть в онлайн покер на GGPoker с любым банкроллом. В более дорогие события можно пройти отбор в поэтапных и прямых сателлитах. Регулярные ивенты разделены на серии, отличающиеся форматом состязаний.
Предварительно необходимо разрешить установку приложений от непроверенных разработчиков. Функционально версия для Android ничем не отличается от десктопной. Игрокам доступны все те же инструменты, что https://pokerok-frirolly.ru/ и в клиенте для ПК.
Пользователь загружает клиент на устройство и может начать играть онлайн в ПокерОК на реальные деньги. Во вкладке «Система вознаграждений» доступна информация по участию в программах лояльности. Battle Royal включает в себя правила из нескольких дисциплин. В событии регистрируются 30 участников, как в многостоловом Sit&Go.

Site lisansları, güvenilir oyun sağlayıcıları, güvenli ödeme yöntemleri ve altyapısı ile site müşterilerinden olumlu yorumlar almayı başarmıştır. Ayrıca sitenin ayırt edici ve en sevilen özelliklerinden biri de her dönem yüksek oranlı bonuslara sahip olmasıdır. Ana sayfada yer alan “Üye Ol” veya “Kayıt Ol” butonuna tıklayarak üyelik formunu doldurmanız gerekmektedir.

  • Intobet yeni adresi nasıl bulunur diyenler için belirtmekte fayda var.
  • Örneğin, belirli bir miktar para yatırdığınızda, hesabınıza ek olarak bonus bakiye tanımlanır.
  • Kendi deneyiminizi yaşamak için Intobet’e üye olabilir, çeşitli slot oyunlarında şansınızı deneyebilirsiniz.
  • İntobet platformunda oyun oynamaya başlamak için ilk yapmanız gereken şey, İntobet üyelik işlemini tamamlamaktır.
  • Bu, farklı ülkelerden oyuncuların kendi dillerinde oyun oynamalarını ve platformu kullanmalarını sağlar.
  • İntobet’in sosyal medya hesapları, ayrıca kullanıcılarına çeşitli yarışmalar ve etkinlikler de sunmaktadır.
  • İntobet, kullanıcı memnuniyetini ön planda tutarak, sektördeki yerini sağlamlaştırmaya devam etmektedir.
  • Kullanıcılar, mobil cihazları üzerinden siteye giriş yaparak, hesaplarına erişebilir, oyun oynayabilir ve bonuslardan faydalanabilirler.
  • Tamamen bedava şekilde kasalarını katlama şansı bulan müşteriler rahat etmiştir.
  • Elbette kullanıcıların İntobet firmasının resmi hesabını takip etmesi gerekmektedir.
  • Canlı destek hattı, kullanıcıların en hızlı şekilde destek alabilecekleri kanaldır.

Para Çekme İşlemleri

  • Ayrıca, lisanslı bir site olması, kullanıcıların kazançlarını güvenle çekebilmeleri ve siteye olan güvenlerinin artması açısından büyük bir öneme sahiptir.
  • Intobet casino ve canlı casino oyunu seven kullanıcılar için ideal özellikleri barındıran bir yapı içindedir.
  • Oyuncular kayıt adımları sonrasında avantajlı hoş geldin bonuslarını da kullanarak sitede güvenli şekilde vakit geçirebilirler.
  • Bu basit adımlar, İntobet’te keyifli ve güvenli bir oyun deneyimi yaşamanız için gerekli.
  • İntobet lisans bilgileri, siteye olan güveni artıran en önemli unsurlardan biridir.
  • Ödeme işlemlerinizde sanal kart ve e-cüzdan kullanmanız önerilir; bu sayede işlemleriniz daha hızlı ve güvenli bir şekilde gerçekleşir.
  • Alanında uzman ekip sayesinde sürekli olarak finans birimine denetlemeler yapılmaktadır.
  • Efsanevi mitolojik hikayelerden, modern maceralara kadar uzanan tema çeşitliliği, her kullanıcıya hitap edebilme gücüne sahiptir.
  • İntobet, kullanıcılarının taleplerine hızlı bir şekilde yanıt vererek, para çekme işlemlerinde herhangi bir aksaklık yaşanmasını önlemeye çalışır.
  • Ana sayfada, üyelik bilgilerinizle giriş yapabilir veya yeni bir hesap oluşturabilirsiniz.
  • Ayrıca, mobil cihazlar üzerinden para yatırma ve çekme işlemleri de aynı hızda ve güvenlikte gerçekleştirilebilir.
  • Genelde kullanıcılarından olumlu yorumlar almayı başaran platform, gelişmiş altyapısıyla herkes için güvenli ve hızlı bir oyun ortamı sağlar.

Fakat mobil telefondan da herhangi bir hata meydana gelmemektedir. Site adresini sizlere duyurmak adına iletişim platformlarını kullanmaktadır. intobet canli Twitter, telegram veya Instagram gibi platformlarda profesyonel şekilde duyurular yapıldığı bilinmektedir. Bu duyurularda hem güncel giriş adresi hem de sitenin fırsatları paylaşılmaktadır.
Daha sonra bahis severler mobil telefonlarından anında erişim sağlamış olacaktır. Spor bahisleri seven üyeler sitede bu bölümde bahis alabilmektedir. Elbette kullanıcıların kafasında mobilden bahis oynamak sakıncalı mı sorusu yer almaktadır.
Kullanıcı dostu arayüzü ve optimize edilmiş mobil deneyimi ile İntobet her an her yerden güvenli bir bahis deneyimi yaşatır. Mobil giriş için herhangi bir uygulama indirmenize gerek kalmadan tarayıcınız üzerinden hızlıca erişim sağlayabilirsiniz. İntobet’in resmi bir mobil uygulaması bulunmamakla birlikte, tarayıcı üzerinden mobil siteye erişim oldukça kolay ve pratiktir. Kullanıcılar, mobil cihazları üzerinden siteye giriş yaparak, hesaplarına erişebilir, oyun oynayabilir ve bonuslardan faydalanabilirler. Mobil erişim, özellikle hareket halindeyken bahis yapmak isteyen kullanıcılar için büyük bir avantaj sağlar.
Güncel adres üzerinden siteye erişerek Intobet oyunları ile keyifli zaman geçirebilirsiniz. Canlı sohbet seçeneği ile anında yardım alabilir sorularınıza hızlı cevaplar bulabilirsiniz. E-posta ve telefon desteği ise daha kapsamlı konularda çözüm sunarak kullanıcıların memnuniyetini en üst seviyeye çıkarmayı hedeflemektedir.

Son Yazılar

Burada üyelerin kendilerine yakın buldukları güvenilir aracı platformlar ile çalışması gerekmektedir. Çünkü firmalar amatör platformlar ile para anlaşması yaparak reklam almaktadır. Geniş oyun seçenekleri, kullanıcı dostu arayüzü ve güvenli ödeme imkanlarıyla platform herkes için online casino deneyimini avantajlı hale getirmektedir. Platformun yüksek bonusları sayesinde ilk yatırımdan itibaren de oyuncular çeşitli kazançlar elde edebilmektedir. Intobet, güvenilir ve kaliteli hizmet sunan bir online bahis platformudur. Yüksek güvenlik önlemleriyle korunan bu platformda, spor bahisleri yapabilir ve çeşitli kazanç fırsatlarından yararlanabilirsiniz.

Platform, bilgisayarlarınızdan veya mobil cihazlarınızdan erişilebilir olup kullanıcı dostu bir arayüz sunmaktadır. Intobet, kullanıcıların güvenliğini ön planda tutar ve lisanslı bir bahis platformudur. Mobil cihazlarınızdan bahis yapma imkanı sunan Intobet, kullanıcıların daha esnek bir şekilde bahis oynayabilmesini sağlar. Intobet, yüksek oranlarla kazanç fırsatları sunar ve geniş bir spor bahisleri seçeneği ile kullanıcılarına çeşitlilik sağlar. Ayrıca canlı bahis özelliği sayesinde maçları izlerken anlık olarak bahis yapabilirsiniz.
İngilizce, Türkçe, Almanca ve Rusça gibi yaygın dillerde hizmet verilmesi, kullanıcıların daha rahat bir deneyim yaşamalarına olanak tanır. Intobet, kullanıcılarına yüzlerce farklı slot oyunu sunarak her zevke uygun bir alternatif sağlamaktadır. Bu oyunlar, dünyanın önde gelen oyun sağlayıcıları tarafından tasarlanmış olup, her biri benzersiz temalar, grafikler ve ses efektleri ile donatılmıştır. Efsanevi mitolojik hikayelerden, modern maceralara kadar uzanan tema çeşitliliği, her kullanıcıya hitap edebilme gücüne sahiptir.
İnternet üzerindeki bahis sitelerine erişim engelleri ve sürekli değişen adresler, kullanıcılar için bazen sorun oluşturabilir. Ancak İntobet kullanıcılarının bu tür erişim sorunları yaşamaması için sürekli olarak güncellenen giriş adresleri sunar. Platform kullanıcıların sorunsuz bir şekilde siteye ulaşabilmesi için giriş adresini sürekli güncel tutar.
İntobet Twitter hesabı, aynı zamanda kullanıcıların sorularını yanıtlamak ve olası sorunlarını çözmek için de etkin bir şekilde kullanılmaktadır. Kullanıcılar, Twitter üzerinden doğrudan İntobet ile iletişime geçebilir ve merak ettikleri konular hakkında hızlı bir şekilde bilgi alabilirler. Bu sayede, kullanıcılar site hakkında en güncel bilgilere ulaşırken, İntobet de kullanıcılarıyla yakın bir iletişim kurma şansı elde eder. Yeni bir bahis sitesine üye olurken, kullanıcılar genellikle siteyi denemek ve özelliklerini keşfetmek için ücretsiz fırsatlar ararlar. İntobet deneme bonusu da bu ihtiyacı karşılamak için sunulan özel bir tekliftir.
Ülkemizde bahis sitelerine uygulanan erişim engelleri nedeniyle sık sık adres değişikliği yaşanabilir. Telegram üzerinden gönderilen anlık bildirimler ile kullanıcılar, en güncel giriş adresine hızlıca erişebilirler. Ayrıca, bonus kampanyaları ve özel teklifler de yine Telegram kanalı üzerinden duyurulmaktadır. En sağlam bahis firmaları içinde olan intobet üyelerine spor bahisleri dışında da oyun seçenekleri sunmaktadır. Özellikle intobet casino masa oyunları bu sitelerin, en çok deneme bonusu veren bahis seçenekleridir.

  • Geniş oyun seçenekleri, güvenli ödeme yöntemleri ve cazip bonusları ile Intobet, oyuncular için ideal bir seçenektir.
  • İntobet, lisanslı bir platform olması ve kullanıcı bilgilerini koruma altına almasıyla güvenilir bir bahis sitesi olarak öne çıkmaktadır.
  • İntobet, kullanıcılarının bu durumdan etkilenmemesi için sürekli olarak yeni adreslerini duyurmakta ve erişim sağlanmasını kolaylaştırmaktadır.
  • Telegram üzerinden gönderilen anlık bildirimler ile kullanıcılar, en güncel giriş adresine hızlıca erişebilirler.
  • Mobil uygulamalara bu kadar ilginin olmasından dolayı firmalar da gerekeni yapmaktadır.
  • Genelde sitede eski olan ve sürekli yatırım yapan kullanıcılar bu ödüle layık görülmektedir.
  • Hoş geldin bonusları ile güvenli bir şekilde oyun deneyimi yaşayabilirsiniz.
  • Intobet sitesine baktığımız zaman casino işleri ve canlı casino alanı bulunur.
  • Bunların içinde Papara, Jeton ve Payfix gibi platformlar bulunur.
  • Bundan dolayı kullanıcılar siteye giriş yaparken tedirgin değildir.
  • Ayrıca, site güvenlik önlemleri konusunda da titizlikle çalışır.

Giriş adresi değişiklikleri, genellikle siteye erişimin engellenmesi durumunda gerçekleşir. Bu engellemeler, ülkemizdeki yasalar doğrultusunda bahis sitelerine uygulanan kısıtlamalardan kaynaklanmaktadır. İntobet, kullanıcılarının bu durumdan etkilenmemesi için sürekli olarak yeni adreslerini duyurmakta ve erişim sağlanmasını kolaylaştırmaktadır. Yeni canlı masa oyunları, oyun sağlayıcılarının popüler oyunları belirli alt yapı desteği ile sunulur. Fakat İntobet gibi siteler sadece alanında uzman mecralar ile çalışmaktadır.

Intobet Slot Oyunları: Müşteri Hizmetleri

Kullanıcılar, siteye girdiklerinde uzun yılların verdiği deneyimi ve güveni hissedebilirler. Dilediğiniz her an para yatırabileceğiniz ve aynı şekil de çekim talebi verebileceğiniz özgür bir ortamdan söz ediyoruz. İntobet canlı kumarhane oyunları kullanıcıların son dönemde favorisi haline gelmiştir. Bu oyunlar tamamen canlı şekilde üyeler ile beraber oynanmaktadır. Promosyon kodları bahis sektöründe sadece belirli üyelere verilmektedir.
İntobet slot oyunları oyna aramaları son dönemde trend haline gelmiştir. Çok kazandırmasının yanında eğlenceli bir tarafının olması da önemli olmaktadır. Firmalar en popüler slot oyunlarına sitede yer vermeye çalışmaktadır. Intobet’in casino ve bahis hizmetlerine erişim sağlamak isteyenlerin güncel giriş adresini kullanarak siteye erişim sağlamaları gerekmektedir. Slot oyunlarını oynamak isteyenler için birçok seçenek sunan platformlar hem yüksek kazanç fırsatları hem de eğlenceli vakit geçirme imkanı sunar.

  • Adımlarınızı bu yön de atmanız sizlerin lehine olacak ve taleplerinize de güçlü bir şekilde yanıt veriyor olacaktır.
  • İntobet, kullanıcı bilgilerinin korunması için gelişmiş güvenlik önlemleri uygulamaktadır.
  • Ayrıca, İntobet’in e-posta ve telefon destek hizmetleri de bulunmaktadır.
  • Ayrıca, sosyal medya hesapları üzerinden de güncel bilgilere ulaşabilirsiniz.
  • Ayrıca web platformunda mobile kıyasla daha az hata meydana gelmektedir.
  • Platformun sunduğu yüksek kazanç fırsatları, hızlı ödeme yöntemleri ve güçlü müşteri hizmetleri ile İntobet, kullanıcılarına eşsiz bir deneyim sunmaktadır.
  • Dakikalar içinde siteye kaydınızı oluşturarak dilediğiniz oyun türünde işlem yapmaya başlayabilirsiniz.
  • Son yıllarda Türkiye ve dünya genelinde online casino ve bahis siteleri büyük bir popülarite kazanmıştır.
  • Kıbrıs menşeili olsa dahi ülke dışında olduğu için illegal olarak görülür ve kabul edilir.
  • Resmi hesap bulunduktan sonra müşteriler rahat şekilde güncel adrese erişebilmektedir.

Intobet canlı casino nedir ve ne şekilde kullanılır diye merak ediyorsunuz. Dolayısıyla sizler de intobet heyecanını güvenilir şekilde bulmanın kolaylığını burada yaşayabilirsiniz. Intobet sitesine baktığımız zaman casino işleri ve canlı casino alanı bulunur.

Это азиатская организация, которая отвечает за лицензирование и развитие игорного бизнеса. Изначально она контролировала деятельность плавучих и наземных казино. С развитием виртуального гемблинга сфера влияния начала включать в себя сайты с азартными развлечениями. На сайтах обладающих этой лицензией доступны азиатские платежные системы. А игрокам из этих регионов можно не сомневаться в качестве казино обладающего этой лицензией. Для удобства игроков используется подробный рубрикатор.
Слишком частые и крупные выигрыши в бесплатном режиме — не очень хороший знак, который может указывать на взлом слота. Коллекция включает в себя популярные видеослоты и азартные развлечения, которые известны узкому кругу игроков. Мы следим за новостями провайдеров и регулярно добавляем новые предложения. Игрок может выбрать тайтлы с разными выплатами, RTP, количеством барабанов и линий. Большинство демо доступны на десктопе и в мобильной версии.
Новый этап в эволюции автоматов начался в 1976 году. Вместо барабанов в нем использовался 19-дюймовый экран. Технологию быстро подхватили другие производители, а сама игра двумя годами позднее была выкуплена небезызвестными IGT. Долгое время геймплей аппаратов оставался неизменным. Клиенты получали выплаты, собирая комбинации на барабанах и увеличивая суммы в риск-игре. Лишь в 1996 году вышел первый слот с призовым раундом на отдельном экране.

  • О верификации оператор предупреждает клиентов казино в пользовательском соглашении.
  • Такие площадки сотрудничают с официальными производителями.
  • Большинство специальных предложений предоставляются на таких условиях, что клиент не может вывести выигранные деньги, пока не поставит на площадке определенную сумму.
  • От простых разработок со скромной графикой они эволюционировали до настоящих произведений искусства, способных конкурировать с казуальными играми.
  • Бонусы сложные, с высоким вейджером, брать их не хочется.
  • У Вован такая особенность, малое количество провайдеров, но зато представлены все разработки.
  • Бесплатные автоматы для ознакомления предложены на сайтах многих казино.
  • На сайтах в интернете можно найти много некачественных слотов, которые никак не связаны с настоящими играми.
  • Приветственные бонусы могут быть предоставлены как в виде процентного соотношения к первому депозиту, так и в форме фиксированной суммы денег.
  • Из-за бонуса видеослот получил неофициальное название «Чертики», а в 2017 году провайдер выпустил новую версию автомата — Lucky Drink in Egypt.

игровые автоматы демоверсия

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

игровые автоматы бесплатные

Если на нем не остается денег, то для продолжения игры следует перезагрузить аппарат. Играть онлайн в демо можно без ограничений по времени. Если сайт не предлагает делать денежные ставки, то ознакомительная версия запускается автоматически.
Выигрышная (призовая) комбинация — набор символов, при выпадении которого ставка умножается на коэффициент. Комбинации могут выпадать на линиях выплат, а могут засчитываться кластерами — зависит от механики слота. Запустить выбранный слот бесплатно можно в онлайн-казино. Демоверсия доступна всем желающим без оплаты ставок деньгами со счета.
Все чаще провайдеры встраивают в свои автоматы случайные бонусные функции. Их отличие от фриспинов или призовых раундов состоит в том, что они могут запуститься в любой момент вне зависимости от игровой ситуации. Чаще всего такие опции активируются в основном режиме, но в некоторых разработках они доступны и вовремя фриспинов или респинов.

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

  • Буквально за несколько минут можно ознакомиться с функционалом и начать проходить миссию.
  • Рынок предлагает множество разнообразных игр, поэтому используйте возможность тестировать различные версии слотов, чтобы найти те, которые вам больше всего нравятся.
  • Игровые автоматы также различаются по количеству барабанов.
  • Таким образом коктейль выполнил роль третьего символа с вишней, дополнив призовой набор и активировав выплату.
  • В современных видеослотах используются разные принципы построения выигрышных комбинаций.
  • Там выбираем понравившийся слот, рулетку или карточную игру, наводим курсор и нажимаем на ссылку «Демо».
  • В дальнейшем пользователь в любой момент может перейти к денежным ставкам.
  • Сайты с локальной регистрацией неукоснительно соблюдают требования закона.
  • Это привлекает пользователей, так как дает максимальный уровень азарта и повышает адреналин в крови.
  • Многие онлайн казино предлагают своим посетителям бесплатно и без регистрации.
  • Слишком частые и крупные выигрыши в бесплатном режиме — не очень хороший знак, который может указывать на взлом слота.
  • Использование бесплатные слоты онлайн позволит вам получить бесценный опыт перед первыми вложениями в игру.

Основное отличие этого типа слотов – это современность. Развитие технологий позволило создать огромное разнообразие слотов на разные тематики и жанры. Анимация в таких слотах отличного качества, также вы увидите пять барабанов, увеличенное количество линий выплат, по сравнению с классическими слотами. При игре в бесплатных слотах вы используете так называемую игровую валюту, вы не вносите собственные средства и, следовательно, не рискуете ими.
В казино 3 промопредложения для пользователей, которые играют на смартфонах. Все приветственные бонусы имеют одинаковый вейджер — х45. В пункте 5.2 указано, что администрация может потребовать документы для проверки личности игрока.
Также верификация аккаунта становится обязательной, когда пользователь запрашивает на вывод сумму свыше 1000 долларов. Если игрок соберет на экране от трех и более главных знаков, то сможет помочь царевне переплыть озеро в бонусном раунде. Задача – выбрать надежные лилии, по которым могла бы пройти лягушка и спрятаться от прячущегося крокодила.
У Вован такая особенность, малое количество провайдеров, но зато представлены все разработки. Поэтому формат данного казино понимаю как сделано для поклонников Эндорфины, Прагматик и прочих похожих по статусу компаний. В тоже время это нашло отражение в слотах, они все беспроигрышные. Все, что успел открутить, то хоть плюс 10 рублей, а есть. Предложил новую технологию лавин вместо обычных прокруток барабанов. Каждый раунд может включать в себя несколько спинов с растущим множителем.

  • Чтобы вы не тратили своё время, мы разместили на своём сайте настоящие бесплатные игровые автоматы, в которые можно поиграть без регистрации аккаунта в казино.
  • Бесплатный игровой автомат Fairy Land, который в народе имеет более распространенное название «лягушки».
  • Все игры в этом казино разработаны с использованием передовых технологий, что обеспечивает отличную графику и плавный игровой процесс.
  • Многие провайдеры внедряют накопительную систему баллов.
  • Эти слоты собирают микрочасти ставок всех играющих и формируют из них огромный кумулятивный джекпот, который может быть выигран в любой момент.
  • Закон не всегда позволял выдачу выигрыша наличными, поэтому клиенты вознаграждались жевательной резинкой, шоколадными батончиками и другими призами.
  • Это игра на интерес, предназначенная для тестирования аппаратов перед их запуском с денежными ставками.
  • Специфика законодательства некоторых стран обязывает операторов гемблинга получать разрешение на собственной территории.
  • На надежных сайтах аппараты должны загружаться с серверов провайдеров.
  • Показатель выражается в процентном соотношении и в современных слотах составляет 95-97%.
  • В тоже время это нашло отражение в слотах, они все беспроигрышные.

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

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

  • Для этого доступны электронная почта, номер телефона, онлайн чат, социальные сети и мессенджеры.
  • Olybet работает более 10 лет, и зарекомендовало себя как надежный провайдер качественного предложения онлайн-азартных игр.
  • При обрыве связи игровой процесс останавливается с сохранением всех данных клиента.
  • И прежде чем перейти к тестированию процессов в казино, мы непременно изучаем репутацию оператора в интернете и отзывы игроков.
  • Другими широко известными регулирующими органами в онлайн-индустрии, являются Комиссия по азартным играм Великобритании, Гибралтара, Олдерни и Мальтийское игорное управление.
  • Приложения помогут держать коллекцию игровых автоматов и других сертифицированных развлечений от именитых провайдеров со всего мира всегда под рукой.
  • В конце концов, мнение самих игроков об онлайн-казино играет решающую роль, поэтому вам всегда следует изучить отзывы клиентов.
  • Для менее срочных запросов должен быть указан адрес электронной почты, это также позволяет игроку более подробно описать свою проблему.
  • Настоящие отзывы клиентов помогают составить впечатление о заведении.
  • Поэтому крайне выгодно как можно раньше подтвердить личную информацию за счёт паспортных средний, использовать один вариант для всех переводов со счёта игрока.
  • Интегрированы ли на сайте меры защиты, такие как SSL шифрование данных, Provably Fair, двухфакторная аутентификация и другие.
  • Обычно они устанавливаются на каждую транзакцию в отдельности, а также на целые сутки, неделю, месяц.

Разнообразие Игр И Поставщики Программного Обеспечения

  • Нужно учитывать сроки отыгрыша и ориентироваться на размер банкролла — достаточно ли у посетителя средств, чтобы выполнить условия акции.
  • Выбор ведущих онлайн-казино в России основывается на нескольких ключевых факторах, которые гарантируют пользователям качественный и безопасный игровой опыт.
  • К тому же они проводят за игрой намного больше времени, поэтому могут дать более объективную оценку.
  • Если лимиты будут учтены, а другие правила никоим образом не нарушены, получить выигрышные суммы, скорее всего, получится моментально.
  • Выбор игр в онлайн-казино огромен по сравнению с наземными казино.
  • Действующим клиентам доступны релоады, кешбэк, программа лояльности.
  • Все это позволяет оставаться на связи с любимыми игровыми автоматами даже тогда, когда с доступом в основному веб-порталу возникают затруднения.
  • Пoзиции в TOП-10 peгуляpнo oбнoвляютcя пpи дoбaвлeнии нoвыx бpeндoв.
  • Также, когда вы играете на реальные деньги в онлайн-казино, безопасность всегда должна быть вашим главным приоритетом.
  • Мы хотим видеть доступные для понимания пользователем правила без сложной профессиональной терминологии.
  • Теперь вы можете увидеть целый чек-лист для проверки онлайн-казино на безопасность и надежность.
  • Даже если вы считаете себя стопроцентным консерватором, вам стоит ознакомиться с этим видом развлечений.
  • На этом этапе мы связываемся с представителями службы поддержки.

Какие направления для транзакции доступны конкретному игроку можно посмотреть только в личном кабинете. Всё дело в том, что система подбирает список подходящих сервисов для переводов, исходя из некоторых личных характеристик пользователя. Таким образом, учитывается страна проживания, валюта, которую на стартовом этапе сотрудничества выбрал игрок. Вывод средств в онлайн-казино может занимать от 1 до 5 рабочих дней, в зависимости от выбранного вами метода платежей.
Casino.guru является независимым ресурсом об онлайн-казино и азартных играх, который не контролируется каким-либо оператором азартных игр или другим учреждением. Прежде чем играть в том или ином казино, убедитесь, что вы действуете в соответствии с нормативными требованиями. Некоторые онлайн-казино также позволяют игрокам пополнять депозит в криптовалютах, таких как Bitcoin, Ethereum, Litecoin и других. Такие казино можно посмотреть с помощью фильтра «Биткоин/крипто-казино» или на отдельной странице нашего сайта со списком лучших биткоин- и крипто-казино. В этом помогут отзывы, обзор сайтов онлайн казино, мнения экспертов. В рейтинг на странице вошли надежные площадки, подходящие для игры на деньги.
В добавок к растущей конкуренции большой рынок также увеличивает нишевую диверсификацию компаний в индустрии азартных игр. А это, в свою очередь, дает вам хорошую возможность найти онлайн-казино на ваш вкус. Таким образом, азартные конторы стараются привлечь максимум целевой аудитории. Здесь действительно можно выиграть, потому что все слоты, другие развлечения работают за счёт генератора случайных чисел, а значит, демонстрируют честную игру. Выводить профит могут зарегистрированные игроки, которые накопили достаточно банкролла и отыграли бонусы. В живом казино посетители имеют возможность испытать атмосферу реального казино, играть против живого дилера, а также общаться с другими игроками и дилером через функцию чата.

Топ 10 Лучших Онлайн Казино 2024: Рейтинг, Бонусы И Обзоры

Прежде чем начать играть в конкретном онлайн-казино, удостоверьтесь, что у него есть разрешение на проведение азартных игр. Лицензия гарантирует, что казино прошло через определенные проверки и соответствует стандартам безопасности и честности. Обычно информация об лицензии указана в нижней части главной страницы сайта казино или в разделе «О нас». Если вы не можете найти эту информацию или сомневаетесь в ее достоверности, лучше выбрать другое казино. Вам стоит проверить информацию о лицензии конкретного казино. Также стоит изучить меры безопасности на сайте конкретного казино, отзывы игроков и пр.
В ТОП лучших онлайн казино в России в 2024 году входят сайты, своевременно выплачивающие выигрыши. Информация о максимальных сроках вывода денег указывается на площадке. Но многие операторы выплачивают деньги за несколько часов. Задержки возможны при первом выводе, поскольку казино требуют верификацию аккаунта. Следующий фактор, который мы учитываем, – это ассортимент игр. Мы стремимся выбирать онлайн-казино с обширным и разнообразным выбором слотов, видеопокера, живых игр, лотерей и других игр, которые нравятся игрокам из России.

Лучшие онлайн-казино предлагают живые игры в отличном HD-качестве от лидеров индустрии Evolution Gaming, Salon Privé и Ezugi. Большое количество игорных заведений (только в России их более 100) означает, что выбор наиболее подходящего клуба может представлять много трудностей. Для большинства пользователей из стран СНГ наличие русскоязычного сайта и службы поддержки – принципиальный критерий выбора казино.
Убедившись в безопасности и авторитетности онлайн-казино, а также в наличии выгодных бонусов, мы переходим к непосредственному тестированию процессов в онлайн казино. Для нас важно, чтобы казино предлагало множество вариантов пополнения счета и вывода средств без комиссий, это делает транзакции более удобным для игроков. Наиболее популярными способами оплаты в казино являются дебетовые и кредитные карты, банковские переводы, электронные кошельки, предоплаченные карты и криптовалюта. Наши эксперты обращают внимание на то, чтобы платежи обрабатывались быстро, ведь долгое ожидание выигрышей с современными способами оплаты неприемлемо в наше время. Лицензия и безопасность онлайн-казино – первый и самый важный фактор, который необходимо проверить в онлайн-казино.
Следует также отдавать предпочтение заведениям, онлайн казино которые полностью соответствуют вашим предпочтениям, ожиданиям и представлениям о высоком уровне сервиса. Mы coбpaли иcключитeльнo игpoвыe клубы c xopoшeй peпутaциeй. Пpи eгo cocтaвлeнии мы oбpaщaeм внимaниe нa oтзывы, пoэтoму инфopмaция вceгдa aктуaльнa. Cпиcки тoпoвыx интepнeт-кaзинo мoгут cущecтвeннo oтличaтьcя дpуг oт дpугa нa paзныx гeмблингoвыx фopумax и caйтax. Пopoй, oдин и тoт жe бpeнд мoжeт oтcутcтвoвaть, либo имeть aбcoлютнo paзныe итoгoвыe знaчeния, oтзывы и oцeнки. Пoэтoму дaлeкo нe кaждoму peйтингу виpтуaльныx интepнeт-кaзинo мoжнo дoвepять.
Законы о гемблинге могут также устанавливать, что только местные лицензированные казино имеют право на работу в той или иной юрисдикции. Это единственный способ предоставить Вам лучший анализ процесса регистрации. Мы подмечаем, насколько просто создать аккаунт и сколько времени это занимает, а также есть ли ненужные шаги в процессе регистрации. Высокие места в топ-листах занимают современные казино, которые делают процесс регистрации максимально простым и быстрым, например через социальные сети.
Они чётко прописаны в правилах каждого казино из нашего рейтинга. Обычно они устанавливаются на каждую транзакцию в отдельности, а также на целые сутки, неделю, месяц. Периодически какие-то варианты исчезают и появляются, что связано с изменениями в законодательстве, поэтому не забывайте мониторить, что доступно. Два основных варианта, которые практикуют все лицензированные клубы России – это вывод на карту банка и электронные кошельки. Каким прогнозам и анонсам доверять можно или нельзя ответить сложно. Мы знаем лишь одно – наш сервис  предоставляет точные сведения.

В таких играх у вас будут все шансы выиграть крупные суммы. Такие автоматы, как Mega Moolah или Major Millions часто разыгрывают многомиллионные джекпоты. Казино отправит код на указанный Вами номер телефона, который Вам нужно будет ввести во время процесса регистрации. Если ссылка для подтверждения отправлена по электронной почте, Вам нужно будет нажать на эту ссылку, чтобы подтвердить свой адрес электронной почты и верифицировать аккаунт. Лицензированные казино безопасны и обеспечивают защищенную среду для игры.
Также вам предложат сотни (на некоторых сайтах – тысячи) оригинальных моделей, являющихся уникальными разработками производителей софта. Поддержка клиентов – Если у пользователя возникла проблема, она должна быть немедленно решена службой поддержки. Лучшие онлайн-казино имеют службу поддержки клиентов, которая работает круглосуточно, и игроки в случае проблемы, могут рассчитывать на быструю и компетентную помощь со стороны оператора.
Лучшие онлайн-казино предлагают поддержку через круглосуточный живой чат, где ответа не приходится ждать больше пары минут. Во многих онлайн-казино этот сервис предложен на нескольких языках. А если нету агента, говорящего на конкретном языке, часто в чат интегрирована функция автоматического перевода. Помимо классических игр и их вариаций в разделе живых игр предложены захватывающие живые игровые шоу, такие как Monopoly, Crazy Time, Dream Catcher, Cash or Crash или Mega Ball. Я подтверждаю, что мои контактные данные могут быть использованы для информирования меня о продуктах, услугах и предложениях казино.
Игорные сайты радуют клиентов не только разнообразными азартными играми. Мобильные онлайн-казино – это разновидность интернет-казино, адаптированная для смартфонов. Обычно они представляют собой не более чем версию сайта или устанавливаемое приложение. Они не требуют отдельной регистрации, открывают доступ ко всем услугам и работают по основным правилам и условия.

Часто Задаваемые Вопросы О Лучших Онлайн-казино

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

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

  • Соответствующий показатель влияет на то, сколько от выигрыша будет получать игрок.
  • Порталы, попавшие в списки, гарантируют игроку комфортную и увлекательную игру.
  • При этом пользователь может обращаться на родном языке — в чат встроен автоматический переводчик.
  • Операторы дарят бесплатные вращения, деньги и очки лояльности, которые можно обменять на ценные призы.
  • Хорошее казино из ТОП списков никогда не будет скрывать юридическую информацию.
  • Если после этого у вас не пропало желание играть в казино, можете открывать аккаунт и пополнять счет.
  • Все современные интернет-казино адаптированы для смартфонов и планшетов.
  • Формат live casino особенно популярен, потому что воссоздает атмосферу наземных клубов.
  • Онлайн-ставки разрешены только для лицензированных букмекерских контор и тотализаторов.
  • Мошенники могут публиковать выдуманные данные и подделывать карточку валидатора.
  • Тем не менее, многие российские игроки продолжают пользоваться услугами международных онлайн-казино, работающих в юрисдикциях, где онлайн-гемблинг легализован.
  • Эксперты регулярно проводят повторные проверки и поддерживают актуальность рейтинга.

Эксперты Casino.ru проводят ежедневный мониторинг площадок, получивших лицензию. Они проходят проверку, попадают в список с подробным обзором и объективной оценкой. Рейтинг имеет удобную систему фильтрации по новизне, популярности, бонусам, доступным валютам, провайдерам, другим критериям. Игроки могут оставлять свои отзывы о работе того или иного оператора.
Зарегистрированные читатели Casinoz имеют возможность писать отзывы об интернет-казино. Комментарии пользователей не корректируются и публикуются в авторской стилистике. Мы оставляем за собой право лишь удалять спам и сообщения, нарушающие правила сайта. Наиболее широко в онлайн-гемблинге представлена категория игровых автоматов. Новые модели видеослотов появляются едва ли не каждый день. Большинство из них – это пятибарабанные аппараты с разными типами картинок, фри-спинами, всевозможными бонусами и призами.

Работа службы поддержки 24/7

Более того, разработчики софта не позволяют владельцам электронных казино влиять на ГСЧ. Игрок не тратит деньги при их использовании, а выплаты может вывести после выполнения вейджера. Максимальный срок указывается в правилах игровой площадки.
А вот с обналичиванием выигрышей у гемблеров иногда возникают трудности. Дело все в том, что во избежание мошенничества администрация тщательно проверяет своих клиентов и их транзакции. Службы безопасности просматривают всех пользователей, их выигрыши и изучают факт мошенничества с бонусами. Задержки могут быть вызваны особенностями работы финансовых компаний – банкам на зачисление денег на баланс требуется некоторое время.
Программа лояльности — привилегии за повышение статуса аккаунта. Для кешаута в этом разделе нужно выбрать другую вкладку. Для верификации нужно ввести проверочные коды, которые придут на электронную почту и телефон. Затем требуется заполнить анкету в профиле, указав в ней персональные данные. Последний этап — отправка в службу поддержки фотографий документов. Это паспорт или другое удостоверение личности, банковская карта, подтверждение проживания по месту прописки.
Поэтому все чаще спецпредложения доступны только при пополнении счета. Для вывода вознаграждения на карту необходимо открутить в автоматах сумму, кратную нескольким призам. Лучшие казино — это не те, которые дарят огромные бонусы или обещают головокружительные призовые. Лицензированные операторы, следующие принципам ответственной игры, предупреждают пользователей о возможных рисках и добавляют функционал для самоограничения. Если клиент понимает, что ставки перестают быть просто развлечением, он может заблокировать доступ в аккаунт на несколько месяцев без возможности войти в него раньше срока.
В обзорах лучших онлайн-казино России в интернете редакция описывает эти детали, чтобы читатели могли выбрать нужную платформу. Для подтверждения регистрации оператор отправляет письмо на email или сообщение на указанный номер. Если популярное онлайн-казино работает по лицензии, игрока попросят заполнить анкету с персональными данными при открытии учетной записи или в Личном кабинете. Посетителю необходимо указать ФИО, дату рождения и адрес проживания. Информация должна быть достоверной, так как ее придется подтвердить документально. Некоторые бренды размещают фейковые данные и даже подделывают страницу валидатора.

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

Для разных пользователей важны различные характеристики. Тем не менее, рейтинги онлайн казино России дают возможность получить ТОП, который отвечает максимальному количеству требований большинства игроков. Эти заведения позволяют игрокам не только приятно провести время, но и получить хороший выигрыш. Выбор подходящего виртуального клуба – вопрос сложный, особенно для новичков в мире гемблинга. Определиться с выбором поможет список, который формируется на основе ряда важных для игроков критериев. Клубы, которые попадают в такие ТОПы – это заведения, которым можно доверять.
Кроме того, они дают возможность получить выигрыш и быстро вывести его на свой счет удобным способом. ТОПы и рейтинги – отличные помощники в том, как выбрать онлайн казино. Все игроки, которые приходят в клубы азартных игр, хотят не только приятно провести время, но и получить выигрыш. Соответственно, вопрос вывода денег играет важнейшую роль. В ТОП попадают только те, которые гарантированно выводят выигрыши игроков. Операторы предлагают бонусы, чтобы посетители не откладывали первый взнос на счет и регулярно играли на деньги.
А именно – через браузер или специализированное приложение. Среди них встречаются купленные мнения, а также отзывы людей, которые ошиблись в чем-то сами и свалили вину на заведение. Если оператор не дает запустить автомат бесплатно и настойчиво требует пополнить счет, лучше поискать другую платформу. Операторы используют криптографические протоколы, обеспечивающие защищенную передачу данных.
Другими словами, вы должны сделать ставок на определенную сумму, прежде чем сможете снять деньги со счета. Условия отыгрыша бонусов бывают довольно сложными, поэтому не стесняйтесь обращаться за разъяснениями в службу поддержки. Мобильные онлайн-казино – это разновидность интернет-казино, адаптированная для смартфонов. Обычно они представляют собой не более чем версию сайта или устанавливаемое приложение. Они не требуют отдельной регистрации, открывают доступ ко всем услугам и работают по основным правилам и условия. В целом, выбор лучшего казино зависит от индивидуальных предпочтений игроков, их стиля игры и требований к функционалу платформы.

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

Реальные отзывы игроков

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

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

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

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

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

  • Чтобы не ждать ответа саппорта, мы также предлагаем ответы на популярные вопросы, с которыми вы можете столкнуться во время игры.
  • Посмотреть, как выглядит сайт на мобильном телефоне, можно и с компьютера.
  • Прежде чем играть на деньги, крайне важно выбрать надежное онлайн-казино.
  • Хотя на некоторых платформах можно подключиться к трансляции в качестве наблюдателя и изучить интерфейс.
  • Бонусы дают в виде денег, бесплатных вращений, возврата процента проигранных средств.
  • Мы подробно изучаем каждое казино, чтобы рекомендовать только те, которые ведут себя честно по отношению к игрокам.
  • Специалисты Casino.ru проверили, насколько быстро и удобно проходят платежи, соответствуют ли условия бонусов заявленным в описаниях промо.
  • В то время как слоты с низкой волатильностью обещают более частые, но небольшие выплаты.
  • Каждое утро в нашем экспертном отделе начинается с мониторинга новостных лент официальных сайтов игорных заведений.

Рейтинг Онлайн-казино На Реальные Деньги В России

В эти разделы попадают рулетка, покер, блэкджек, крэпс, сик-бо, баккара, андар бахар и т.д.

Ответственная Игра И Помощь При Игровой Зависимости

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

Если игрока обманут, ему будет некуда пожаловаться, поскольку работа казино никем не регулируется. Игроки из России могут пользоваться большинством игр и бонусов в онлайн казино, но сталкиваются с некоторыми ограничениями. Из-за строгих законов о азартных играх и лицензионных ограничений доступ к некоторым играм может быть закрыт. Перед началом игры необходимо проверить лицензию казино и убедиться в его легальности в России. Множество казино предлагают игры на деньги, важно выбирать казино с лицензией, как например, Master License Кюрасао.
В поиске хорошего казино вам поможет наш мобильное онлайн казино рейтинг лучших онлайн-казино. Проверить доступность знакомых способов депозита и вывода нужно еще до регистрации. Иногда логотипы поддерживаемых сервисов вынесены в футер сайта. Лучшие интернет казино для игры на деньги по версии игроков предлагают слоты популярных разработчиков. К их числу относят Pragmatic Play, Endorphina, Relax Gaming, ELK, Push Gaming и другие студии.

  • Наш сайт не проводит игр на деньги и несет в себе только информационный характер.
  • Самые восстребованные призы — это бездепы, которые начисляются без вложений сразу после создания профиля.
  • Сайт создан исключительно с информационной целью и не принимает денежных платежей от пользователей.
  • Обычно они представляют собой не более чем версию сайта или устанавливаемое приложение.
  • Существуют разные факторы, позволяющие определить, подходит ли вам казино или нет.
  • Для этого доступны электронная почта, номер телефона, онлайн чат, социальные сети и мессенджеры.
  • Большинство из них – это пятибарабанные аппараты с разными типами картинок, фри-спинами, всевозможными бонусами и призами.
  • Если после этого у вас не пропало желание играть в казино, можете открывать аккаунт и пополнять счет.
  • Чтобы помочь читателям найти надежную платформу, редакция составила топ-10 онлайн-казино в 2024 году.
  • И тестируем возможности для игры в онлайн казино на реальные деньги там.

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

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

В отзывах игроки делятся мнением о разнообразии выбора слотов, щедрости бонусов, условиях вывода средств, опыте общения со службой поддержки. Они стали дополнительным источником информации при составлении ТОПа. В некоторых онлайн казино необходимо отыграть депозит для того, чтобы выводить выигрыши без комиссии. Если депозит проигранный (от внесенной суммы осталось менее 5%) – отыгрывать его не нужно.

Top Bitcoin Online Casinos

  • При оформлении заявки на кэшаут бонусы могут быть аннулированы.
  • Когда дело доходит до выбора веб-сайта для онлайн-азартных игр, нужно помнить о многих вещах.
  • Проводим проверку предоставленных на официальном сайте номеров, выясняем, в какой стране лицензия была получена.
  • Чтобы войти в ТОП 10 казино, игорный клуб должен набрать максимально большее число баллов по разным критериям.
  • Она действительно существует, и многие гемблеры познали её “прелести” на собственном опыте.
  • Двигаясь дальше, у нас есть Red Dog Casino, еще одна платформа, которую мы очень рекомендуем.
  • В 2024 году на рынке онлайн казино России появился новый игрок — Retro Casino.
  • Это паспорт или другое удостоверение личности, банковская карта, подтверждение проживания по месту прописки.
  • Санкции она вправе наложить только за нарушение правил площадки.
  • High Roller также предлагает эпический набор слотов, живых столов, видеопокера и специальных игр.

Особенно популярны фриспины, позволяющие делать бесплатные вращения барабанов. Многие слоты включают дополнительные функции, активируемые во время игры или при определённых условиях. На рынке существует огромное количество игровых автоматов, и каждый разработчик предлагает разнообразные игры. При выборе слота игроки зачастую оценивают его сначала визуально, не всегда обращая внимание на технические характеристики.
В каталог регулярно добавляются разработки популярных провайдеров. Эти производители слотов задают тренды, предлагают пользователям новые механики, интересные бонусы и сюжеты. Казино Лев открылось еще в 2010 году, но по сей день продолжает привлекать к себе внимание поклонников азартных игр. Сегодня здесь более 200 моделей игровых аппаратов от ведущих провайдеров со всего мира.
Если хотите получать большие выигрыши, выбирайте слоты с отдачей от 96%, джекпотом, множеством бонусов и хорошими отзывами. Еще на сайтах с азартными играми часто проводятся сезонные акции, розыгрыши, лотереи, турниры на игровых автоматах с выводом выигрышей на карту. Операторы предлагают бонусы, чтобы посетители не откладывали первый взнос на счет и регулярно играли на деньги. Важно выбрать акцию с нормальными, реально выполнимыми условиями. Опытные пользователи советуют не соглашаться на спецпредложения с вейджером выше х40, потому что с таким множителем игрок не получит выгоду от бонуса. Поэтому все чаще спецпредложения доступны только при пополнении счета.
При пользовании сайтом игроки предоставляют свои персональные и платежные данные. По политике конфиденциальности казино не может раскрывать эту информацию, передавать ее третьим лицам или публиковать в открытых источниках. Как и наши предыдущие записи, он поддерживает Visa, Mastercard, банковские переводы и несколько криптовалют, таких как LTC, ADA, SOL, XRP и BTC. High Roller был запущен в 2022 году и предлагает свежий выбор лучших игр казино. Он имеет огромный каталог из 900+ игр от ведущих поставщиков, таких как NetEnt, Relax Gaming, Pragmatic Play и многих других. Кроме того, он поддерживает как традиционные, так и криптовалюты, а также многие популярные способы оплаты, такие как Visa, Mastercard, American Express и Neosurf.
Используйте наши онлайн-инструменты и играйте ответственно. Малейшие отличия должны насторожить пользователя и предостеречь от игры на деньги. Для подтверждения регистрации оператор отправляет письмо на email или сообщение на указанный номер.
Тайтлы появляются в каталоге сразу после анонса провайдера. На мошеннических сайтах пользователи не встретят свежие релизы крупных брендов, потому что разработчики не сотрудничают с нелегальными казино. Администрация устанавливает предельный размер вознаграждения, лимит на выигрыш и вывод.