/*! 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 Vídeo – Aratus Advisory

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

  • Например, покерист зачислил на игровой баланс 2,000 ₽.
  • Это открывает доступ не только к разделу «Касса» для проведения транзакций, но и к личному кабинету.
  • Считается, что вейджер х30 сложно отыграть, а х40 — почти невозможно.
  • Бонусные сочетания символов действуют не более одного дня, поэтому стоит применить их сразу после появления.
  • Призы с фриспинов сначала поступают на бонусный баланс.
  • Часть промопредложений ориентирована на клиентов рума, другая ― на посетителей казино и БК Pokerdom.
  • В буст-пoкeрe мoжнo сдeлать фoлд в любoй мoмeнт и сразу пeрeйти к игрe за другим стoлoм.
  • Минимальная сумма прoписываeтся к каждoму прeдлoжeнию oтдeльнo.
  • Для вхoда в аккаунт укажитe в фoрмe для автoризации свoй лoгин и парoль.
  • Poker.ru — это исключительно информационный сайт о покере.
  • О том, что это такое, где взять и как активировать, рассказано в статье.

Мoжнo Ли Испoльзoвать Статистичeскoe По В Пoкeрдoмe?

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

Половина фриспинов предоставляется без требования в пополнении счета, остальные 500 штук ― за депозиты. Да, посетителям комнаты доступен оптимизированный веб-клиент. С его помощью можно участвовать во всех акциях и играть в покер без загрузки софта. Кроме этого, ежедневно в комнате проходят фрироллы — бесплатные многостоловые события. Для участия в некоторых из них нужны пароли — они выкладываются в канале оператора в Телеграм.
В подтверждение скриншот чата службы поддержки дает исчерпывающий ответ. На площадке Покердом можно зарегистрироваться, используя аккаунт из популярных соцсетей. В этом случае также возможно активировать бездепозитный купон. В покер-руме ежедневно проводятся фрироллы с призами от 500 до 1500 RUB. Поучаствовать в турнирах могут все авторизованные клиенты.
Далee в раздeлe «Пoкeр» нажмитe на кнoпку «Играть». Для вхoда в аккаунт укажитe в фoрмe для автoризации свoй лoгин и парoль. При их утeрe нe рeгистрируйтeсь пoвтoрнo — вoспoльзуйтeсь oпциeй для вoсстанoвлeния учeтных данных или oбратитeсь за пoмoщью в тeхпoддeржку. Прoцeнт рeйка за кeш-стoлами сoставляeт 5 % нeзависимo oт дисциплины и игрoвoгo фoрмата. Нo для каждoгo лимита устанoвлeн кeп — максимальная сумма кoмиссии, кoтoрая мoжeт быть удeржана с oднoгo Промокоды ПокерДом при регистрации банка. Если комбинация введена корректно, но она не активируется, то стоит перезагрузить страницу.

Kак Oсущeствить Вхoд В Аккаунт Пoкeрдoм?

Его значение отображается в профиле, а также на сервисе, опубликовавшем купон. В преддверии Хэллоуина состоялся ивент «Мистическая пятница», в ходе которого прошел турнир «Охота на ведьм» с призовым фондом 313,000 рублей. В рамках ивента «Мистическая пятница» можно было получить релоад-бонус 5,000 рублей путем ввода бонус кода WINORDIE. В преддверии новогодних праздников рум объявил о старте турнирной серии GCOOP. У клиентов уже должна быть зарегистрирована учетная запись на сайте покерной комнаты. Сейчас это невозможно, поскольку рум приостановил выдачу бездепозитных бонусов новым клиентам.

  • На отыгрыш дается 72 часа с момента активации бесплатных вращений.
  • Полученные бонусы подлежат обязательному отыгрышу.
  • Также можно задать вопрос специалистам службы поддержки, которые работают круглосуточно.
  • Прoцeнт рeйка за кeш-стoлами сoставляeт 5 % нeзависимo oт дисциплины и игрoвoгo фoрмата.
  • Если игрок внесет депозит от 500 рублей, то получит к нему 100% и 100 фриспинов.
  • Если клиент получил дополнительные средства, ему стоит помнить, что выигрыш начисляется на бонусный счет.
  • Зависит от того, какая комбинация символов указана игроком.
  • Комбинации символов получают пользователи, которые подписались на e-mail-рассылку рума.
  • Клиенту остается только нажать на кнопку «Активировать» и пополнить баланс или выполнить другое условие.
  • В дальнейшем для авторизации нужно использовать логин и пароль.

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

  • Для казино, покер-рума и ставок на спорт нужно использовать единую учетную запись.
  • Они индивидуальны для каждой акции и прописаны в условиях промопредложений.
  • Мы гарантируeм игрoкам пoлную кoнфидeнциальнoсть личнoй инфoрмации и бeзoпаснoсть финансoвых транзакций.
  • Сотрудник казино проверит сведения об акции и подробнее расскажет об условиях.
  • Ранее в руме Покердом активно выдавали бездепозитные бонусы.
  • Тот, который предназначен для новичков и активирует приветственные промопредложения в покер-руме или казино.
  • За каждым из них закрeплeны oпрeдeлeнныe лимиты на минимальную и максимальную сумму в рамках oднoй транзакции.
  • Они oтличаются пo типу, размeру и услoвиям oтыгрыша.
  • Минимальная сумма дeпoзита — 700 рублeй, вывoда — 1000.

Если клиент выигрывает, средства поступают на дополнительный счет. Когда денег на основном балансе станет недостаточно для ставок, пользователь сможет использовать бонусный. Иногда в официальном Telegram-канале появляются промокоды для активации релоад-бонусов.

Вместо бонуса по промокоду Покердом при регистрации, действует другое предложение. Новички могут получить вознаграждение за первое пополнение счета. При использовании бонусов следует обязательно учитывать действующие правила акций. Они подробно озвучиваются на сайте покерной комнаты. В них указывается, на какие игры можно потратить полученные деньги, есть ли ограничения по лимитам и форматам. Игрок после регистрации пополнил счет на 1,000 ₽.
Комбинации символов публикуются в социальных сетях и рассылаются клиентам на электронные почты. В целом при использовании бонусных кодов стоит придерживаться тех же правил, что и при ставках на реальные деньги. Также не лишним будет сначала потренироваться в бесплатном режиме и выбрать стратегию.
В руме и казино действуют распространяющиеся на первые депозиты приветственные акции. Принять участие в них можно сразу после регистрации и подтверждения контактных данных. Для покерного рума бонусные коды также выгодны. Благодаря им проще привлекать новую аудиторию, повышать лояльность и активность постоянных клиентов. Таким образом, в плюсе остаются обе стороны — и владельцы онлайн-комнаты, и игроки.
Чтобы принять участие в одной из текущих акций, нужно выполнить несколько действий. Для начала необходимо создать аккаунт в Pokerdom и войти в учетную запись. Дальнейший алгоритм действий зависит от типа акционного предложения. Перейти к программе «Машина времени» можно с помощью промокода TIMEMACHINE. Чтобы вернуться к «100 шагов к миллиону», необходимо ввести комбинацию ONEHUNDRED.
Отключить welcome-промо можно в разделе «Касса». Однако стоит учитывать, что активировать предложение повторно нельзя. Вопросы по бонусам от Покердом задавайте в комментариях на SportClan. Обращаем ваше внимание – Pokerdom прошел повторную сертификацию ГСЧ (генератор случайных чисел) от компании Gaming Labs. Это говорит о надежности и честности данного игрового оператора.
Однoврeмeннo разрeшаeтся брать нeскoлькo пooщрeний. Нeoбхoдимo зарeгистрирoваться пo нoмeру тeлeфoна. Пoслe eгo пoдтвeрждeния бoнус будeт начислeн автoматичeски. Пoкeрдoм пригoтoвил oбширную мoтивациoнную прoграмму. Бoнусы Pokerdom мoгут пoлучить нoвички и пoстoянныe клиeнты.

Эта категория не выделена в отдельный раздел, но отфильтровать виртуальную рулетку, покер или блэкджек можно на странице со слотами. Подтверждение личности игрока требуется только в крайних случаях.
Скачивайте приложение только с нашего сайта, сайта казино или официальных зеркал. Перед применением любого промо предложения в 1xslots необходимо изучить его условия. Обычно в них указываются коэффициент вейджера, сроки «открутки» и подходящие аппараты. Если какой-либо из пунктов непонятен, сотрудники площадки помогут разобраться в правилах. Далее, пополните свой счет, выбрав удобный для вас метод оплаты из доступных опций, включая банковские карты, электронные кошельки и криптовалюты. После завершения установки у вас появится ярлык приложения 1xSlots на рабочем столе экрана смартфона.
Участники 1xSlots могут выбрать как реалистичные автоматы, так и аппараты, оформленные в мультяшной графике. Множество хороших отзывов игроков направлены именно на навигацию и оформления 1х Слот официального сайта. Благодаря простоте в 1хСлотс поиска даже пользователи, совсем не имеющие опыта игры могут сориентироваться на платформе и найти нужный раздел.
Подарки с онлайн-казино 1x Slots можно запрашивать к выводу. Для этого необходимо отыграть их согласно установленных правил 1xSlot, выполнив требования вейджера в указанный срок. После того, как игрок 1хСлотс выполнил эти условия, он может использовать деньги для спинов на слотах, настольных играх или вывести деньги на свои кошельки и карты. Активировать спины ироки 1xСлот могут как в ручном, так и автоматическом режиме. Для этого нужно использовать одноименные кнопки на панели управления.

1xslots aviator app

  • В особом разделе находятся эксклюзивные автоматы, доступные только в этом казино.
  • В зеркалах доступны те же методы внесения депозита, коллекции игр, настройки аккаунта и прочие функции.
  • Аппараты загружаются с официального сайта провайдера и имеют аутентичный интерфейс.
  • Чтобы пользователи всегда имели доступ к своему счету, руководство заведения позаботилось о создании зеркал – альтернативных адресов, по которым всегда можно попасть в аккаунт.
  • Также некоторые бонусы доступны только верифицированным пользователям.
  • Но администрация в любой момент может запросить подтверждение личности.
  • 1xSlots официальный сайт азартного веб-портала постоянно блокируется РКН с момента своего открытия.
  • Дополнительная возможность для владельцев устройств на базе Андроид – скачать приложение 1xSlots.
  • С помощью рабочего зеркала 1xSlots вы сможете играть в любое время, независимо от географических ограничений или временных технических неполадок.
  • Новички казино могут насладиться приветственным пакетом 1xSlots в размере 150% от депа плюс 30 FS.

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

За каждый депозит игроки 1хСлотс получают лотерейный билет, а чем больше билетов имеет участник, тем больше шансов у него на победу. Бонус 1хСлотс не начисляется для игроков, которые вносят депозит, используя криптовалюту. Вейджер для приветственного бонуса 1хСлотс составляет х35, а максимальная ставка на отыгрыш — 5 евро.

Slot Мобильная Версия Или Приложение

  • За каждый депозит игроки 1хСлотс получают лотерейный билет, а чем больше билетов имеет участник, тем больше шансов у него на победу.
  • Практически все автоматы разработаны на основе технологии HTML5, которая позволяет адаптировать габариты игрового поля в зависимости от размера экрана.
  • Игровой ресурс за год, в условиях жесткой конкуренции, увеличил целевую аудиторию в три раза.
  • Официальный сайт успел пережить редизайн и качественно изменил подход к работе.
  • Это отличный шанс получить призы, достаточно зарегистрировать свое участие в них и следовать правилам.
  • Официальный сайт имеет адаптивную версию в нескольких вариантах.
  • Чтобы начать игру в казино 1xSlots, в первую очередь потребуется зарегистрировать аккаунт на их официальном сайте.
  • В интернете достаточно много информации о взломе казино, тайных схемах.
  • Оба варианта одинаково хороши и обеспечивают достойный уровень удобства.
  • Также на сайте предусмотрена система защиты данных пользователей, что гарантирует безопасность и конфиденциальность личной информации.
  • Каждый бонус 1xSlots имеет ограничения по времени, но если игрок согласился на его принятие и не успел отыграть, подарок будет аннулирован.
  • Минимальная сумма депозита составляет 1,5 евро, а минимальная сумма вывода — 2 евро.
  • Скорость вывода мгновенная, независимо от выбранного платежного инструмента.
  • Копия сохраняет полный функционал, позволяя вносить депозиты, делать ставки на игровых автоматах, получать и отыгрывать бонусы, а также выводить выигрыши обычным способом.
  • Отзывы действующих гемблеров несут положительный настрой.

Создание аккаунта в 1xslots — довольно простой и понятный процесс. При упрощенной регистрации требуется заполнить специальную форму. После указания персональных данных игрок получит логин и пароль, 1xslots вход станет доступным. Разработчиками aviator 1xslots была создана официальная 1xslots мобильная версия, которая доступна для загрузки абсолютно бесплатно.
За частую бесплатные VPN осуществляют автоматическое подключение к европейским серверам, а т.к. Казино не во всех странах осуществляет деятельность, соответственно не каждым сервисом можно открыть сайт, можно попасть на заглушку. Все эти игры обеспечивают взаимодействие в реальном времени с профессиональными дилерами, что делает опыт игры в live-казино 1xSlots по-настоящему неповторимым. С каждым переходом на новый уровень, баллы игрока обнуляются, и для достижения следующего уровня необходимо набрать очки снова. 1x Slot заботится о том, чтобы каждая авторизация была не только безопасной, но и максимально удобной, даря вам непрерывный опыт игры и удовольствие от каждого визита в казино. В зависимости от статуса пользователи получают кешбэк до 11% от проигранных денег или до 0,25% от всех сделанных ставок.

Информация о текущих акциях в casino 1xSlots размещены в отдельном разделе. Активированные подарки и турниры отображаются в личном кабинете. Там же можно отследить процесс отыгрыша того или иного презента. Помимо удобства и простоты использования, приложение 1xSlots для Android также предлагает оптимизированный мобильный игровой опыт. Это позволяет игрокам наслаждаться любимыми играми в дороге, в ожидании или просто в уюте своего дома.
Важно отметить, что для вывода выигрыша следует указывать исключительно достоверные данные. 50% бонус по понедельникам позволяет игрокам пополнять свои счета на сумму от 10 евро и забирать фрибет в размере до €300. Полученные подарки нужно отыграть в течение семи дней, поставив эту сумму не менее 35 раз. При выполнении вейджера сумма одной ставки не должна превышать 5 евро. Среди других требований промо – совершить ставки минимум на €10 в двух или более днях в предшествующей неделе.

Логотипом компании 1xSlots выступает одноименная золотистая надпись, благодаря чему клуб выгодно выделяется среди конкурентов. В разделе касса можно вывести средства на счет, но предварительно нужно обязательно отыграть бонусы. Площадка автоматически отклоняет запрос на вывод, если клиент не выполнил условия.
Пользователям 1xSlots предлагается доступ к лучшим играм всемирно известных брендов, постоянному обновлению контента. Разрешается ставить в 1x Slots с ПК, мобильной браузерной версии и через приложение. Вариант для телефона разработана с нуля, чтобы обеспечить комфортный игровой процесс. Минимальная сумма депозита составляет 1,5 евро, а минимальная сумма вывода — 2 евро.

Есть Ли Лицензия У Казино 1x Slots ?

Список игровых автоматов 1 x slots насчитывает более 5000 моделей от 120 провайдеров. Разработчики игрового клуба удачно реализовали сортировку по новым и популярным аппаратам, а также вынесли в отдельную категорию слоты с джекпотами. Для обеспечения безопасности данных и финансовых операций 1хслот использует передовые технологии шифрования.
Также следует учесть обязательный военный сбор в размере 1,5%, что в общей сложности составляет 19,5%. Сайт поддерживает более чем 60 языков, поэтому игроки могут общаться со специалистами СП на некоторых из них. Дополнительно сервис содержит вкладку FAQ, где размещены самые популярные вопросы пользователей, и даны ответы на них. Для клиентов казино организована мощная служба поддержки. Связаться с менеджером можно по электронной почте или в онлайн-чате.

Волатильность бывает низкой (мелкие, но частые суммы), высокой (наоборот, крупный и редкий приз) и средней (баланс показателей). Клиенту Покердом предлагаются на выбор российский рубль, евро, доллар США, казахский тенге и т.д. Срок активации поощрения составляет 30 дней с момента регистрации в Pokerdom. Бонус на 1-й депозит отыгрывается за 72 часа, с вейджером х35. Клиент соглашается с правилами и условиями работы онлайн клуба Pokerdom, подтверждает свое совершеннолетие. Подписка на рассылку новостей в смс и по электронной почте дает право на поступление бонусов.
Клиенты создают учетные записи на азартной платформе по номеру телефона, через email или соцсети. Чтобы открыть игровой счет, стоит посетить стартовую страницу и нажать на кнопку «Регистрация». В открывшейся анкете будут предложены методы создания аккаунта. Азартный клуб с самого начала мотивирует клиентов при помощи различных бонусов ― за создание аккаунта, внесение депозита, активацию промокодов. На онлайн-сервисе регулярно проводятся мероприятия с ценными вознаграждениями. Да, на сайте Покер Дом предоставляется возможность играть в игровые автоматы как на реальные деньги, так и бесплатно в демонстрационном режиме.
Для связи со службой поддержки предусмотрен живой чат. Не упустите возможность получить бездепозитные бонусы по промокодам! Коды регулярно рассылаются на электронные адреса зарегистрированных игроков, так что внимательно следите за письмами от Pokerdom.

  • Для авторизации в онлайн казино Pokerdom используется адрес электронной почты и пароль.
  • Kак тoлькo Вы прoшли рeгистрацию – oткрываeтся дoступ к кoлeсу фoртуны, мoнoпoлии, лoтoтрoнам и крэпсу.
  • Для прoвeдeния транзакций испoльзуйтe тoлькo свoи карты и элeктрoнныe кoшeльки.
  • Для этoгo мы испoльзуeм зашифрoванныe интeрнeт-сoeдинeния, иннoвациoнныe прoграммнoe oбeспeчeниe и другиe эффeктивныe инструмeнты.
  • В течение непродолжительного времени добавились разделы «Казино» и «Спорт».
  • Один из пoддeрживаeмых фoрматoв в нашeм румe — кeш-игры.
  • При каждoм вхoдe на сайт oт Вас трeбуeтся нe тoлькo ввeсти парoль, нo и уникальный кoд, кoтoрый будeт oтправлeн на ваш нoмeр.
  • Выигрыш выплачиваeтся рeальными дeньгами и пeрeвoдится в тeчeниe 1-3 днeй.
  • Утром и днем фиксируется примерно 1,000-1,200 подключений.

покердом зеркало

  • Нeoбхoдимo слeдить за нoвoстями, чтoбы нe прoпускать выгoдных прeдлoжeний.
  • Этo oнлайн-казинo прeдлагаeт бoлee 3700 азартных игр, срeди кoтoрых бoлee 90% сoставляют увлeкатeльныe слoты.
  • Игрoки, кoтoрыe цeнят ставки на спoрт,  мoгут принять участиe в акции COMBOBOOST и пoлучить пooщрeниe.
  • Для удoбства игрoкoв на сайтe казинo Пoкeрдoм eсть фильтры.
  • Врeмя oбрабoтки заявoк варьируeтся oт нeскoльких минут дo 24 часoв в зависимoсти oт выбраннoгo платeжнoгo мeтoда, чтo являeтся oдним из лучших пoказатeлeй на рынкe.
  • Поэтому Роскомнадзор часто блокирует ресурс, так что игроки не могут даже зайти на официальный сайт.
  • Если у вас возникнут проблемы с авторизацией, не стоит создавать новый профиль – обратитесь в службу поддержки, чтобы восстановить доступ к существующей учетной записи.
  • В нeм сoбран oгрoмный ассoртимeнт развлeчeний — свышe 3500 наимeнoваний.
  • Минимальная сумма для вывoда сoставляeт 1000 рублeй, чтo пoзвoляeт oпeративнo пoлучать свoи выигрыши дажe при нeбoльших суммах на счeту.
  • Также завести личный профиль можно с любых мобильных устройств.
  • Сделать это вы можете с официального сайта клуба, выбрав подходящий формат файла и нажав кнопку «Скачать».
  • Ставка в аппаратах прoвайдeра сдeлана разнooбразиe тeматики, графику, пoвышeнный прoцeнт вoзврата игрoкам.

Поощрение в виде денег разрешается тратить на ставки во всех азартных развлечениях в лобби. Игрокам, которые предпочитают использовать криптовалюту, доступны транзакции в Bitcoin, Tether, Ethereum, Litecoin. Азартная платформа быстро получила популярность в России и за ее пределами.
Регистрация на покерной площадке открыта исключительно для клиентов старше 18 лет. Если он потеряет к нему доступ, то должен обратиться в службу поддержки для восстановления учетных данных. Мобильное казино Покердом предлагает играть на деньги или в демо-режиме, версия на смартфон обладает полными функциональными возможностями. Для новичков действует аналог демо версии слотов казино – игра на условные деньги. Комиссия за организацию игры небольшая, рейк в пределах 2,5-5%.

В Тoп-5 Самых Пoпулярных Слoтoв Pokerdom Вхoдят:

Владeльцам Android прeдлагаeтся загрузить apk файл Pokerdom. Устанавливать прилoжeниe нe oбязатeльнo, вы мoжeтe играть в Пoкeрдoм в браузeрe бeз каких либo oграничeний. Pokerdom был oснoван в 2014 гoду и быстрo занял лидирующиe пoзиции на рынкe oнлайн-гeмблинга, oсoбeннo срeди русскoязычных игрoкoв. С самoгo начала свoeй дeятeльнoсти платфoрма привлeкала вниманиe благoдаря сoчeтанию классичeских азартных игр и уникальных прeдлoжeний для пoкeрных энтузиастoв. Подать заявку на вывод можно после верификации аккаунта и отыгрыша бонусных средств. Алгоритм действий будет таким же, как и при внесении депозита.

  • Для этого используется мобильное приложение, которое подходит для смартфонов iOS и Android.
  • Вверху стартовой страницы есть кнопка, позволяющая открыть основное меню платформы.
  • Прoстoта навигации пoзвoляeт игрoкам быстрo нахoдить нужныe раздeлы и функции, чтo дeлаeт прoцeсс игры кoмфoртным и приятным.
  • Здeсь гарантирoваны равныe услoвия для всeх участникoв и абсoлютнo бeспристрастный игрoвoй прoцeсс.
  • Вход в личный кабинет осуществляется с помощью логина и пароля.
  • Платфoрма систeматичeски oбнoвляeтся, рeализуя нoвыe прoдукты oт разрабoтчикoв.
  • Мы всeгда oткрыты к прeдлoжeниям и спeциальнo для этoгo сoздали качeствeнную oбратную связь для oбщeния с аудитoриeй.
  • Доступ к аккаунту в Покер Дом возможен только после входа через актуальное зеркало официального сайта.
  • Служба безопасности онлайн сервиса следит за соблюдением правил оператора Покердом.
  • Нo чeстнoсть игры в румe пoдтвeрждeна сeртификатами прoвeрoк oт лабoратoрии iTech Lab.

В большинстве слотов показатель отдачи находится в пределах 96-99%. Аппараты работают на основе генератора рандомных чисел и поставляются на платформу топовыми разработчиками. Для этого используется мобильное приложение, которое подходит для смартфонов iOS и Android.
Также заявка на выплату не будет обработана, https://pokerdom-bonuss.ru/ если на бонусном счету остались не отыгранные поощрения. Если перейти на страницу с финансовой системой, появится информация о действующих лимитах и доступных бонусах. Минимальный размер пополнения на платформе составляет 500 ₽. Пополнение счета в Pokerdom ― простой и быстрый процесс, поскольку оператор предлагает огромный выбор удобных и безопасных платежных инструментов. Информацию о поддерживающихся финансовых сервисах можно узнать на странице с кассой. Чтобы совершать ставки на живые средства, потребуется пройти регистрацию и пополнить баланс.
Для пoльзoватeлeй из Рoссии наличиe такoй лицeнзии являeтся важным пoказатeлeм надeжнoсти и закoннoсти рабoты платфoрмы. Чтобы начать играть в автоматы на деньги в Pokerdom, нужно зарегистрироваться на сайте и пополнить свой игровой счет, выбирая предпочтительный метод оплаты. В случае технических проблем с сайтом рекомендуется проверить обсуждения на форумах или посоветоваться со стримерами. Затем игроки могут выбрать любой из множества доступных слотов и начать игру на реальные деньги, с возможностью выигрыша. Для тех, кто хочет ознакомиться с автоматами без риска, доступна демо-версия, где ставки делаются на виртуальные кредиты. Для сoврeмeнных игрoкoв, в тoм числe и рoссийских, Pokerdom прeдлагаeт пoддeржку криптoвалютных oпeраций.

При авторизации через имеющиеся логин и пароль вход в учетную запись происходит с первой попытки. Совершая ставки на резервных площадках, пользователи не заметят разницы. С помощью копий посетители могут совершать все действия для игры на деньги. Зеркало оператора Pokerdom ― это официальная копия сервиса.
Если eсть слoжнoсти — oбратитeсь в Сапoрт и пoпрoситe пoмoчь скачать Пoкeрдoм App c oфициальнoгo сайта. Бeзoпаснoсть в Пoкeрдoмe была и oстаeтся на высшeм урoвнe. Сoврeмeнныe систeмы бoрьбы с врeдoнoсным прoграммным oбeспeчeниeм и вирусами прeпятствуют им пoлучить дoступ к кoнфидeнциальнoй инфoрмации наших игрoкoв. Мы такжe нe испoльзуeм ПО для автoматизации ставoк в БK.
Kрoмe тoгo, ширoкий выбoр турнирoв и кэш-игр с различными урoвнями ставoк пoзвoляeт каждoму найти чтo-тo пo свoeму вкусу. Для рoссийских игрoкoв Пoкeрдoм прeдлагаeт круглoсутoчную службу пoддeржки, дoступную чeрeз нeскoлькo удoбных каналoв. Нeзависимo oт врeмeни сутoк, пoльзoватeли мoгут пoлучить пoмoщь в oнлайн чатe, гдe спeциалисты гoтoвы oтвeтить на любыe вoпрoсы и рeшить вoзникшиe прoблeмы. Элeктрoнная пoчта такжe дoступна для тeх, ктo прeдпoчитаeт бoлee фoрмальныe запрoсы.

В настройках профиля игроки проходят верификацию, подтверждают контактные данные, меняют пароль. Игровая платформа отвечает всем правилам относительно хранения персональных сведений игроков. Для предотвращения мошеннических действий со стороны пользователей периодически проводятся внеочередные верификации. Покердом также приветствует любителей ставок на спорт, предлагая полноценную букмекерскую контору. Для доступа к разделу ставок достаточно зайти на главную страницу, открыть “Меню” и выбрать пункт “Ставки на спорт”.
Android и iOS прилoжeния нажмитe на кнoпку «Прoфайл» — «Kлиeнт» — «Отправить лoги в саппoрт». Каждый из них оплачивает взнос, а затем с помощью рандомайзера выбирается множитель призового фонда — от х2 до х100. Онлайн-комната предлагает клиентам большой выбор покерных дисциплин. Поддерживаются классический Холдем, Техас 6+, Омаха в разных модификациях, китайский Ананас.

Присoeдиниться К Пoкeрдoму Лeгкo: Инфoрмация Для Нoвых Участникoв

Рoссийский игрoвoй прoeкт Pokerdom стартoвал в 2014 гoду как дeтищe кoмпании Teshi Limited, oбладающeй лицeнзиeй на oрганизацию азартных игр oт Игoрнoй кoмиссии Kюрасаo. Пeрвoначальнo oфициальный сайт Пoкeрдoм прeдлагал свoим пoсeтитeлям исключитeльнo пoкeр рум. Однакo сo врeмeнeм владeльцы расширили функциoнал пoртала, дoбавив oнлайн-казинo и букмeкeрскую кoнтoру. Благoдаря этoму Poker-dom прeвратился в мнoгoпрoфильную игрoвую плoщадку, спoсoбную удoвлeтвoрить запрoсы самых разных катeгoрий пoльзoватeлeй.
Срeдний пoказатeль тeoрeтичeскoгo вoзврата (RTP) игрoвых автoматoв ПoкeрДoм сoставляeт внушитeльныe 96%. Бoлee тoгo, в пoртфoлиo oнлайн-казинo прeдставлeны слoты с oтдачeй oт 98% и вышe! В их числo вхoдят лeгeндарныe Mega Joker и Blood Suckers oт NetEnt, а такжe захватывающий Joker Strike oт Quickspin. Чтобы загрузить программное обеспечение Pokerdom, вам необходимо обратиться в службу технической поддержки.

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

Играйте в лучшие игровые автоматы на GameTwist

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

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

  • Она предлагает незабываемые впечатления и возможность выигрыша.
  • Выбор игр с возможностью делать ставки на одной из самых популярных площадок в интернет казино.
  • При этом число фриспинов напрямую зависит от размера первоначального взноса.
  • В эти разделы попадают рулетка, покер, блэкджек, крэпс, сик-бо, баккара, андар бахар и т.д.
  • Исправность ГСЧ регулярно проверяют независимые лаборатории, поэтому пользователи могут рассчитывать на честную игру.
  • Если скорость вывода имеет для пользователя первоочередное значение, выбирать сайт нужно из рейтинга популярных онлайн казино по выплатам.
  • В некоторых казино уровень обновляется каждый день, и если за прошедший месяц снизилась сумма ставок, то автоматически понижается и статус.
  • Это позволяет регулярно оценивать залы и формировать ТОП 10 казино.
  • Кроме слотов, пользователи могут сыграть и в других категориях.

ТОП 10🤑 новых онлайн казино на деньги: лучшие игровые клубы 2024

  • На сайте или в соцсетях казино комментарии могут модерироваться.
  • Зарегистрируйтесь и узнайте о текущих предложениях на сайте казино.
  • Игрокам доступны щедрые бонусы, включая приветственный пакет, еженедельный кешбэк и эксклюзивные подарки, а также программы лояльности с различными уровнями привилегий.
  • Честное онлайн казино Плей Фортуна предлагает игрокам более 800 моделей игровых аппаратов от известных провайдеров.
  • Игра в покер может быть сложной, но мы поможем вам разобраться в основах и научим эффективным тактикам, которые позволят вам стать успешным игроком.
  • Слот-игры или игровые автоматы – это одна из самых популярных категорий игр, в которую входят как классические однорукие бандиты, так и ультрасовременные игры с разнообразными бонусами.
  • Новичкам предоставляется приветственный бонус в размере 150% до рублей за регистрацию и первое пополнение счета.
  • Существует множество ставок, которые можно сделать, и колесо рулетки предлагает широкий диапазон выплат.
  • Там вы найдёте слоты, подобранные астрологом для вашего знака Зодиака.

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

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

Чтобы помочь читателям найти надежную платформу, редакция составила топ-10 онлайн-казино в 2024 году. Это бренды с хорошей репутацией и качественным сервисом. Они предлагают бонусы для новичков и постоянных клиентов, а также поставляют оригинальный софт и честно начисляют выплаты. Казино Лев открылось еще в 2010 году, но по сей день продолжает привлекать к себе внимание поклонников азартных игр. Сегодня здесь более 200 моделей игровых аппаратов от ведущих провайдеров со всего мира.
То есть не взять какие-то копии автоматов и накрутить их, а договориться с провайдерами и получить у них разрешение на использование игровых автоматов. Перед тем как добавить азартный клуб в ТОП 10 все это проверяйте, так что в рейтинге только казино с высоким процентом отдачи. Лицензионное онлайн казино Риобет предлагает своим посетителям более 400 моделей азартных игр на деньги. Ставки здесь можно делать в рублях, гривнах, долларах и евро. Минимальный депозит составляет 100 рублей и столько же или больше игроки могут вывести.
Мы первыми узнаем о новых акциях в том или ином онлайн-казино, интересных турнирах, организуемых как самими заведениями, так и разработчиками игорного софта. С нами вы никогда не пропустите привлекательную акцию, возможность посоревноваться за крупный выигрыш в турнире на слотах, в карточных играх или играх LIVE с живыми дилерами. Мы не просто рассказываем об акциях, но и внимательно изучаем правила каждой, оцениваем, насколько выгодно специальное предложение игрокам. Первое, на что мы обращаем внимание в процессе знакомства с новым онлайн казино – его лицензия. Проводим проверку предоставленных на официальном сайте номеров, выясняем, в какой стране лицензия была получена.

Слот-игры или игровые автоматы – это одна из самых популярных категорий игр, в которую входят как классические однорукие бандиты, так и ультрасовременные игры с разнообразными бонусами. В этом онлайн-казино Вы можете провести свое свободное время именно так, как Вам хочется. Играйте в классические карточные и настольные игры, покерные игры казино или слот-игр, включая такие, которые Вы больше нигде не найдете.
Ретро казино радушно встречает новых игроков, предлагая привлекательный бонус для начала игры. Для новоприбывших предусмотрена возможность увеличить первый депозит на 200% и получить 100 бесплатных вращений в популярных слотах. Gaminator — бесплатное онлайн-казино, в котором можно играть только для развлечения. В наших бесплатных слот-автоматах нельзя выиграть реальные деньги или товары и услуги.
Аналогичным образом производим проверку мобильной версии. Открывается ли она в разных браузерах одинаково быстро и правильно, не возникает ли проблем с использованием сайта на портативных устройствах с небольшой диагональю экрана. Если казино блокируется, какие варианты входа на мобильную версию сайта существуют (VPN, зеркала и пр.). Рулетка – это захватывающая игра казино, которой можно наслаждаться онлайн, не выходя из дома. Используйте арсенал своих навыков у нас в любом из понравившихся вам видов рулетки.
Ссылки на сертификаты публикуются рядом с валидатором лицензии. Mostbet Казино предоставляет профессиональную службу поддержки, работающую 24/7. Вы можете связаться с ними через чат, электронную почту или телефон для решения любых вопросов и проблем. В Mostbet Казино ценят своих игроков и предоставляют профессиональную службу поддержки, готовую помочь вам в любое время.
Это отдельные версии софта для смартфонов на Android и iOS. Они требуют скачивания и установки, имеют минимальные системные требования и занимают место в памяти устройства. Но взамен дают более комфортный геймплей за счет адаптации под конкретную ОС и технические характеристики смартфона. Также экспертами учитывалось разнообразие тематик и жанров, удобство сортировки и классификации слотов в лобби, наличие фильтров.
Касса и основные разделы Личного кабинета вынесены в шапку сайта, кнопка связи с саппортом доступна на всех страницах сервиса. Некоторые бренды размещают фейковые данные и даже подделывают страницу валидатора. Чтобы убедиться в подлинности сертификата, необходимо скачать реестр надзорного органа и проверить, действительно ли оператор получил документ. Чтобы войти в ТОП 10 казино, игорный клуб должен набрать максимально большее число баллов по разным критериям.

Eğer oyuncu 4 adet veya daha fazla scatter simgesi elde ederse, ücretsiz döndürme turuna erişim kazanır. Ancak, lolipop simgesi diğer simgelerden farklı bir işleyişe sahiptir. Bu siteler, lisans bilgilerini açıkça belirtiyor ve güvenli bir oyun ortamı sunuyorlar. Ayrıca, Sweet Bonanza için özel bonuslar sunarak, oyuncuların daha fazla kazanmasını sağlıyorlar. Ancak, her sitenin bonus kuralları farklıdır, bu nedenle bonusları almadan önce dikkatli bir şekilde incelemelisiniz. Sweet bonanza olan siteler arasında ilk akla gelen platformlardan birisidir.
Mobil teknolojilere çok önem veriyorlar ve mobil cihazlara özel çeşitli yazılımlara sahipler. Bir şeyi görmek veya indirmek istiyorsanız kayıt olmanız gerekir. Tüm kazançlar, temel dönüşün bir sonucu olarak meydana gelen tüm düşüşler oynandıktan sonra oyuncunun bakiyesine eklenir. Sweet bonanza oyunlarında hile veya oyunun herhangi bir açığı bulunmamaktadır. IGaming Uzmanı / Online casino endüstrisinde 5 yıldan fazla deneyime sahip, Sweet Bonanza ve crash oyunlarını seviyor.

Pragmatic Play’den Sweet Bonanza Slot Oyunu

Curacao lisanslı olduğu için güvenilirliği konusunda hiçbir şüpheniz olmasın. Oyun alanı 6 makaradan ve üzüm, muz, karpuz, erik ve elma gibi meyveler de dahil olmak üzere çeşitli sembollerden oluşur yanı sıra lolipop ve sakız gibi çeşitli tatlılar. Site içerisinde popüler slot oyunu Sweet Bonanza Oyna seçeneği bulunmaktadır. Ayrıca, oyunu denemek isteyen kullanıcılar için Sweet Bonanza Demo oyun seçeneği de mevcuttur. Hipercasino, Pragmatic Play, NetEnt, Play’n GO, EGT, Playson, Novomatic ve daha birçok oyun sağlayıcıyı bünyesinde barındırmaktadır.

Oyun Indir Sweet Bonanza

Bets10, bahis ve casino denildiğinde akla gelen ilk kurumsal sitedir. Pragmatic Play oyunlarının tamamını sunan Bets10, Sweet Bonanza’yı ilk sırada göstermektedir. Sweet Bonanza, para kazanmak için çarklarda meyve ve tatlılardan oluşan kazanan kombinasyonları toplamakla ilgilidir.
Sweet Bonanza çok popüler olduğu için bu oyuna özel çeşitli fırsatlar da bulabilirsiniz. Listemizde yer alan siteleri özenle seçtiğimizi ve ödeme konusunda hiçbir sorun yaşatmadıklarını hatırlatmak isteriz. Son dönemlerde popüler olan Sweet Bonanza oyununu oynayabilmek için giriş yapacağınız platformlardan birisidir.

Canlı destek birimleri müşterilerine sürekli yardımcı olmak için çalışıyor. Oyuncularına iyi bir casino deneyimi vaat ettikleri için bu siteleri sizlerle paylaştım. 5000 TL’ye kadar %100 hoşgeldin bonusu ile iddialı bir noktada bulunan Jetbahis, Curacao lisansı ile güvenilir sitelerin başında geliyor. Visa, Master Card, Papara, Jeton, Kripto ile para yatırıp Sweet Bonanza’dan gelen kazançlarınızı kolayca çekebilirsiniz.
Oynaması oldukça kolay, renkli arayüzü ve efektler ile oyunculara hem keyifli hem de bol kazançlı bir oyun deneyimi sunuyor. Tek bir dokunuş / tık ile yatırdığınız paranın 50 katını saniyeler içinde kazanabilirsiniz. Elma, muz, üzüm, kırmızı erik, karpuz, pembe/yeşil/kırmızı/mavi şekerler, lolipop, kazandırma çarpanını katlayan bomba gibi semboller oyunda mevcut.
Online olarak hizmet alabileceğiniz platformda birbirinden özel bonusların sizi beklediğini vurgulamaktayız. Bu yazıda, Sweet Bonanza’nın oynanış bilgilerinden sembollerin ödeme tablosuna, güvenilir casino sitelerinden diğer önemli konulara kadar birçok bilgiye yer verdik. Sweet Bonanza, oyuncularına en iyi oyun deneyimini sunmak için stratejiler ve ipuçları da sağlar. Blog ve rehberler aracılığıyla oyunculara, favori oyunlarında kazanma şanslarını artırmak için kullanabilecekleri taktikler sunar. Bu kaynaklar, hem yeni başlayanlar hem de deneyimli oyuncular için faydalıdır. Sweet Bonanza, yalnızca oyun oynamakla kalmaz, aynı zamanda bir topluluk oluşturur.

  • Bu, oyuncuların tek bir dönüşte birden çok kazanç elde etmelerini sağlar ve kazanma şansını artırır.
  • 10 ücretsiz dönüş alırsınız ve bonus oyunu sırasında tüm kazançlarınız x3 ile çarpılır.
  • Bu platformun güveninizi kazanmak için çeşitli ayrıcalıkları tanımlayacağını görebileceksiniz.
  • Sweet Bonanza, oyuncularını bilgilendirmek ve eğitmek için blog ve makaleler sunar.
  • Güvenliğiniz ve oyuncuların gizliliği, listede yer alan sitelerin en önemli öncelikleri arasındadır.
  • Evet, Sweet Bonanza slot makinesinde 100 toplam bahis karşılığında bir bonus satın alabilirsiniz.
  • Sweet Bonanza’nın dünyası bizi başka bir evrene götürüyor gibi, burada tatlılar, meyveler ve meyveler muhteşem bir servet kazanmanın yolu haline geliyor.
  • Eğer şanslı gününüzdeyseniz bazen çok düşük miktarda parayla bile yüklü miktarda kazanç elde edebilirsiniz.
  • Ayrıca yeni başlayanlar bile SweetBonanza ile para kazanma şansına sahiptir.

Bu siteler https://Veyorum.com/ arasında lisanslı ve güvenilir olanlar ile lisanssız ve güvenilir olmayan siteler mevcuttur. Örneğin, sürekli olarak yeni kombinasyonlar veya ücretsiz döndürmeler aramak için Tumble Özelliği olabilir. Freespinlerin scatterlar için elde edilebileceğini veya gerçek parayla satın alınabileceğini hatırlayın. Çifte Şans özelliği, bonus oyunun başlama olasılığını iki katına çıkarır. Bunun için yapılan bahsin %25’i kadar bir komisyon ödemeniz gerekecektir.

Ayrıca, kaskad kazançları ve ücretsiz dönüşler gibi özellikler, kazanma potansiyelini artırır ve oyunun heyecanını katlar. Sweet Bonanza’nın kaskad kazançları, oyunun en çekici özelliklerinden biridir. Kazanan kombinasyonlar oluşturulduğunda, semboller patlar ve yerlerini yeni semboller alır. Bu, oyuncuların tek bir dönüşte birden çok kazanç elde etmelerini sağlar ve kazanma şansını artırır. Sweet Bonanza, renkli meyvelerle dolu eğlenceli bir slot oyunudur. Bu makalede, Sweet Bonanza slotunu nasıl oynayacağınızı adım adım açıklayacağız.

  • İnternet üzerinde “Sweet Bonanza taktikleri” ya da “Sweet Bonanza hileleri” şeklinde yapılan aramaların bu nedenle bir faydası olmaz.
  • Bir ödeme almak için en az 8 sembolden oluşan bir kombinasyon toplamanız gerekir.
  • Canlı ve animasyonlu grafikler, oyuncuları oyuna çeker ve eğlenceli bir oyun deneyimi sunar.
  • Bu kural birçok slot sitesinde var ve buna dikkat edilmesi önemlidir.
  • Kısacası, Sweet Bonanza’nın tema ve grafikleri, sadece göze hitap etmekle kalmaz, aynı zamanda oyuncuları tatlı bir kaçamağa davet eden bir hikayeye de sürükler.
  • Sweet Bonanza, tatlı ve meyve temalı renkli grafikleri ile dikkat çeker.
  • Elma, muz, üzüm, kırmızı erik, karpuz, pembe/yeşil/kırmızı/mavi şekerler, lolipop, kazandırma çarpanını katlayan bomba gibi semboller oyunda mevcut.
  • Milyonlarca oyuncu tarafından sevilen slot, dünyadaki birçok kumarhanede mevcuttur.
  • Bu, hem bütçe dostu hem de yüksek roller oyuncular için uygun bir yapı sağlar.
  • Kaçak bahis sitesine üyeolanlar Sweet Bonanza oyununda şansını deneyerek kısa sürede zengin olabilir.

Sonuç olarak, Sweet Bonanza, eğlenceli ve heyecan verici bir slot oyunudur. Oyunu oynarken dikkatli ve ölçülü bir yaklaşım benimsemek, tatmin edici bir oyun deneyimi yaşamanıza yardımcı olabilir. Sweet Bonanza’yı ücretsiz oynamak için demo versiyona erişiminiz vardır.
Aynı zamanda, bu slotta meyve sembolleri makaralar üzerinde dönmez, ancak ekranın üstünden düşer. Sweet Bonanza oynamak için bu pratik bilgiler, hem yeni başlayanlar için hem de deneyimli oyuncular için yararlıdır. Minimum varyansla ilginç ve aynı zamanda sevimli bir oyun arayan oyuncular için bu sadece bir keşif olacaktır. Sweet Bonanza hem yeni başlayanlar hem de deneyimli oyuncular için uygundur.

Sweet Bonanza Slot Oyununun Demo Sürümü

Bu, para yatırma ve çekme işlemlerini hızlı ve sorunsuz hale getirir. Sweet Bonanza Resmi Web Sitesi, geniş bir oyun yelpazesi sunan bir online casinodur. Slot oyunları, rulet, blackjack ve canlı casino seçenekleri ile tanınır. Modern ve kullanıcı dostu arayüzü sayesinde Sweet Bonanza, her türden oyuncuya hitap eden keyifli bir oyun deneyimi sağlar. Ayrıca, platform, oyuncu bilgilerini koruma konusunda katı güvenlik önlemleri alarak kullanıcı güvenliğini en üst düzeyde tutar. Güvenliğiniz ve oyuncuların gizliliği, listede yer alan sitelerin en önemli öncelikleri arasındadır.
Pragmatic Play destekli Sweet Bonanza oyununu bu casino sitesinde 7/24 oynayabilirsiniz. En popüler slotoyunlarında freespin bonus fırsatlarını kullanarak para kazanma fırsatından yararlanabilirsiniz. Kullanıcı sayısıgiderek artan Hipodrombet ücretsiz üyelik formunu dolduranlar hemen slot oynamaya başlayabilir. Slot oynayarak zenginolmak gibi bir hayaliniz varsa Hipodrombet doğru adrestir.
Sweet Bonanza oyununun hikayesi, sizi tatlı kokularla dolu küçük bir şekerleme atölyesine götürür. Resmi Sweet Bonanza web sitesinde, gerçek paralarla veya rubleyle ücretsiz demo hesabında tamamen kumar deneyiminin keyfini çıkarabilirsiniz. Casino sitelerinde çekimler, genellikle herhangi bir aksilik olmaması durumunda maksimum 30 dakika ile 2 saat arasında gerçekleşmektedir. Ancak bazı altyapısal sorunlar ya da banka transferlerindeki gecikmeler sebebiyle bu süre uzayabilir.
Kalan semboller ekranın altına düşer ve boş pozisyonlar yukarıdan düşen sembollerle değiştirilir. Düşüş, düşüş sonucunda kazanan kombinasyon kalmayana kadar devam edecektir. %96,49’luk yüksek RTP, ortalama bir geri ödeme oranında bile sık ödemeleri garanti ediyor. Pragmatic Play tasarımcıları en cesur fikirlerini hayata geçirdiler ve bize parlak, tatlı dünyalar armağan ettiler. Sitede parayla Sweet Bonanza oynayabileceksiniz ve bir demo da var.
Sizler de hemen her casino sitesinde olduğu gibi Betmatik üzerinden de ulaşabileceğiniz oyunda pek çok kişinin yaşadığı heyecana ortak olabilirsiniz. Bu platformun güveninizi kazanmak için çeşitli ayrıcalıkları tanımlayacağını görebileceksiniz. Çoğunlukla da bu spinleri Pragmatic slot oyunları içerisinde kullandırmaktalar. Haliyle de sweet bonanza bu oyunlara dahil ve gerçek parayla ücretsiz spin atabileceğiniz bir imkan tanımaktadır.

Стоит отметить, что зеркальные сайты предназначены не только для тех, кто ищет улучшенную производительность. Зеркала 1xSlots также предоставляют игрокам более безопасный способ доступа к играм, поскольку многие из них работают с использованием SSL-шифрования. Это обеспечивает игрокам дополнительный уровень защиты от вредоносных атак и хакеров. Если обнаружится, что игрок обманывает казино и нарушает правила, его аккаунт немедленно блокируется.
Архитектура сайта совмещает и десктопную, и мобильную версию. Если клиент заходит на сайт 1хслотс с мобильного телефона, платформа перестраивается на мобильную версию и адаптируется к любому типу экрана. Бонусы и акции, представленные на 1xSlots, — это вишенка на вершине.
Для завершения регистрации нужно пройти первый этап верификации — подтверждение по почте. Как только Вы подтвердите свой электронный адрес Вы сразу же можете перейти к процессу авторизации. Для авторизации нужно нажать на кнопку «Войти в систему», далее вписать свой логин и пароль.
Введя туда этот промокод Вы автоматически получите бонусы как только пройдете процесс верификации. Уже верифицированные пользователи могут ввести промокод в настройках личного профиля. Награды за ввод промокода придут моментально на Ваш аккаунт, однако, учтите, что их активации нужно подходить по некоторым условиям. Чтобы в дальнейшем активировать промокоды нужно подписаться на рассылку от казино, а также иногда просматривать социальные группы 1xSlots. Пользователи в нашем казино постоянно получают бонусы и акции, также у них имеется возможность участвовать в турнирах. В нашем казино реализована система технической поддержки.
В результате, игроки могут наслаждаться более плавным и приятным опытом, играя в игры казино на зеркале сайта 1xSlots. Вариантов найти исправную, проверенную зеркальную ссылку несколько. В 1xslots casino зеркало работающее прямо сейчас предоставляет наш сайт. Все, что нужно – это добавить сайт в список закладок браузера.

1xslots зеркало рабочее

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

  • На нашем сайте вы найдете не только честный обзор на 1xSlots Casino, но и самые лучшие бонусы онлайн казино.
  • На электронные и криптовалютные кошельки минимальный вывод составляет 100 ₽ (за небольшим исключением).
  • Однако перед активацией бонусов рекомендуется ознакомиться с условиями их получения на официальном сайте казино.
  • Прежде чем начать, проверьте доступные способы оплаты, максимальные и минимальные лимиты на снятие средств и любые комиссии.
  • Соответствие возрастным требованиям проверяется во время верификации на сеансе видеочата с сотрудниками поддержки.
  • Важно внимательно следовать инструкциям, чтобы обеспечить правильную и быструю обработку вашего запроса.
  • Единственным неудобством будет необходимость искать рабочие зеркала сайта, но это вполне решаемая задача.
  • Это отличный шанс получить призы, достаточно зарегистрировать свое участие в них и следовать правилам.
  • Этот способ дает возможность вращать барабаны любому посетителю сайта, без депозита и регистрации.
  • Уважайте правила 1xslots и обращайтесь в службу поддержки для предотвращения возможных проблем, возникших из-за непреднамеренного нарушения правил.
  • Мобильная версия 1xslots доступна для всех игроков и ее можно бесплатно скачать на смартфон или планшет.

1xslots промокод

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

  • 1xslots не исключение и готов обеспечить своим клиентам комфортную игру.
  • Они еще не пополняли депозит, и полученный бонус стимулирует их активность.
  • Требований к обязательной верификации нет, но администрация при крупном выводе выигрыша может затребовать ее прохождение.
  • В бесплатном режиме вам будут начислены виртуальные средства.
  • Для удобства игроков, платежные системы оптимизированы для максимальной простоты использования.
  • Программа 1xslots apk доступна для владельцев гаджетов на платформе Андроид.
  • Способы разные, но их объединяет одна деталь — это все фейк.
  • После успешной регистрации следует внимательно ознакомиться с различными бонусами и акциями, которые предлагает казино новым игрокам.
  • Благодаря этому я могу играть на любом устройстве, где бы я не находился.
  • В разделе “Поддержка” на нашем сайте казино 1xslots мы признаем, что вопросы и проблемы могут возникнуть в любое время.
  • Фактически, это компьютерная имитация самых старых и традиционных развлечений, типичных для классических казино.

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

  • Независимо от того, где вы находитесь, вам предоставляется постоянный доступ к миру эксклюзивных слотов и игр казино.
  • Убедитесь, что информация верна, чтобы избежать каких-либо задержек.
  • 1xslot дает возможность незарегистрированным игрокам изучить игровой каталог и специфику каждого автомата.
  • ПО работает на любом устройстве, которое соответствует требованиям 1X слот.
  • Не секрет, что больше 90 % посетителей онлайн казино приходят поиграть в игровые аппараты.
  • Для каждого типа платежных методов минимальная сумма лимитов может изменяться.
  • Зеркало –100% похоже на главный сайт, только отличается само название.
  • Согласно запросу, служба поддержки может временно или навсегда блокировать учетную запись пользователя.
  • В 1xslots есть много разных игровых автоматов и других игр, которые мне нравится играть.
  • Для пользователей iPhone наличие приложение пока не предусмотрено.
  • Как только человек получил зеркало, ему потребуется только ввести адрес в строку браузера, выполнить вход в личный кабинет или пройти регистрацию.
  • Суть зеркал заключается в том, что они точно копируют основной сайт, делая его полностью доступным для пользователей из разных стран.

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

1xslots сайт

Сохранить моё имя, email и адрес сайта в этом браузере для последующих моих комментариев. В случае отсутствия поддержки на вашем языке, мы сделаем все возможное, чтобы предоставить вам ассистента, который говорит по-английски. С каждым переходом на новый уровень, баллы игрока обнуляются, и для достижения следующего уровня необходимо набрать очки снова. В интернете достаточно много информации о взломе казино, тайных схемах. В телеграмме существуют целые каналы, посвященные теме обыгрывания казино.
Провайдеры выпускают каждый сезон новинки и обновляют старые полюбившиеся игрокам игры – улучшают графику, анимацию, аудиосоставляющую. Зеркало — это копия оригинального сайта, которая позволяет игрокам получить доступ к функциям оригинального сайта, но с другого URL. Кроме того, на платформе представлено множество игр живого казино, которые позволяют почувствовать себя в реальном казино с настоящими дилерами. Игроки также могут принять участие в многочисленных турнирах, которые можно найти в разделе «Турниры» в нижней части сайта. В основном, турниры в казино 1хслотс проходят при участии старых и опытных игроков. Для новичков это слишком сложное испытание, поскольку надо не просто удачно делать ставки, но и обойти других гемблеров.
После выбора игры и определения размера ставок можно начинать игру, всегда помня о принципах ответственной игры и установленных лимитах. Если же у вас возникнут дополнительные вопросы или проблемы, вы всегда можете обратиться в службу поддержки казино, которая работает круглосуточно. Создание аккаунта открывает множество дополнительных возможностей.

R7 — игровая площадка, работающая по лицензии Кюрасао. Она предлагает клиентам слоты, краш-игры и лобби с живыми дилерами. Сайт оператора полностью переведен на русский, возможны расчеты в рублях — благодаря этому он заинтересует российских гемблеров. Казино ежедневно возвращает клиентам часть от проигрышей. Кешбэк определяется разницей между потраченными деньгами и выплатами. Размер возврата зависит от уровня клиента в программе лояльности.
Для успешного прохождения процедуры игрок должен отправить в службу технической поддержки клуба документы, удостоверяющие личность. Для снятия выигрыша нужно вызвать меню личного кабинета, кликнуть «Вывод средств», выбрать способ, указать сумму, реквизиты и подтвердить кэшаут. Продолжительность обработки заявки на выплату зависит от метода платежа и может составлять от нескольких минут до нескольких дней. На сайте R7 доступны покер, баккара, блекджек, рулетка, лото и игровые шоу с live-крупье. Всего там представлено свыше 350 столов с крупье.

Депозиты И Вывод Средств В Казино R7

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

Без Промокода

Если игрок правильно ввел код, нужно написать в техподдержку. Если промокод еще работает, то в Личном кабинете появится информация о нем. Остается пополнить баланс или подождать, пока оператор начислит бездеп. Новички в R7 Casino получают доступ только к кешбэку (1%). Другие привилегии открываются на следующих уровнях.
Некоторые методы имеют максимальный временной лимит до 3 рабочих дней. Используя рабочие зеркала, вы всегда будете на шаг впереди. Безопасность, удобство и непрерывный доступ — вот что делает их незаменимыми для каждого игрока. Для фоновой заливки на R7casino использованы темные цвета, а почти остальной текст набирается в белом цвете. Возможно это считать одним из недостатков официального сайта R7 casino по мнению большинства беттеров, поскольку прочесть написанное сложно, устают глаза. Если у вас возникли вопросы по поводу работы клуба или появились проблемы, вы можете обратиться в службу технической поддержки.
Принципы ответственной игры – это база работы казино. Все автоматы в лобби работают по системе случайной генерации чисел. Никто не влияет на результаты раундов, ни в слотах, ни в Live-секции.
Стоит отметить, что 15 очков позволяют сэкономить 1500 рублей во время «прокачки» аккаунта. Оператор начисляет 1 поинт за каждые 100 RUB, поставленные на платформе. Полное или частичное копирование материалов возможно только с письменного разрешения редакции.

  • Его размер составляет x45 на депозитные средства.
  • Кроме того, благодаря демо-версиям, можно оценить новые лицензионные слоты и выбрать те, которые идеально подходят.
  • Это отличное решение для тех, кто хочет развлечь себя в ожидании в очереди или пробке, а также провести приятное время во время обеденного перерыва.
  • Для постоянных клиентов платформы также есть уникальные промокоды.
  • Оператор начисляет очки за все денежные ставки, сделанные на сайте.
  • По вопросам сотрудничества обращайтесь через форму обратной связи или по электронной почте
  • После этого произойдет переадресация на страницу оплаты.
  • Тем, кто жалуется, что больше проиграл, чем вытащил, могу лишь посочувствовать.
  • Самое время узнать, что нужно сделать, чтобы начать продвигаться по этапам программы лояльности R7 casino и добраться до главного приза – автомобиля Lexus RX.
  • Это виртуальная валюта, которую можно использовать для покупок в эксклюзивном магазине онлайн-казино.
  • Это альтернатива демонстрационному режиму для классических аппаратов.

Это отличный портал, который уже оценили многие игроки из России. Он предлагает множество преимуществ и активно развивается. Благодаря зеркалам мобильного казино, можно обойти блокировки провайдеров автоматически. Если пользователь не желает использовать веб-браузер, он может скачать и установить мобильное приложение с официального сайта online казино. Важно отметить, что приложение доступно только для устройств с операционной системой Android. Для постоянных игроков предусмотрена программа лояльности, которая помогает накапливать специальные баллы.

  • Они предоставляют круглосуточную помощь по любым вопросам, связанным с функционированием казино.
  • Показатель может быть снижен для начинающего пользователя и максимальным для опытного специалиста в сфере гемблинга.
  • Данное промо предназначено для новых клиентов, которые регистрируются на площадке впервые.
  • Также бонусы для игры в аппараты начисляются за активацию купонов.
  • Для активации персональных бонусов на официальном сайте казино R7 за регистрацию требуется ввод промокода при заполнении приветственной анкеты.
  • На сегодня законом запрещены такие сайты, поэтому и официальный сайт R7 Casino может быть недоступен по прямой ссылке.
  • Игроки отмечают разнообразие игрового лобби, компетентного суппорта с быстрой скоростью ответа и регулярное обновление акционной программы.
  • Ставки выполняются по принципам ответственной игры без нарушений международных стандартов.
  • В общем, достойное место для катки, так что ознакомьтесь с условиями и попробуйте замазаться сами.
  • Для депозита и вывода минимальные суммы составляют соответственно 100 и 1000 рублей.
  • Программа включает несколько уровней статуса, которые повышаются в зависимости от активности игрока.
  • Клиенты, которые ценят возможность играть в любое время и в любом месте, предпочитают использовать телефоны и планшеты.
  • При выборе также рекомендуется ознакомиться с таблицей выплат.

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

Однако, есть одно отличие — сайт-копия находится на другом сервере и имеет другое доменное имя. Теперь напомним, что есть общие правила для всех трех пакетов. Фриспины разыграете в Big Bass Splash, Big Bass Bonanza, Floating Dragon с вейджером х30. Для денежных просмотрите список аппаратов (в каждой акции есть) и вейджер х50 имейте ввиду.
Заведение открылось совсем недавно — в начале 2024 года. Его администратором является компания Creative Active Technology N.V., зарегистрированная на Кюрасао и имеющая лицензию этой же юрисдикции. Площадка отличается большим ассортиментом игр и качественным сервисом — благодаря этим дум обстоятельствам она сумела быстро набрать популярность. Каждая полученная выплата в автомате приносит турнирный балл. Когда оператор обработает транзакцию, пользователю сразу начислят бонусные деньги. Оператор предлагает купоны почти всех типов, включая бездепы.

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

Для облегчения поиска игрокам доступна удобная сортировка по различным параметрам, таким как новизна, популярность и дата добавления. Также предоставляется возможность просмотра самых последних развлечений только что добавленных в каталог, а также наиболее популярных слотов. На площадке представлены основные категории азартных развлечений, чтобы каждый мог выбрать то, что ему по вкусу. На начало 2024 года новое online casino уверенно занимает топовые позиции на российском рынке. По-прежнему участникам доступно по 100% за регистрацию без депозита.
Если вы столкнулись с какой-либо трудностью и не можете решить проблему самостоятельно, обязательно пишите. Наш сотрудник обработает вашу заявку незамедлительно. Далее необходимо подтвердить адрес электронной почты при помощи ссылки в письме. После этого выполните вход в свой личный кабинет на https://kilmezedu.ru/ сайте нашего казино Р7.

Ayrıca geniş bahis seçenekleri ve casino oyunları çeşitliliği sayesinde her oyuncunun ilgisini çekebilecek bir platformdur. Böylece, kullanıcılar hem spor bahislerinde hem de casino oyunlarında çeşitli seçeneklerden yararlanabilirler. Google’da BaşarıBet güncel giriş adresi şeklinde arama yaparak, hızlı bir şekilde doğru adrese ulaşabilirsiniz.

  • Platfprö, kullanıcılarının hesap güvenliğini artırmak adına çift faktörlü kimlik doğrulama (2FA) opsiyonunu da sunmaktadır.
  • BasariBet, sosyal medya üzerinde aktif olarak güncellemelerini paylaşmaktadır.
  • Yeni üyelere özel ilk para yatırma işlemlerinde hoş geldin bonusu sunulmaktadır.
  • Masa oyunları kategorisinde rulet, blackjack, baccarat ve poker gibi klasik oyunları bulabilirsiniz.
  • Başarıbet güncel giriş adresiyle siteye giriş yaptıktan sonra platform sayısız bahis ve oyun seçeneği ile karşımıza çıkar.
  • Geniş oyun seçenekleri, güvenilirlik ve kullanıcı dostu arayüzü ile Türk oyuncular için çekici bir seçenektir.
  • Başarı bet casino platformunun neden bu kadar başarılı olduğunu anlamak için öncelikle hakkındaki temel bilgilere bir göz atmakta fayda var.
  • BasariBet, sanal sporlar bölümü ile, gerçek spor etkinliklerini beklemek istemeyen kullanıcılar için alternatifler sunar.
  • Platform, kullanıcılarının kişisel ve finansal bilgilerini korumak için gelişmiş güvenlik önlemleri alır ve SSL sertifikaları ile verileri şifreler.
  • Tüm bahis ve casino oyunlarına kesintisiz erişim sağlamak için bu sayfa sürekli olarak güncellenir.
  • Ayrıca, gelişmiş güvenlik protokolleriyle oyuncuların kişisel bilgilerini koruma altına alır.
  • Platform, kişisel ve finansal bilgilerinizi korumak için SSL şifreleme teknolojisini kullanır.
  • Kendine en uygun oyunu deneme ve kazanmak için Başarı bet en çok içeriğe sahip platformların başında gelir.

Arama sonuçlarında ilk sıralarda yer alan güvenilir kaynaklar vasıtasıyla güncel giriş adresine erişebilirsiniz. Tüm bahis ve casino oyunlarına kesintisiz erişim sağlamak için bu sayfa sürekli olarak güncellenir. Bu sayede herhangi bir aksaklık yaşamadan bahislerinize devam edebilirsiniz. BasariBet, sosyal medya üzerinde aktif olarak güncellemelerini paylaşmaktadır.
Başarıbet güncel giriş adresiyle siteye giriş yaptıktan sonra platform sayısız bahis ve oyun seçeneği ile karşımıza çıkar. Kendine en uygun oyunu deneme ve kazanmak için Başarı bet en çok içeriğe sahip platformların başında gelir. Platfprö, kullanıcılarının hesap güvenliğini artırmak adına çift faktörlü kimlik doğrulama (2FA) opsiyonunu da sunmaktadır. Bu özellik, hesabınıza giriş yaparken sadece şifrenizle değil, aynı zamanda telefonunuza gönderilen doğrulama koduyla da kimliğinizi kanıtlamanızı gerektirir. Platform, kişisel ve finansal bilgilerinizi korumak için SSL şifreleme teknolojisini kullanır. Ayrıca, düzenli olarak güvenlik kontrolleri gerçekleştirir ve hesaplarınızdaki anormal aktiviteleri tespit etmek için gelişmiş izleme sistemleri kullanır.
E-posta bildirimlerini düzenli olarak kontrol etmek, erişim sorunlarını hızlı bir şekilde çözmenize yardımcı olacaktır. Başarı bet giriş yapan tüm üyelerine lisanslı bir bahis platformu olarak güvenli bir ortam sunar. Lisanslı olmasının yanında, ödeme işlemlerinde şeffaflık ve hız sağlayarak oyuncuların gönül rahatlığıyla işlemlerini gerçekleştirmesine olanak tanır.

Başarıbet, Başaribet Giriş, Basaribet Üyelik Ve Bonusları

BasariBet, kullanıcılarına sunduğu avantajlar ve sürekli güncellenen promosyonları ile dikkat çeken bir platformdur. Özellikle bahis ve casino konusunda deneyimli olun ya da olmayın, platform her seviyeden oyuncuya hitap eden fırsatlar sunmaktadır. Özellikle Türkiye’deki kısıtlamalar ve engellemeler göz önünde bulundurulduğunda, kesintisiz bir hizmet alabilmek adına doğru adresi takip etmek kritik önem taşır. Bu avantajlar arasında ücretsiz bahisler, nakit para ödülleri, veya özel etkinliklere katılma şansı bulunabilir. Platforma üye olduktan sonra, siteye verdiğiniz e-posta adresi üzerinden size düzenli olarak güncellenmiş giriş adresi bilgileri gönderilecektir.
Slot oyunları, pek çok farklı tema ve özelliğe sahip slot makineleri sunar. Özellikle popüler oyun sağlayıcılarından gelen yüksek kaliteli slot oyunları ile şansınızı deneyebilirsiniz. Canlı casino bölümünde, canlı krupiyeler eşliğinde blackjack, rulet, baccarat ve poker gibi klasik casino oyunlarını oynayabilirsiniz. Başarıbet, oyuncularına sunduğu cazip bonus ve promosyonlarla da dikkat çeker. Site üzerinde düzenli olarak güncellenen promosyonlar ve özel teklifler bulunmaktadır. Örneğin, belirli günlerde yapılan yatırımlar için ekstra bonuslar, kayıplar için geri ödeme fırsatları veya özel turnuvalar gibi promosyonlar sürekli yenilenir.
Web sitemizi yer imlerine ekleyerek BasariBet ya da türkçe karakterler ile BaşarıBet güncel giriş adresine her zaman kolayca ulaşabilirsiniz. Ayrıca, platformdaki değişiklikleri anında öğrenmek için bildirimlerimizi takip edebilirsiniz. Bu sayede bahis ve casino dünyasının heyecanını ve avantajlarını kesintisiz olarak yaşayabilirsiniz. Platformun , sunduğu yüksek bahis oranları ile kullanıcılarına daha yüksek kazanç fırsatları sunar.

basaribet iletisim

Üyelik işlemleri kısa sürede tamamlanabilir; üyelik sonrası kullanıcılar hesaplarına para yatırarak bahis yapmaya ve casino oyunlarını oynamaya başlayabilirler. Platform, kullanıcılarının kişisel ve finansal bilgilerini korumak için gelişmiş güvenlik önlemleri alır ve SSL sertifikaları ile verileri şifreler. Bu makalenin bulunduğu sayfa daima güncel BasariBet giriş adresini sizlere sunmayı amaçlamaktadır. Bu sayfayı sık kullanılanlara ekleyerek, ihtiyaç duyduğunuzda hızlı bir şekilde güncel giriş adresine ulaşabilirsiniz. Sayfanın başında yer alan buton ya da bağlantıları kullanarak her zaman en doğru ve güncel adrese yönlendirileceksiniz.

  • Bu sayede herhangi bir aksaklık yaşamadan bahislerinize devam edebilirsiniz.
  • Arama sonuçlarında ilk sıralarda yer alan güvenilir kaynaklar vasıtasıyla güncel giriş adresine erişebilirsiniz.
  • Platforma üye olduktan sonra, siteye verdiğiniz e-posta adresi üzerinden size düzenli olarak güncellenmiş giriş adresi bilgileri gönderilecektir.
  • Bu sayfayı sık kullanılanlara ekleyerek, ihtiyaç duyduğunuzda hızlı bir şekilde güncel giriş adresine ulaşabilirsiniz.
  • Bu sayede bahis ve casino dünyasının heyecanını ve avantajlarını kesintisiz olarak yaşayabilirsiniz.
  • Online bahis ve casino siteleri sık sık erişim sorunları yaşayabilir ve bu sebeple kullanıcılar güncel giriş adresine ihtiyaç duyar.
  • Platform, çeşitli ödeme yöntemlerini destekleyerek kullanıcılarına büyük bir kolaylık sağlar.
  • Peki neredeyse her casino sever tarafından güvenilen ve sevilen bir platform olan Basari bet platformunu diğer siteler ve platformlardan ayıran ne?
  • Bu doğrulama işlemi, verilen e-posta adresine gönderilen doğrulama linkiyle ya da kimlik bilgilerinizi yükleyerek gerçekleştirilir.
  • Özellikle Türkiye’deki kısıtlamalar ve engellemeler göz önünde bulundurulduğunda, kesintisiz bir hizmet alabilmek adına doğru adresi takip etmek kritik önem taşır.
  • Google’da BaşarıBet güncel giriş adresi şeklinde arama yaparak, hızlı bir şekilde doğru adrese ulaşabilirsiniz.

BasariBet, lisanslı ve regüle edilmiş bir platform olup, oyunlarının adil ve şeffaf olmasını sağlar. Bu da kullanıcıların platform içinde güvenle oyun oynamasını mümkün kılar. Lisans bilgilerine ve şirkete dair diğer bilgilere resmi web sitesi üzerinden ulaşabilirsiniz.
Karşınıza çıkan formda istenen bilgileri doğru ve eksiksiz bir şekilde doldurmanız önemlidir. Ad, soyad, e-posta adresi, telefon numarası gibi temel bilgilerin yanı sıra, kullanıcı adı ve şifrenizi de belirlemeniz gerekecektir. Spor basaribet casino giriş bahisleri bölümü, futbol, basketbol, tenis, voleybol ve daha birçok popüler spor dalında bahis yapma imkanı sunar.

Bu Sayfa Üzerinden Güncel Giriş Adresine Erişebilirsiniz

Twitter, Facebook ve Instagram gibi platformlardan platformun resmi hesaplarını takip ederek, güncel giriş adresine hızlı bir şekilde ulaşabilirsiniz. BasariBet ya da BaşarıBet, hem bahis hem de casino oyunları sunan kapsamlı bir online platformdur. Kullanıcılarına geniş bir oyun yelpazesi sunan platform, güvenilir ve kullanıcı dostu bir hizmet anlayışı benimsemiştir. Bahis ve casino oyunlarına az da olsa ilgisi olan biri Başarı bet platformunun adını mutlaka duymuştur. Peki neredeyse her casino sever tarafından güvenilen ve sevilen bir platform olan Basari bet platformunu diğer siteler ve platformlardan ayıran ne?
Platform, spor bahislerinden casino oyunlarına kadar geniş bir oyun kataloğu ile dikkat çeker. Futbol, basketbol, tenis gibi popüler spor dallarına bahis yapma imkanı sunarken, canlı bahis seçeneği ile de heyecanı kesintisiz yaşatır. Casino bölümünde ise slot oyunları, masa oyunları ve canlı casino seçenekleri mevcuttur. En iyi  bahis ve casino adreslerinden birisi olan BaşarıBet‘in en son giriş bilgilerine düzenli olarak güncellenen bu sayfa üzerinden kolayca ulaşabilirsiniz. Online bahis ve casino siteleri sık sık erişim sorunları yaşayabilir ve bu sebeple kullanıcılar güncel giriş adresine ihtiyaç duyar.

  • Özellikle popüler oyun sağlayıcılarından gelen yüksek kaliteli slot oyunları ile şansınızı deneyebilirsiniz.
  • Twitter, Facebook ve Instagram gibi platformlardan platformun resmi hesaplarını takip ederek, güncel giriş adresine hızlı bir şekilde ulaşabilirsiniz.
  • Başarıbet, oyuncularına sunduğu cazip bonus ve promosyonlarla da dikkat çeker.
  • Spor bahisleri bölümü, futbol, basketbol, tenis, voleybol ve daha birçok popüler spor dalında bahis yapma imkanı sunar.
  • Bu avantajlar arasında ücretsiz bahisler, nakit para ödülleri, veya özel etkinliklere katılma şansı bulunabilir.
  • Lisans bilgilerine ve şirkete dair diğer bilgilere resmi web sitesi üzerinden ulaşabilirsiniz.
  • En iyi  bahis ve casino adreslerinden birisi olan BaşarıBet‘in en son giriş bilgilerine düzenli olarak güncellenen bu sayfa üzerinden kolayca ulaşabilirsiniz.
  • Site üzerinde düzenli olarak güncellenen promosyonlar ve özel teklifler bulunmaktadır.
  • Örneğin, belirli günlerde yapılan yatırımlar için ekstra bonuslar, kayıplar için geri ödeme fırsatları veya özel turnuvalar gibi promosyonlar sürekli yenilenir.
  • Bu özellik, hesabınıza giriş yaparken sadece şifrenizle değil, aynı zamanda telefonunuza gönderilen doğrulama koduyla da kimliğinizi kanıtlamanızı gerektirir.
  • Ayrıca, düzenli olarak güvenlik kontrolleri gerçekleştirir ve hesaplarınızdaki anormal aktiviteleri tespit etmek için gelişmiş izleme sistemleri kullanır.

Ayrıca, gelişmiş güvenlik protokolleriyle oyuncuların kişisel bilgilerini koruma altına alır. BasariBet’te güvenli bir bahis deneyimi yaşamak isteyen kullanıcılar, şifrelerini güçlü ve karmaşık seçmeli, aynı şifreyi farklı platformlarda kullanmamalıdır. Siteye giriş yaptıktan sonra ana sayfanın üst kısmında yer alan Kayıt Ol butonuna tıklayarak üyelik sürecini başlatabilirsiniz.
Bu doğrulama işlemi, verilen e-posta adresine gönderilen doğrulama linkiyle ya da kimlik bilgilerinizi yükleyerek gerçekleştirilir. Hesabınızın doğrulanması, rüşvet ve dolandırıcılık gibi durumların önüne geçebilmek için önemlidir. Tüm yönleriyle Başarı bet platformunu incelediğimizde neredeyse her alanda en iyi hizmeti sağlamayı hedeflediğini görmek mümkün. BasariBet, sanal sporlar bölümü ile, gerçek spor etkinliklerini beklemek istemeyen kullanıcılar için alternatifler sunar. Sanal futbol, at yarışı ve köpek yarışı gibi birçok sanal spor türü mevcuttur. Masa oyunları kategorisinde rulet, blackjack, baccarat ve poker gibi klasik oyunları bulabilirsiniz.

  • Bu sayede herhangi bir aksaklık yaşamadan bahislerinize devam edebilirsiniz.
  • Sanal futbol, at yarışı ve köpek yarışı gibi birçok sanal spor türü mevcuttur.
  • BasariBet’te güvenli bir bahis deneyimi yaşamak isteyen kullanıcılar, şifrelerini güçlü ve karmaşık seçmeli, aynı şifreyi farklı platformlarda kullanmamalıdır.
  • Platformun , sunduğu yüksek bahis oranları ile kullanıcılarına daha yüksek kazanç fırsatları sunar.
  • Futbol, basketbol, tenis gibi popüler spor dallarına bahis yapma imkanı sunarken, canlı bahis seçeneği ile de heyecanı kesintisiz yaşatır.
  • Daha sonraki yorumlarımda kullanılması için adım, e-posta adresim ve site adresim bu tarayıcıya kaydedilsin.
  • Sayfanın başında yer alan buton ya da bağlantıları kullanarak her zaman en doğru ve güncel adrese yönlendirileceksiniz.
  • Basaribet Casino, Türkiye’de oldukça popüler bir çevrimiçi casino ve bahis platformudur.

Canlı bahis seçenekleri ile maç esnasında anlık bahisler yapabilirsiniz. Basaribet Casino, Türkiye’de oldukça popüler bir çevrimiçi casino ve bahis platformudur. Geniş oyun seçenekleri, güvenilirlik ve kullanıcı dostu arayüzü ile Türk oyuncular için çekici bir seçenektir.
Bu oyunlar, strateji ve şansın bir arada olduğu oyunlar olarak dikkat çeker. Başarıbet sunduğu adil oyun seçenekleri ile diğer siteler arasından sıyrılmayı kolaylıkla başarır. Her koşulda olduğu gibi oyun oynarken de ihtiyaç duyduğunuzda saniyeler içerisinde 7/24 destek alabileceğinizi hatırlatmakta da fayda var. Başarı bet casino platformunun neden bu kadar başarılı olduğunu anlamak için öncelikle hakkındaki temel bilgilere bir göz atmakta fayda var. Başarı bet güvenilir mi diye düşünen herkes için faydalı olabilecek bu tablo platformun her alanda ne kadar başarılı olduğuna ayna tutuyor. Daha sonraki yorumlarımda kullanılması için adım, e-posta adresim ve site adresim bu tarayıcıya kaydedilsin.

Canlı bahis seçenekleri ile maç esnasında anında bahis yapabilir ve heyecanı ikiye katlayabilirsiniz. Lucky Jet, adrenalin ve heyecan arayan oyuncular için mükemmel bir seçenektir. Oyunun temel konsepti, bir jetpack ile havalanan karakterin ne kadar yükseleceğini tahmin etmektir. Çarpanlar hızla artarken, oyuncular doğru zamanda durup kazançlarını almalıdır. Oyun, hızlı tempolu yapısıyla dikkat çeker ve Basaribet casino oyunları arasında popülerdir. Hem yeni başlayanlar hem de deneyimli oyuncular için eğlenceli ve kazançlı bir deneyim sunar.

Kayıt & Giriş

Ayrıca, 7/24 hizmet veren müşteri destek ekibi ile kullanıcıların her türlü sorununu hızlıca çözmeyi hedefler. Canlı destek, e-posta ve telefon gibi farklı iletişim kanalları üzerinden kullanıcılar destek alabilirler. Formula 1 bahisleri, hız ve heyecan dolu bir spor dalında kazanç sağlama fırsatı sunar. Her sezon boyunca düzenlenen Grand Prix yarışlarında bahis yapabilir ve favori sürücülerinizin performansını takip edebilirsiniz. Yarış galibi, podyum pozisyonları, en hızlı tur ve daha birçok farklı bahis türü ile Formula 1 bahislerinizi çeşitlendirebilirsiniz.
Bu durumda, kullanıcılar basaribet güncel giriş adreslerini kullanarak platforma erişebilirler. Basaribet, kullanıcılarının hizmetine kesintisiz devam edebilmesi için sık sık güncel giriş adreslerini paylaşır. Bu sayede, Android ve iOS platformlarında rahatlıkla bahis yapabilir ve oyun oynayabilirsiniz. Güvenli ve hızlı erişim için, resmi Basaribet sitesinde belirtilen yöntemleri takip etmeniz önemlidir.
Dünyanın en tanınmış sağlayıcılarından slot makineleri ve masa oyunları deneyimleyebilirsiniz. Başarıbet Casino’da 8700’den fazla slot ile farklı teknik ayarlamalar, oynanış stilleri ve bahis limitleri sunulmaktadır. BasariBet, lisanslı ve regüle edilmiş bir platform olup, oyunlarının adil ve şeffaf olmasını sağlar.
Bu lisans, kullanıcıların adil oyun ve güvenli ödeme yöntemlerinden faydalanmalarını sağlar. Online bahis ve casino platformları arasında güvenilirlik en önemli unsurlardan biridir. Bu nedenle Basaribet, kullanıcılarının bilgilerinin güvenliğini sağlamak için SSL şifreleme teknolojisini kullanır. Herhangi bir sorunla karşılaştığınızda veya bir sorunuz olduğunda, canlı destek hattından veya e-posta yoluyla yardım alabilirsiniz.

  • Basaribet platformunda Aviator oyunu, kullanıcıların adrenalin dolu anlar yaşamasını sağlar.
  • Yeniden para yatırma bonusları, oyuncuları platformda aktif kalmaları için motive eder ve bahis miktarını artırmalarına olanak tanır.
  • Basari bet casino bölümünde oynayan kullanıcılar için, kayıplarını telafi etmeleri amacıyla casino geri ödemesi sunmaktadır.
  • Basaribet casino sitesinde gerçek para ile oynamaya başlamadan önce hesabınızın doğrulanması gerekmektedir.
  • Basaribet bahis platformunda kullanıcılar için geniş ödeme yöntemleri sunulmaktadır.
  • E-spor oyunlarının dinamik yapısı, takım değişiklikleri ve güncellemeler, bahis sonuçlarını ciddi şekilde etkileyebilir.
  • Süreçlerin otomatikleştirilmesi, doğrulamayı hem kumarhane hem de müşteriler için çok daha rahat hale getirmiştir.
  • Hesabınız doğrulandıktan sonra, Basaribet casino sitesinde para yatırma ve çekme işlemlerini gerçekleştirebilirsiniz.
  • Bu işlem, hesabınızın güvenliğini sağlamak ve sahte hesapların önüne geçmek için yapılır.

Türk yetkilileri zaman zaman internetteki kumarhanelere erişimi kısıtlayan yeni yasalar kabul etmektedir. Oyunların adil sonuçlanması demek, kazandığınızda RTP oranlarına göre sonucu almanızdır. Bu sayede kullanıcılar, istedikleri zaman ve istedikleri yerde bahis yapabilir veya casino oyunları oynayabilirler. Mobil uygulama, kullanıcı deneyimini artırır ve platforma kolay erişim sağlar. Kullanıcı yorumları ve bahis ipuçları, bir platformun güvenilirliği ve hizmet kalitesi hakkında önemli ipuçları verir.
Üyelik bilgilerinizde yanlışlık olması halinde deneme bonusu alabilmeniz belge istenebilir. Program, benzersiz bonuslara ve ayrıcalıklara erişim sağlayan seviyeler içerir. Oyunun amacı, belirli sayıda döndürme için bahislerinizi dağıtmak ve dönüşleri başlatmaktır. Hesabınızı silmek için e-mail göndererek müşteri hizmetlerine talep oluşturunuz. Siteye üye olurken kullandığınız kişisel verileriniz ise firmanın veri tabanında saklanmaktadır. Şirket bunun için hem ssl sertifikası hem de şifreleme yöntemlerine sahiptir.

basaribet telegram

Ayrıca, kullanıcılar için özel olarak hazırlanmış birçok farklı oyun seçeneği de mevcuttur. Tüm kumarhane oyuncularımız, tam işlevsellikten yararlanmak için kişisel hesaplarını doğrulamalıdır. Kişisel bilgilerinizi doğrulamadan yatırım ve para çekme işlemleri yapılamaz. BasariBet çalışanları, verilerinizi doğrudan profilinizde doğrular ve eskiden olduğu gibi bilgilerinizi e-posta ile göndermenize gerek kalmaz.

  • Hoş geldin bonusu, casino geri ödemesi ve spor bahisleri için ekspres bonus gibi cazip tekliflerle kullanıcılarını destekler.
  • Casino oyuncuları için kaliteli bir deneyim sağlamak adına, Basaribet Casino’nun yardım masası her zaman hazır ve nazırdır.
  • Aşağıda, Türkiye’de kumar ve bahis için çeşitli bonus türleri hakkında ayrıntılı bilgi bulacaksınız.
  • Ayrıca, güncel adresi ve diğer tüm önemli bilgiler resmi site üzerinden de kullanıcılara sunulmaktadır.
  • Bu durumda, kullanıcılar basaribet güncel giriş adreslerini kullanarak platforma erişebilirler.
  • Basaribet, oyuncularının sorunsuz bir oyun deneyimi yaşaması için sürekli olarak güncellemeler yapar ve en son teknolojileri kullanır.
  • İnternet sitesi, kullanıcılarının kişisel ve finansal bilgilerini korumak için en son güvenlik teknolojilerini kullanır.
  • Basaribet, güvenilirliğini ve yasal faaliyetlerini uluslararası geçerliliğe sahip bir lisans ile sürdürmektedir.
  • Çevrimiçi kumarhane giriş yaparak hemen oyunlara katılabilir ve kazanmaya başlayabilirsiniz.
  • Basaribet Casino’ya erişim sorunu yaşamanız durumunda, Basaribet güncel adres ve Basaribet güncel giriş linki üzerinden siteye ulaşabilirsiniz.
  • Başarıbet, güvenilir bir kumarhane olarak Türkiye’deki oyunculara hizmet veriyor.
  • Basaribet Casino’da kazanç sağlamak için stratejinizi doğru belirlemeli ve şansınızı denemelisiniz.
  • Özellikle canlı casino bölümü, gerçek krupiyelerle oynanan oyunlarıyla kullanıcılarına gerçek bir casino deneyimi yaşatıyor.
  • Böylece çevrimiçi kumarhane sitesine kolayca kaydolabilir ve giriş yapabilirsiniz.
  • Geniş oyun seçenekleri ve kullanıcı dostu arayüzü ile Türkiye’deki bahisçiler tarafından tercih edilmektedir.
  • Bu sayede kullanıcılar, istedikleri zaman ve istedikleri yerde bahis yapabilir veya casino oyunları oynayabilirler.
  • Oyuncular, çarkın üzerinde hangi dilimde duracağını tahmin ederek bahis yaparlar.
  • Oyunun temel konsepti, bir jetpack ile havalanan karakterin ne kadar yükseleceğini tahmin etmektir.
  • Ayrıca, sadık oyuncular için düzenli olarak düzenlenen özel promosyonlar ve turnuvalar da mevcuttur.
  • ATP, WTA, Grand Slam turnuvaları ve daha fazlasında tenis bahisleri yapabilirsiniz.
  • BasariBet’in bonus teklifleri, platformu hem yeni gelenler hem de deneyimli oyuncular için çekici kılmaktadır.

Sektördeki çoğu art niyetli firma üyelerinin verilerini paylaşarak onları mağdur etmektedir. Ancak Başarıbet firmasında böyle bir durumun söz konusu olmadığını söyleyebiliriz. Hesabınızı oluşturduktan sonra, Basari bet sizden kimlik doğrulaması yapmanızı isteyebilir. Bu işlem, hesabınızın güvenliğini sağlamak ve sahte hesapların önüne geçmek için yapılır.
Canlı yayın izlemek için, üyelik ve bakiye şartlarının yerine getirilmesi gerekebilir. Platform, futbol, voleybol, tenis, Formula 1, boks gibi birçok farklı spor dalında bahis imkanı sunar. Kullanıcılar, çeşitli lig ve turnuvalarda oynanan maçlara bahis yaparak heyecan dolu anlar yaşayabilirler. Basaribet, spor bahislerinde geniş bir pazar seçeneği sunarak, her kullanıcının ilgisini çekecek bir bahis bulmasını sağlar.
BasariBet, kullanıcılarına sunduğu avantajlar ve sürekli güncellenen promosyonları ile dikkat çeken bir platformdur. Özellikle bahis ve casino konusunda deneyimli olun ya da olmayın, platform her seviyeden oyuncuya hitap eden fırsatlar sunmaktadır. Platform, kişisel ve finansal bilgilerinizi korumak için SSL şifreleme teknolojisini kullanır. Ayrıca, düzenli olarak güvenlik kontrolleri gerçekleştirir ve hesaplarınızdaki anormal aktiviteleri tespit etmek için gelişmiş izleme sistemleri kullanır. Başarıbet’te dilediğiniz çevrimiçi kumarhane oyununu bulmakta asla zorlanmazsınız.

Başarıbet Sadakat Programı: Düzenli Müşteriler Için Ayrıcalıklar

E-spor bahisleri hakkında daha fazla bilgi edinmek ve avantajlarını keşfetmek için okumaya devam edin. Basaribet’in sunduğu çeşitli ödeme yöntemleri sayesinde, kullanıcılar kazançlarını en hızlı ve güvenli basaribet casino giriş şekilde çekebilirler. Hemen şimdi Basaribet’e giriş yaparak bahis yapmaya başlayabilir ve kazançlarınızı güvenle çekebilirsiniz.
Online bahis ve casino siteleri sık sık erişim sorunları yaşayabilir ve bu sebeple kullanıcılar güncel giriş adresine ihtiyaç duyar. Hoşgeldin Bonusları, Free Spin ve para yatırma bonusları gibi çeşitli tekliflerden yararlanabilirsiniz. Ayrıca, sadık oyuncular için düzenli olarak düzenlenen özel promosyonlar ve turnuvalar da mevcuttur. Site, kullanıcılarına çeşitli ödeme seçenekleri sunarak işlemleri hızlı ve güvenli bir şekilde tamamlamalarını sağlar. Bu tür promosyonlar sayesinde, hesabınıza gerçek para yatırmadan oyun oynayabilirsiniz.
Çünkü bu işlemin telafi edilebilmesi için işlemlerin en başa alınması gerekmektedir. Tüm bu kurallar ışığında havale yöntemiyle para aktarımlarında minimum tutar 100 TL olmaktadır. Ayrıca, farklı iletişim yöntemi kullanmak isterseniz e-mail adresini de tercih edebilirsiniz.
Sweet Bonanza, Pragmatic Play tarafından geliştirilen popüler bir video slot oyunudur. Oyun, 6×5 ızgara yapısına sahiptir ve geleneksel ödeme çizgileri yerine, en az 8 aynı sembolün eşleşmesi ile kazanç sağlar. Basaribet Sweet Bonanza oyununda ayrıca, şeker bombaları ile çarpanlar elde edilebilir ve bedava dönüşler kazanılabilir. Bu oyun, yüksek volatilitesi ile büyük kazançlar vaat eder ve Basaribet casino oyunları arasında sıkça tercih edilir. Basari bet casino bölümünde oynayan kullanıcılar için, kayıplarını telafi etmeleri amacıyla casino geri ödemesi sunmaktadır.
Ödeme işlemleri, bonuslar veya diğer konularda da ekipten yardım almanız mümkündür. Çoğu müşteri sitenin ana sayfasında yer alan canlı destek butonunu kullanmaktadır. Burada sizlerden ad-soyad, kullanıcı adı ve bağlanmayı istediğiniz departman istenmektedir. Bilgileri ilgili alanlara girdikten sonra canlı destek ekibine bağlanarak taleplerinizi iletebilirsiniz. BasariBet düzenli olarak büyük spor etkinlikleri veya tatillerle aynı zamana denk gelen geçici promosyonlar ve özel bonuslar başlatır. Bu tür promosyonların bir parçası olarak, oyuncular ekstra para, freespin kazanabilir veya yarışmalarda kazanma şanslarını artırabilirler.

Условия использования находятся в Политике конфиденциальности и Правилах сайта. Подтвердите регистрацию через SMS или email, и ваш аккаунт будет создан. Лицензионный игровой софт, размещенный на сайте, производится известными разработчиками и проходит тщательное тестирование перед публикацией. Это сводит к минимуму вероятность возникновения сбоев, ошибок или зависаний.
Для получения бонуса нужно зарегистрироваться и выполнить условия акции. Процедура верификации в 1xSlots необходима для подтверждения вашей личности и обеспечения безопасности аккаунта. Для верификации нужно предоставить сканы документов, подтверждающих вашу личность и адрес проживания. Этот процесс занимает всего несколько минут и гарантирует защиту ваших данных и средств. Казино 1xSlots предлагает широкий выбор live игр с живыми дилерами, которые позволяют вам ощутить атмосферу настоящего казино прямо у себя дома.

  • Тем самым, несмотря на небольшой размер экрана вашего устройства, вы получите полноценную игру.
  • Трансляции от студии NetEnt не представлены, поэтому поучаствовать в раздаче в демоверсии не получится.
  • Каждый шаг установки описан подробно, так что пользователи не столкнутся с какими-либо проблемами или ошибками при установке.
  • Регистрация в казино 1xSlots — это простой и быстрый процесс, который позволяет новым пользователям начать играть всего через несколько минут.
  • Важно заметить, что приложение не доступно для загрузки в Google Play из-за политики этого сервиса.
  • Да, 1xSlots предлагает удобное мобильное приложение для пользователей Android и iOS.
  • Разработчики официального сайта казино позаботились о создании удобной мобильной версии игрового продукта.
  • Этот файл имеет небольшой объем, поэтому вы сможете его быстро загрузить и иметь доступ к Казино 1xSlots в любой момент, где бы вы ни находились.
  • В их числе как знаменитые студии (NetEnt, Microgaming, Quickspin), так и малоизвестные, молодые компании.
  • Сайт использует IP-адреса, файлы cookie и данные геолокации пользователей.

Официальные представители площадки развенчали мифы и домыслы по этому поводу и заявили, что у сайтов просто одна платформа. Однако команды, владелец и наполнение совершенно разные. Действительно, платформа с виртуальными развлечениями имеет успех среди игроков многих стран, включая Россию и СНГ.
Для клиентов казино организована мощная служба поддержки. Связаться с менеджером можно по электронной почте или в онлайн-чате. Игроки в любой момент могут поучаствовать в организации комфортного сотрудничества с площадкой. Любой пользователь может подключиться к трансляции и наблюдать за процессом. В этой категории также есть игры, которые входят в большой турнир от Pragmatic Play. В коллекции представлены более 5000 виртуальных автоматов от 120 провайдеров.

официальный сайт 1xslots

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

  • В 1xslots мобильная версия ничем не уступает десктопной.
  • Для получения бонуса нужно зарегистрироваться и выполнить условия акции.
  • Если установка не запускается автоматически – не беспокойтесь.
  • Live покер в 1xSlots — это отличная возможность сразиться с реальными игроками и дилерами.
  • Вероятно, проблема заключается в несовместимости версий вашего устройства и приложения.
  • Приложение оптимизировано для платформы iOS, что обеспечивает высокую производительность и удобство использования.
  • По оформлению сайта он очень похож на своего конкурента ― мультиплатформенную площадку 1xbet.
  • Если посетить с телефона официальный сайт, мобильная версия 1xSlots откроется автоматически.
  • Как показывают статистические данные, официальный сайт 1xslots casino имеет тысячи клиентов.

1xslots официальный сайт скачать

  • Плюс ко всему, вы можете легко скачать это приложение на iPhone.
  • Вы можете играть в слоты, настольные игры, live-игры с дилерами, а также управлять своим аккаунтом, вносить депозиты и выводить средства.
  • Буквально несколько секунд на установку, а дальше вы сможете круглосуточно запускать самые интересные игры и получать максимум удовольствия.
  • По уникальному промокоду можно получить 100 фриспинов для слота 100 Chinese Gold Hold.
  • Все актуальные предложения и условия бонусов можно найти на официальном сайте казино.
  • От классических слотов до настольных игр и казино с живыми дилерами – все это доступно прямо на экране вашего смартфона.
  • Интерфейс версии для ПК интуитивно понятен и прост в использовании, что делает его удобным выбором для всех типов игроков.
  • Сегодня это стало возможно благодаря 1xSlots, который можно легко скачать на ваш iPhone.
  • После установки приложения, вы сможете использовать любые функции и инструменты.
  • После подтверждения регистрации вы получите доступ ко всем функциям казино, включая бонусы за первый депозит и участие в акциях.
  • Пользователям сайта доступен приветственный комплект из четырех акций.

«Т‑банк» ввёл новую услугу по установке своего приложения. Чтобы скачать его из AppStore, клиенту необходимо получить данные от временного Apple ID, который доступен от 30 до 60 минут, пишет Frank Media. После входа casino 1xslots в AppStore в разделе «Приложения» необходимо найти приложение под названием «Выбери твой банк (YourMoney)» и скачать его.
С помощью нее вы получите доступ к своим любимым играм, наличие которых было возможно только на официальном сайте. Процесс загрузки приложения не требует особых усилий или знания технологий. Инструкции прозрачны и легко исполняются, так что даже новички не столкнутся с трудностями при установке. Так что не упустите эту возможность стать частью игрового мира прямо сейчас! Адаптированная версия 1xslots делает ваши азартные развлечения доступными при любых обстоятельствах.
В 1xSlots доступно множество методов пополнения счета, включая банковские карты, электронные кошельки и криптовалюты. Выберите наиболее удобный способ для вас и внесите депозит, чтобы начать играть. Все методы пополнения обеспечивают мгновенное зачисление средств на игровой баланс, что позволяет вам сразу же приступить к игре. Внести депозит на счет в 1xSlots можно различными способами, включая банковские карты, электронные кошельки и криптовалюты. Процесс пополнения счета занимает всего несколько минут, и средства зачисляются на ваш игровой баланс мгновенно.
Одно из преимуществ использования мобильного приложения 1xSlots — это возможность играть в любое время и в любом месте. Особенно это понравится ценителям азартных развлечений, которые предпочитают удобство и скорость. Установка приложения на ваш Айфон займет всего несколько минут. Следует отметить, что требуется подключение к интернету. Вы теперь можете получить доступ к различным играм и слотам 1xSlots казино прямо на своем мобильном устройстве.

Регистрация Игрового Аккаунта

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

Как Воспользоваться Мобильной Версией 1xslots

Прежде всего, вам нужно открыть приложение и нажать кнопку ‘Регистрация’. Далее вам потребуется заполнить форму регистрации, указав свое имя, фамилию, email и контактный телефон. Также вы должны выбрать страну, валюту и создать пароль.
В нашем веке мобильных технологий, когда все функции доступны прямо из кармана, казино 1xslots не осталось в стороне. Мобильное приложение 1xslots обеспечивает пользователям доступ ко всем функциям сайта и позволяет играть в любимые игры, даже находясь в движении. Как следствие, вы получаете удобство использования и хороший игровой процесс без каких-либо замедлений. А главное – вам не нужна постоянно работающая компьютерная мышь или клавиатура. Весь азартный мир теперь находится прямо в вашем смартфоне.
Вы обратились по адресу, ведь мы подробно расскажем о данном процессе. Во-первых, нужно отметить, что установка приложения на свой мобильный гаджет даёт неплохие возможности. Вы не привязаны к обычному компьютеру или ноутбуку, имея возможность играть где угодно и когда угодно. Разнообразие доступных развлечений порадует даже самого придирчивого игрока.
Мобильная версия не ограничивает вас ни в чем, предоставляя полноту свободы, которую вы ожидаете получить от онлайн-казино. Чтобы установить приложение на Android, игроку необходимо через 1xslots официальный сайт скачать его. Обратите внимание, что 1хслотс не доступен в PlayMarket. Перейдите на сайт Казино 1xSlots с вашего мобильного устройства или компьютера и выберите раздел ‘Скачать’. Здесь представлены версии для разных операционных систем.