Plugin Directory

Changeset 3153929


Ignore:
Timestamp:
09/18/2024 12:14:28 PM (19 months ago)
Author:
webflowapp
Message:

Version 1.1.0: Added support for Webflow V2 Token

Location:
webflow-pages
Files:
84 added
16 edited

Legend:

Unmodified
Added
Removed
  • webflow-pages/trunk/.gitignore

    r2494376 r3153929  
    11.idea
    22node_modules/
     3.env
  • webflow-pages/trunk/README.txt

    r3078484 r3153929  
    33Tags: visual builder
    44Requires at least: 6.0.0
    5 Tested up to: 6.5
     5Tested up to: 6.6
    66Requires PHP: 7.3
    7 Stable tag: 1.0.8
     7Stable tag: 1.1.0
    88License: GPLv2 or later
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
  • webflow-pages/trunk/externals/dashboard/package.json

    r2494376 r3153929  
    11{
    22  "name": "webflow-pages-dashboard",
    3   "version": "1.0.3",
     3  "version": "1.1.0",
    44  "devDependencies": {
    55    "npm-run-all": "^4.1.5",
  • webflow-pages/trunk/externals/dashboard/public/bundle.css

    r2494376 r3153929  
    11#wpcontent{padding-left:0}#webflow-dashboard-root{height:100%;display:flex;min-height:calc(100vh - 32px - 65px)}
    2 div.svelte-1mpfn9l{position:fixed;bottom:40px;left:55%;padding:8px 100px;transform:translateX(-50%)}p.svelte-1mpfn9l{margin:0;color:white;font-size:14px;text-align:center}
    3 .footer.svelte-19prbqe{position:absolute;bottom:12px;width:100%;text-align:center}a.svelte-19prbqe{color:#4253ff}
    4 .login-wrapper.svelte-uxpgyu{background-color:white;padding:40px;border-radius:4px;border:1px solid #f7f7f7;width:450px;text-align:center}form.svelte-uxpgyu{max-width:500px;margin:auto}p.svelte-uxpgyu{text-align:center;margin:0;margin-bottom:30px;font-size:14px}a.svelte-uxpgyu{color:black;text-align:center;outline:0;box-shadow:none}input.field-input.svelte-uxpgyu{margin-bottom:10px;background-color:#f7f8f9}.warning-notice.svelte-uxpgyu{background-color:#f7f8f9;padding:20px;border-radius:4px;margin-top:20px}
     2div.svelte-19kmp7p{position:fixed;bottom:40px;left:55%;padding:8px 100px;transform:translateX(-50%)}p.svelte-19kmp7p{margin:0;color:white;font-size:14px;text-align:center}
     3.footer.svelte-fqtlda{position:absolute;bottom:12px;width:100%;text-align:center}a.svelte-fqtlda{color:#4253ff}
     4.login-wrapper.svelte-1camdh2{background-color:white;padding:40px;border-radius:4px;border:1px solid #f7f7f7;width:450px;text-align:center}form.svelte-1camdh2{max-width:500px;margin:auto}p.svelte-1camdh2{text-align:center;margin:0;margin-bottom:30px;font-size:14px}a.svelte-1camdh2{color:black;text-align:center;outline:0;box-shadow:none}input.field-input.svelte-1camdh2{margin-bottom:10px;background-color:#f7f8f9}.warning-notice.svelte-1camdh2{background-color:#f7f8f9;padding:20px;border-radius:4px;margin-top:20px}
    55form:invalid input[type="submit"]{opacity:0.7;cursor:not-allowed}input.field-input{height:50px;padding:11px 16px;background-color:white;display:block;width:100%;height:38px;padding:8px 12px;font-size:14px;line-height:1.42857143;color:#333333;border:1px solid transparent;box-shadow:none}input.field-input:focus{border-color:#3898ec;outline:0;box-shadow:none}input.field-input:read-only:focus{outline:0;box-shadow:none}select.field-select[disabled]{-webkit-appearance:none;box-shadow:none;height:50px;padding-right:16px;padding-left:16px;border:1px none #000!important;border-radius:0px;background-color:white!important;display:block;width:100%;height:38px;padding:8px 12px;font-size:14px;line-height:1.42857143;color:#000}#wpbody-content{float:none;padding-bottom:0}#wpfooter{display:none}.main-content .wrapper{display:flex;flex-direction:column;height:100%;overflow:hidden}small.error-message{display:none;position:absolute;bottom:2px}.wp-core-ui .button-disabled, .wp-core-ui
    66      .button-secondary.disabled, .wp-core-ui
    77      .button-secondary:disabled, .wp-core-ui
    88      .button-secondary[disabled], .wp-core-ui .button.disabled, .wp-core-ui
    9       .button:disabled, .wp-core-ui .button[disabled]{background-color:#c5c5c5 !important;color:white !important;box-shadow:none !important;border:none !important;text-shadow:none !important;font-size:14px;width:30px;height:30px;vertical-align:middle;padding:0;margin:0}input.field-input:invalid:focus{border:1px solid red}input.field-input:focus:invalid ~ small.error-message{display:block}div.input-wrapper{position:relative;padding-bottom:22px}select.field-select{box-shadow:none;height:50px;padding-right:16px;padding-left:16px;border:1px none #000;border-radius:0px;background-color:white;display:block;width:100%;height:38px;padding:8px 12px;font-size:14px;line-height:1.42857143;color:#000}.grid{display:grid;grid-gap:8px;align-items:center;grid-auto-columns:auto}.grid.grid-with-actions{grid-template-columns:1fr 1fr auto}.grid.grid-two{grid-template-columns:1fr 1fr}.button{margin-right:16px;padding-top:6px;padding-bottom:6px;padding-right:24px;padding-left:24px;font-size:15px;line-height:16px;height:auto;font-weight:500;text-decoration:none;display:inline-block;border-radius:4px}.button.primary{background-color:#4353ff;-webkit-transition-property:none;transition-property:none;color:#fff;border-radius:4px !important}.button.primary:hover{background-color:#3545ee;color:#fff}.button.remove{background-color:#ff6382;border:none;border-radius:50%;color:#fff;font-size:10px;height:30px;width:30px;box-shadow:none;padding:0;line-height:30px;text-align:center}.button.remove:hover{background-color:#ff6382;color:#fff}.button.add{background-color:#38d996;border:none;border-radius:50%;color:#fff;font-size:10px!important;width:30px;height:30px;box-shadow:none}.button.add:hover{background-color:#38d996;color:#fff}p.description-subtitle{color:#999999;margin:0;font-size:12px;margin-top:-10px;margin-bottom:4px}
    10 .actions-container.svelte-1nnj8oz{display:flex;height:100%;flex-direction:column;overflow:auto;overflow:auto;justify-content:space-evenly}hr.svelte-1nnj8oz{border-color:#f7f7f7;margin:10px}.site-container.svelte-1nnj8oz{display:flex;height:100%;overflow:auto;justify-content:center;align-items:center}.actions-container.svelte-1nnj8oz p.svelte-1nnj8oz{margin:0;line-height:1}.actions-container h4{margin:0}
    11 div.svelte-abjjh4{width:100%;max-width:90%;margin-right:auto;margin-left:auto;position:relative;display:flex;justify-content:center;align-items:center}
    12 input[type="submit"].svelte-1gmfj7p{-webkit-appearance:button}input[type="submit"].svelte-1gmfj7p{display:inline-block;padding:9px 15px;color:white;border:0;line-height:inherit;text-decoration:none;cursor:pointer;border-radius:4px}.form_submit-button.svelte-1gmfj7p{width:100%;height:50px;padding-right:28px;padding-left:28px;background-color:#4353ff;font-weight:500}.form_submit-button.svelte-1gmfj7p:hover{background-color:#3545ee}.form_submit-button.svelte-1gmfj7p:disabled{opacity:0.7;cursor:not-allowed}.form_submit-button[variation="small"].svelte-1gmfj7p{width:150px;height:auto}.form_submit-button[variation="black"].svelte-1gmfj7p{width:auto;height:auto;padding-right:28px;padding-left:28px;background-color:#333;font-weight:500}.form_submit-button[variation="black"].svelte-1gmfj7p:hover{background-color:#000}.form_submit-button[variation="red"].svelte-1gmfj7p{width:auto;height:auto;padding-right:28px;padding-left:28px;background-color:#ff6382;font-weight:500}.form_submit-button[variation="red"].svelte-1gmfj7p:hover{background-color:#ff6382}.form_submit-button[variation="grey"].svelte-1gmfj7p{width:auto;height:auto;padding-right:28px;padding-left:28px;background-color:#d2d4d5;font-weight:500}.form_submit-button[variation="grey"].svelte-1gmfj7p:hover{background-color:#d2d4d5}
    13 .field_label.svelte-a6pibg{margin-top:6px;margin-bottom:6px;color:#999999;font-size:12px;line-height:18px;font-weight:bold;display:block}
    14 div.svelte-1ppj3qq{text-align:center;padding:20px}img.svelte-1ppj3qq{max-width:150px;margin:auto}
    15 div.configuration-container.svelte-k0nbyo{width:100%;margin-right:auto;margin-left:auto;position:relative;height:calc(100vh - 32px);display:flex;height:calc(100vh - 32px);flex-direction:column;justify-content:space-evenly}.wrapper.svelte-k0nbyo{margin:0 auto;height:calc(100vh - 80px);width:80%}.main-content.svelte-k0nbyo{background-color:white;border:1px solid #f7f7f7;border-radius:4px;display:grid;padding:15px;grid-template-columns:1fr 1fr;grid-gap:16px;height:80%;align-items:center;justify-content:space-between}@media screen and (max-width: 782px){.main-content.svelte-k0nbyo{grid-template-columns:1fr;height:auto}}
    16 a.svelte-kx0bmz{height:36px;margin-bottom:0px;margin-right:10px;padding-left:10px;padding-right:10px;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-transition:color 200ms ease-in-out;transition:color 200ms ease-in-out;color:#888;font-size:15px;line-height:37px;font-weight:500;text-decoration:none;border-bottom:2px solid transparent}a.svelte-kx0bmz:hover{color:#000}a.is-active.svelte-kx0bmz{color:#000;border-bottom:2px solid #000}a.svelte-kx0bmz:focus{outline:none;box-shadow:none}
    17 .headers.svelte-1eka5wc h3.svelte-1eka5wc{margin:0;height:10%;margin-bottom:6px}.form-wrapper.svelte-1eka5wc{display:flex;flex-direction:column;height:auto;padding:0px 10px;border-radius:4px;margin-bottom:10px}.form-wrapper.new-page.svelte-1eka5wc{background-color:#f7f8f9}form.configuration-form.svelte-1eka5wc{border-radius:4px;height:calc(100% - 32px);width:100%;display:inline-flex;flex-direction:column}.section-description.svelte-1eka5wc{font-size:12px;font-weight:bold}.no-pages-added.svelte-1eka5wc{display:flex;justify-content:center;align-items:center;flex:1;width:100%;background-color:#f7f7f7;border:1px solid #f7f7f7}.no-pages-added.svelte-1eka5wc p.svelte-1eka5wc{font-size:14px;font-weight:700}.added-pages.svelte-1eka5wc{flex:1;display:inline-flex;flex-direction:column}.added-pages.svelte-1eka5wc .fields-wrapper.svelte-1eka5wc,.added-pages.svelte-1eka5wc .fields-headers.svelte-1eka5wc{padding:0 10px;background-color:#f7f8f9}
    18 .headers.svelte-1l2pbbv h3.svelte-1l2pbbv{margin:0;height:10%;margin-bottom:6px}.form-wrapper.svelte-1l2pbbv{display:flex;flex-direction:column;height:auto;padding:0px 10px;border-radius:4px;margin-bottom:10px}.form-wrapper.new-page.svelte-1l2pbbv{background-color:#f7f8f9}form.configuration-form.svelte-1l2pbbv{border-radius:4px;height:calc(100% - 32px);width:100%;display:inline-flex;flex-direction:column}.section-description.svelte-1l2pbbv{font-size:12px;font-weight:bold}.no-collections.svelte-1l2pbbv{display:flex;justify-content:center;align-items:center;flex:1;width:100%;background-color:#f7f7f7;border:1px solid #f7f7f7;min-height:90px}.no-collections.svelte-1l2pbbv p.svelte-1l2pbbv{font-size:14px;font-weight:700}.added-pages.svelte-1l2pbbv{flex:1;display:inline-flex;flex-direction:column}.added-pages.svelte-1l2pbbv .fields-wrapper.svelte-1l2pbbv,.added-pages.svelte-1l2pbbv .fields-headers.svelte-1l2pbbv{padding:0 10px;background-color:#f7f8f9}.fields-wrapper{flex:1;overflow:auto;max-height:calc(50px * 5)}.fields-wrapper::-webkit-scrollbar-thumb{background-color:#a1a1a1}
    19 .modal-wrapper.svelte-j6cw5o{position:fixed;top:0;left:0;background-color:rgba(0, 0, 0, 0.7);z-index:99999999;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center}.modal.svelte-j6cw5o{background-color:white;height:30vh;width:30vw;display:grid;grid-template-rows:auto 1fr}.modal-header.svelte-j6cw5o{display:flex;padding:20px 15px;justify-content:space-between;font-weight:700;font-size:16px;border-bottom:1px solid #f7f7f7}.modal-header.svelte-j6cw5o a.svelte-j6cw5o{color:black;text-decoration:none}.modal-content.svelte-j6cw5o{background-color:#f5f5f5;display:flex;flex-direction:column;justify-content:center;align-items:center}.modal-button.svelte-j6cw5o{display:inline-block;padding:9px 15px;color:white;border:0;line-height:inherit;text-decoration:none;cursor:pointer;border-radius:4px}.modal-button.red.svelte-j6cw5o{width:auto;height:auto;padding-right:28px;padding-left:28px;background-color:#FF6382;font-weight:500}.modal-button.red.svelte-j6cw5o:hover{background-color:#FF6382}.modal-button.grey.svelte-j6cw5o{width:auto;height:auto;padding-right:28px;padding-left:28px;background-color:#d2d4d5;font-weight:500}.modal-button.grey.svelte-j6cw5o:hover{background-color:#d2d4d5}
    20 form.svelte-24m7xe{display:grid;grid-gap:8px;justify-content:center;align-items:center;grid-template-columns:1fr 1fr}select.svelte-24m7xe{background-color:#f7f8f9}
    21 img.svelte-oui6fo{max-width:100%;height:auto}a.svelte-oui6fo{box-shadow:none}
    22 div.navbar-light.svelte-eljuso{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;flex-grow:1;justify-self:flex-start;align-self:flex-start;padding-left:10px;margin-bottom:-1px}
     9      .button:disabled, .wp-core-ui .button[disabled]{background-color:#c5c5c5 !important;color:white !important;box-shadow:none !important;border:none !important;text-shadow:none !important;font-size:14px;width:30px;height:30px;vertical-align:middle;padding:0;margin:0}input.field-input:invalid:focus{border:1px solid red}input.field-input:focus:invalid ~ small.error-message{display:block}div.input-wrapper{position:relative;padding-bottom:22px}select.field-select{box-shadow:none;height:50px;padding-right:16px;padding-left:16px;border:1px none #000;border-radius:0px;background-color:white;display:block;width:100%;height:38px;padding:8px 12px;font-size:14px;line-height:1.42857143;color:#000}.grid{display:grid;grid-gap:8px;align-items:center;grid-auto-columns:auto}.grid.grid-with-actions{grid-template-columns:1fr 1fr auto}.grid.grid-two{grid-template-columns:1fr 1fr}.button{margin-right:16px;padding-top:6px;padding-bottom:6px;padding-right:24px;padding-left:24px;font-size:15px;line-height:16px;height:auto;font-weight:500;text-decoration:none;display:inline-block;border-radius:4px}.button.primary{background-color:#4353ff;-webkit-transition-property:none;transition-property:none;color:#fff;border-radius:4px !important}.button.primary:hover{background-color:#3545ee;color:#fff}.button.remove{background-color:#ff6382;border:none;border-radius:50%;color:#fff;font-size:10px;height:30px;width:30px;box-shadow:none;padding:0;line-height:30px;text-align:center}.button.remove:hover{background-color:#ff6382;color:#fff}.button.add{background-color:#38d996;border:none;border-radius:50%;color:#fff;font-size:10px!important;width:30px;height:30px;box-shadow:none}.button.add:hover{background-color:#38d996;color:#fff}p.description-subtitle{color:#999999;font-size:12px}
     10.actions-container.svelte-13sw1fy{display:flex;height:100%;flex-direction:column;overflow:auto;overflow:auto;justify-content:space-evenly}hr.svelte-13sw1fy{border-color:#f7f7f7;margin:10px}.site-container.svelte-13sw1fy{display:flex;height:100%;overflow:auto;justify-content:center;align-items:center}.actions-container.svelte-13sw1fy p.svelte-13sw1fy{margin:0;line-height:1}.actions-container h4{margin:0}
     11div.svelte-1tca3kp{width:100%;max-width:90%;margin-right:auto;margin-left:auto;position:relative;display:flex;justify-content:center;align-items:center}
     12input[type="submit"].svelte-eb2c7g{-webkit-appearance:button}input[type="submit"].svelte-eb2c7g{display:inline-block;padding:9px 15px;color:white;border:0;line-height:inherit;text-decoration:none;cursor:pointer;border-radius:4px}.form_submit-button.svelte-eb2c7g{width:100%;height:50px;padding-right:28px;padding-left:28px;background-color:#4353ff;font-weight:500}.form_submit-button.svelte-eb2c7g:hover{background-color:#3545ee}.form_submit-button.svelte-eb2c7g:disabled{opacity:0.7;cursor:not-allowed}.form_submit-button[variation="small"].svelte-eb2c7g{width:150px;height:auto}.form_submit-button[variation="black"].svelte-eb2c7g{width:auto;height:auto;padding-right:28px;padding-left:28px;background-color:#333;font-weight:500}.form_submit-button[variation="black"].svelte-eb2c7g:hover{background-color:#000}.form_submit-button[variation="red"].svelte-eb2c7g{width:auto;height:auto;padding-right:28px;padding-left:28px;background-color:#ff6382;font-weight:500}.form_submit-button[variation="red"].svelte-eb2c7g:hover{background-color:#ff6382}.form_submit-button[variation="grey"].svelte-eb2c7g{width:auto;height:auto;padding-right:28px;padding-left:28px;background-color:#d2d4d5;font-weight:500}.form_submit-button[variation="grey"].svelte-eb2c7g:hover{background-color:#d2d4d5}
     13div.svelte-pg1ssp{text-align:center;padding:20px}img.svelte-pg1ssp{max-width:200px;margin:auto}
     14.field_label.svelte-mat9s6{margin-top:6px;margin-bottom:6px;color:#999999;font-size:12px;line-height:18px;font-weight:bold;display:block}
     15a.svelte-1dx6voi{height:36px;margin-bottom:0px;margin-right:10px;padding-left:10px;padding-right:10px;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-transition:color 200ms ease-in-out;transition:color 200ms ease-in-out;color:#888;font-size:15px;line-height:37px;font-weight:500;text-decoration:none;border-bottom:2px solid transparent}a.svelte-1dx6voi:hover{color:#000}a.is-active.svelte-1dx6voi{color:#000;border-bottom:2px solid #000}a.svelte-1dx6voi:focus{outline:none;box-shadow:none}
     16.headers.svelte-13j5yht h3.svelte-13j5yht{margin:0;height:10%;margin-bottom:6px}.form-wrapper.svelte-13j5yht{display:flex;flex-direction:column;height:auto;padding:0px 10px;border-radius:4px;margin-bottom:10px}.form-wrapper.new-page.svelte-13j5yht{background-color:#f7f8f9}form.configuration-form.svelte-13j5yht{border-radius:4px;height:calc(100% - 32px);width:100%;display:inline-flex;flex-direction:column}.section-description.svelte-13j5yht{font-size:12px;font-weight:bold}.no-collections.svelte-13j5yht{display:flex;justify-content:center;align-items:center;flex:1;width:100%;background-color:#f7f7f7;border:1px solid #f7f7f7;min-height:90px}.no-collections.svelte-13j5yht p.svelte-13j5yht{font-size:14px;font-weight:700}.added-pages.svelte-13j5yht{flex:1;display:inline-flex;flex-direction:column}.added-pages.svelte-13j5yht .fields-wrapper.svelte-13j5yht,.added-pages.svelte-13j5yht .fields-headers.svelte-13j5yht{padding:0 10px;background-color:#f7f8f9}.fields-wrapper{flex:1;overflow:auto;max-height:calc(50px * 5)}.fields-wrapper::-webkit-scrollbar-thumb{background-color:#a1a1a1}
     17.headers.svelte-14gykfj h3.svelte-14gykfj{margin:0;height:10%;margin-bottom:6px}.form-wrapper.svelte-14gykfj{display:flex;flex-direction:column;height:auto;padding:0px 10px;border-radius:4px;margin-bottom:10px}.form-wrapper.new-page.svelte-14gykfj{background-color:#f7f8f9}form.configuration-form.svelte-14gykfj{border-radius:4px;height:calc(100% - 32px);width:100%;display:inline-flex;flex-direction:column}.section-description.svelte-14gykfj{font-size:12px;font-weight:bold}.no-pages-added.svelte-14gykfj{display:flex;justify-content:center;align-items:center;flex:1;width:100%;background-color:#f7f7f7;border:1px solid #f7f7f7}.no-pages-added.svelte-14gykfj p.svelte-14gykfj{font-size:14px;font-weight:700}.added-pages.svelte-14gykfj{flex:1;display:inline-flex;flex-direction:column}.added-pages.svelte-14gykfj .fields-wrapper.svelte-14gykfj,.added-pages.svelte-14gykfj .fields-headers.svelte-14gykfj{padding:0 10px;background-color:#f7f8f9}
     18div.configuration-container.svelte-9bdctk{width:100%;margin-right:auto;margin-left:auto;position:relative;height:calc(100vh - 32px);display:flex;height:calc(100vh - 32px);flex-direction:column;justify-content:space-evenly}.wrapper.svelte-9bdctk{margin:0 auto;height:calc(100vh - 80px);width:80%}.main-content.svelte-9bdctk{background-color:white;border:1px solid #f7f7f7;border-radius:4px;display:grid;padding:15px;grid-template-columns:1fr 1fr;grid-gap:16px;height:80%;align-items:center;justify-content:space-between}@media screen and (max-width: 782px){.main-content.svelte-9bdctk{grid-template-columns:1fr;height:auto}}
     19.modal-wrapper.svelte-qi2scw{position:fixed;top:0;left:0;background-color:rgba(0, 0, 0, 0.7);z-index:99999999;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center}.modal.svelte-qi2scw{background-color:white;height:30vh;width:30vw;display:grid;grid-template-rows:auto 1fr}.modal-header.svelte-qi2scw{display:flex;padding:20px 15px;justify-content:space-between;font-weight:700;font-size:16px;border-bottom:1px solid #f7f7f7}.modal-header.svelte-qi2scw a.svelte-qi2scw{color:black;text-decoration:none}.modal-content.svelte-qi2scw{background-color:#f5f5f5;display:flex;flex-direction:column;justify-content:center;align-items:center}.modal-button.svelte-qi2scw{display:inline-block;padding:9px 15px;color:white;border:0;line-height:inherit;text-decoration:none;cursor:pointer;border-radius:4px}.modal-button.red.svelte-qi2scw{width:auto;height:auto;padding-right:28px;padding-left:28px;background-color:#FF6382;font-weight:500}.modal-button.red.svelte-qi2scw:hover{background-color:#FF6382}.modal-button.grey.svelte-qi2scw{width:auto;height:auto;padding-right:28px;padding-left:28px;background-color:#d2d4d5;font-weight:500}.modal-button.grey.svelte-qi2scw:hover{background-color:#d2d4d5}
     20img.svelte-s2dgog{max-width:100%;height:auto}a.svelte-s2dgog{box-shadow:none}
     21.modal-wrapper.svelte-qi2scw{position:fixed;top:0;left:0;background-color:rgba(0, 0, 0, 0.7);z-index:99999999;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center}.modal.svelte-qi2scw{background-color:white;height:30vh;width:30vw;display:grid;grid-template-rows:auto 1fr}.modal-header.svelte-qi2scw{display:flex;padding:20px 15px;justify-content:space-between;font-weight:700;font-size:16px;border-bottom:1px solid #f7f7f7}.modal-header.svelte-qi2scw a.svelte-qi2scw{color:black;text-decoration:none}.modal-content.svelte-qi2scw{background-color:#f5f5f5;display:flex;flex-direction:column;justify-content:center;align-items:center}.modal-button.svelte-qi2scw{display:inline-block;padding:9px 15px;color:white;border:0;line-height:inherit;text-decoration:none;cursor:pointer;border-radius:4px}.modal-button.red.svelte-qi2scw{width:auto;height:auto;padding-right:28px;padding-left:28px;background-color:#FF6382;font-weight:500}.modal-button.red.svelte-qi2scw:hover{background-color:#FF6382}.modal-button.grey.svelte-qi2scw{width:auto;height:auto;padding-right:28px;padding-left:28px;background-color:#d2d4d5;font-weight:500}.modal-button.grey.svelte-qi2scw:hover{background-color:#d2d4d5}
     22form.svelte-t3nmi4{display:grid;grid-gap:8px;justify-content:center;align-items:center;grid-template-columns:1fr 1fr}select.svelte-t3nmi4{background-color:#f7f8f9}
     23div.navbar-light.svelte-1qxftnk{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;flex-grow:1;justify-self:flex-start;align-self:flex-start;padding-left:10px;margin-bottom:-1px}
    2324
    2425/*# sourceMappingURL=bundle.css.map */
  • webflow-pages/trunk/externals/dashboard/public/bundle.css.map

    r2494376 r3153929  
    33  "file": "bundle.css",
    44  "sources": [
    5     "../src/App.svelte",
    6     "../src/components/Notifications.svelte",
    7     "../src/components/Footer.svelte",
    8     "../src/pages/Login.svelte",
    9     "../src/pages/Configuration.svelte",
    10     "../src/pages/Utils.svelte",
    11     "../src/components/Container.svelte",
    12     "../src/components/Submit.svelte",
    13     "../src/components/Label.svelte",
    14     "../src/components/Logo.svelte",
    15     "../src/components/ConfigurationContainer.svelte",
    16     "../src/components/Link.svelte",
    17     "../src/components/StaticRules.svelte",
    18     "../src/components/CollectionRules.svelte",
    19     "../src/components/RemoveTokenAction.svelte",
    20     "../src/components/ChangeCacheAction.svelte",
    21     "../src/components/Site.svelte",
    22     "../src/components/Navbar.svelte"
     5    "..\\src\\App.svelte",
     6    "..\\src\\components\\Notifications.svelte",
     7    "..\\src\\components\\Footer.svelte",
     8    "..\\src\\pages\\Login.svelte",
     9    "..\\src\\pages\\Configuration.svelte",
     10    "..\\src\\pages\\Utils.svelte",
     11    "..\\src\\components\\Container.svelte",
     12    "..\\src\\components\\Submit.svelte",
     13    "..\\src\\components\\Logo.svelte",
     14    "..\\src\\components\\Label.svelte",
     15    "..\\src\\components\\Link.svelte",
     16    "..\\src\\components\\CollectionRules.svelte",
     17    "..\\src\\components\\StaticRules.svelte",
     18    "..\\src\\components\\ConfigurationContainer.svelte",
     19    "..\\src\\components\\RemoveTokenAction.svelte",
     20    "..\\src\\components\\Site.svelte",
     21    "..\\src\\components\\RemoveTokenAndDataAction.svelte",
     22    "..\\src\\components\\ChangeCacheAction.svelte",
     23    "..\\src\\components\\Navbar.svelte"
    2324  ],
    2425  "sourcesContent": [
    25     "<script>\n\timport Route from './components/Route.svelte';\n\timport LoginPage from './pages/Login.svelte';\n\timport ConfigurationPage from './pages/Configuration.svelte';\n\timport UtilsPage from './pages/Utils.svelte';\n\timport Notifications from './components/Notifications.svelte';\n\timport {store} from './store/wfData';\n\timport Footer from './components/Footer.svelte';\n\n</script>\n<!-- \"Routes\" of the dashboard -->\n<Route path=\"/login\" component={LoginPage}></Route>\n<Route path=\"/configuration\" component={ConfigurationPage}></Route>\n<Route path=\"/settings\" component={UtilsPage}></Route>\n\n<Notifications></Notifications>\n<Footer></Footer>\n\n<style>\n:global(#wpcontent) {\n\tpadding-left: 0;\n}\n:global(#webflow-dashboard-root) {\n\theight: 100%;\n\tdisplay: flex;\n\tmin-height: calc(100vh - 32px - 65px); /* 32 px is the admin bar , 65 px is the padding bottom*/\n}\n</style>",
    26     "<script>\n    import {notifications} from '../store/notifications';\n    import { fade } from 'svelte/transition';\n   \n</script>\n<style>\ndiv {\n    position: fixed;\n    bottom: 40px;\n    left: 55%;\n    padding: 8px 100px;\n    transform: translateX(-50%);\n}\np {\n    margin: 0;\n    color: white;\n    font-size: 14px;\n    text-align: center;\n}\n</style>\n{#if $notifications.currentNotification}\n<div transition:fade style={$notifications.currentNotification.type == \"success\" ? \"background-color: #38D996\" : \"background-color:  #FF6382\"}>\n    <p>{$notifications.currentNotification.message}</p>\n</div>\n{/if}",
    27     "<style>\n.footer {\n    position: absolute;\n    bottom: 12px;\n    width: 100%;\n    text-align: center;\n}\na {\n    color: #4253ff;\n}\n</style>\n\n<div class=\"footer\">\n    <a href=\"https://university.webflow.com/\" target=\"_blank\" rel=\"nofollow\">Need support?</a>\n</div>",
    28     "<script>\n  import { store } from \"../store/wfData\";\n  import Container from \"../components/Container.svelte\";\n\n  import Submit from \"../components/Submit.svelte\";\n  import Label from \"../components/Label.svelte\";\n  import { writable } from \"svelte/store\";\n  import Logo from \"../components/Logo.svelte\";\n\n  const loginStore = writable({\n    disabled: false,\n    value: \"Add Webflow API Key\"\n  });\n\n  let token = \"\";\n\n  const handleSubmit = async e => {\n    e.preventDefault();\n    loginStore.set({ disabled: true, value: \"Saving...\" });\n    await store.saveToken(token);\n    loginStore.set({ disabled: false, value: \"Add Webflow API Key\" });\n  };\n</script>\n\n<style>\n  .login-wrapper {\n    background-color: white;\n    padding: 40px;\n    border-radius: 4px;\n    border: 1px solid #f7f7f7;\n    width: 450px;\n    text-align: center;\n  }\n  form {\n    max-width: 500px;\n    margin: auto;\n  }\n  p {\n    text-align: center;\n    margin: 0;\n    margin-bottom: 30px;\n    font-size: 14px;\n  }\n  a {\n    color: black;\n    text-align: center;\n    outline: 0;\n    box-shadow: none;\n  }\n  input.field-input {\n    margin-bottom: 10px;\n    background-color: #f7f8f9;\n  }\n\n  .warning-notice {\n    background-color: #f7f8f9;\n    padding: 20px;\n    border-radius: 4px;\n    margin-top: 20px;\n  }\n</style>\n\n<Container>\n  <div class=\"login-wrapper\">\n    <Logo />\n    <b>Congratulations on installing the Webflow Wordpress plugin!</b>\n    <p>\n      You can find your site's API key by going to the <a href=\"https://webflow.com/dashboard?utm_source=wpplugin\" target=\"_blank\" rel=\"nofollow\">Webflow Dashboard</a>, then your site's settings\n    </p>\n    <form on:submit={handleSubmit}>\n\n      <input\n        class=\"field-input\"\n        bind:value={token}\n        type=\"password\"\n        name=\"api_keys\"\n        autocomplete=\"off\"\n        placeholder=\"Your Api Key...\"\n        required />\n      <Submit value={$loginStore.value} disabled={$loginStore.disabled} />\n    </form>\n\n    <div class=\"warning-notice\">\n      This version of the plugin is not compatible with Webflow Ecommerce. Please contact <a href=\"https://university.webflow.com/contact\" target=\"_blank\" rel=\"nofollow\">Webflow Support</a> for any help with the plugin.\n    </div>\n  </div>\n</Container>\n",
    29     "<script>\n  import { store } from \"../store/wfData\";\n  import Container from \"../components/ConfigurationContainer.svelte\";\n  import StaticRules from \"../components/StaticRules.svelte\";\n  import Link from \"../components/Link.svelte\";\n  import CollectionRules from \"../components/CollectionRules.svelte\";\n\n  //store.removeToken();\n</script>\n\n<style>\n  div.spacer {\n    height: 100px;\n  }\n  :global(form:invalid input[type=\"submit\"]) {\n    opacity: 0.7;\n    cursor: not-allowed;\n  }\n\n  :global(input.field-input) {\n    height: 50px;\n    padding: 11px 16px;\n    background-color: white;\n    display: block;\n    width: 100%;\n    height: 38px;\n    padding: 8px 12px;\n    font-size: 14px;\n    line-height: 1.42857143;\n    color: #333333;\n    border: 1px solid transparent;\n    box-shadow: none;\n  }\n  :global(input.field-input:focus) {\n    border-color: #3898ec;\n    outline: 0;\n    box-shadow: none;\n  }\n  :global(input.field-input:read-only:focus) {\n    outline: 0;\n    box-shadow: none;\n  }\n\n  :global(select.field-select[disabled]) {\n    -webkit-appearance: none;\n    box-shadow: none;\n    height: 50px;\n    padding-right: 16px;\n    padding-left: 16px;\n    border: 1px none #000!important;\n    border-radius: 0px;\n\n    background-color: white!important;\n    display: block;\n    width: 100%;\n    height: 38px;\n    padding: 8px 12px;\n\n    font-size: 14px;\n    line-height: 1.42857143;\n    color: #000;\n  }\n\n  :global(#wpbody-content) {\n    float: none;\n    padding-bottom: 0;\n  }\n\n  :global(#wpfooter) {\n    display: none;\n  }\n  :global(.main-content .wrapper) {\n    display: flex;\n    flex-direction: column;\n    height: 100%;\n    overflow: hidden;\n  }\n\n  :global(small.error-message) {\n    display: none;\n    position: absolute;\n    bottom: 2px;\n  }\n  :global(.wp-core-ui .button-disabled, .wp-core-ui\n      .button-secondary.disabled, .wp-core-ui\n      .button-secondary:disabled, .wp-core-ui\n      .button-secondary[disabled], .wp-core-ui .button.disabled, .wp-core-ui\n      .button:disabled, .wp-core-ui .button[disabled]) {\n    background-color: #c5c5c5 !important;\n    color: white !important;\n    box-shadow: none !important;\n    border: none !important;\n    text-shadow: none !important;\n    font-size: 14px;\n    width: 30px;\n    height: 30px;\n    vertical-align: middle;\n    padding: 0;\n    margin: 0;\n  }\n  :global(input.field-input:invalid:focus) {\n    border: 1px solid red;\n  }\n  :global(input.field-input:focus:invalid ~ small.error-message) {\n    display: block;\n  }\n\n  :global(div.input-wrapper) {\n    position: relative;\n    padding-bottom: 22px;\n  }\n\n  :global(select.field-select) {\n    box-shadow: none;\n    height: 50px;\n    padding-right: 16px;\n    padding-left: 16px;\n    border: 1px none #000;\n    border-radius: 0px;\n\n    background-color: white;\n    display: block;\n    width: 100%;\n    height: 38px;\n    padding: 8px 12px;\n\n    font-size: 14px;\n    line-height: 1.42857143;\n    color: #000;\n  }\n\n  :global(.grid) {\n    display: grid;\n    grid-gap: 8px;\n    align-items: center;\n    grid-auto-columns: auto;\n  }\n  :global(.grid.grid-with-actions) {\n    grid-template-columns: 1fr 1fr auto;\n  }\n  :global(.grid.grid-two) {\n    grid-template-columns: 1fr 1fr;\n  }\n\n  :global(.button) {\n    margin-right: 16px;\n    padding-top: 6px;\n    padding-bottom: 6px;\n    padding-right: 24px;\n    padding-left: 24px;\n    font-size: 15px;\n    line-height: 16px;\n    height: auto;\n    font-weight: 500;\n    text-decoration: none;\n    display: inline-block;\n    border-radius: 4px;\n  }\n\n  :global(.button.primary) {\n    background-color: #4353ff;\n    -webkit-transition-property: none;\n    transition-property: none;\n    color: #fff;\n    border-radius: 4px !important;\n  }\n  :global(.button.primary:hover) {\n    background-color: #3545ee;\n    color: #fff;\n  }\n  :global(.button.remove) {\n    background-color: #ff6382;\n    border: none;\n    border-radius: 50%;\n    color: #fff;\n    font-size: 10px;\n    height: 30px;\n    width: 30px;\n    box-shadow: none;\n    padding: 0;\n        line-height: 30px;\n        text-align: center;\n\n  }\n  :global(.button.remove:hover) {\n    background-color: #ff6382;\n    color: #fff;\n  }\n  :global(.button.add) {\n    background-color: #38d996;\n    border: none;\n    border-radius: 50%;\n    color: #fff;\n    font-size: 10px!important;\n    width: 30px;\n    height: 30px;\n    box-shadow: none;\n  }\n  :global(.button.add:hover) {\n    background-color: #38d996;\n    color: #fff;\n  }\n  :global(p.description-subtitle) {\n        color: #999999;\n    margin: 0;\n    font-size: 12px;\n    margin-top: -10px;\n    margin-bottom: 4px;\n  }\n</style>\n\n<Container>\n  <StaticRules />\n  <CollectionRules />\n</Container>\n",
    30     "<script>\n  import Container from \"../components/ConfigurationContainer.svelte\";\n  import Navigation from \"../components/Navigation.svelte\";\n  import RemoveTokenAction from \"../components/RemoveTokenAction.svelte\";\n  import InvalidateCacheAction from \"../components/InvalidateCacheAction.svelte\";\n  import PreloadCacheAction from \"../components/PreloadCacheAction.svelte\";\n  import ChangeCacheAction from \"../components/ChangeCacheAction.svelte\";\n\n  import Site from \"../components/Site.svelte\";\n</script>\n\n<style>\n  .actions-container {\n    display: flex;\n    height: 100%;\n    flex-direction: column;\n    overflow: auto;\n    overflow: auto;\n    justify-content: space-evenly;\n  }\n  hr {\n    border-color: #f7f7f7;\n    margin: 10px;\n  }\n  .site-container {\n    display: flex;\n    height: 100%;\n    overflow: auto;\n    justify-content: center;\n    align-items: center;\n  }\n  .actions-container p {\n    margin: 0;\n    line-height: 1;\n  }\n  :global(.actions-container h4) {\n    margin: 0;\n  }\n</style>\n\n<Container>\n  <div class=\"actions-container\">\n    <p>These advanced settings control how your site loads your Webflow pages. <br />For the most part, you shouldn't need to mess with them.</p>\n    <ChangeCacheAction />\n    <hr />\n    <InvalidateCacheAction />\n    <hr />\n    <PreloadCacheAction />\n    <hr />\n    <RemoveTokenAction />\n  </div>\n  <div class=\"site-container\">\n    <Site />\n  </div>\n</Container>\n",
    31     "<style>\ndiv {\n    width: 100%;\n    max-width: 90%;\n    margin-right: auto;\n    margin-left: auto;\n    position: relative;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n}\n</style>\n\n<div>\n    <slot></slot>\n</div>",
    32     "<script>\n  export let value = \"Submit\";\n  export let disabled = false;\n  export let variation = null;\n</script>\n\n<style>\n  input[type=\"submit\"] {\n    -webkit-appearance: button;\n  }\n\n  input[type=\"submit\"] {\n    display: inline-block;\n    padding: 9px 15px;\n    color: white;\n    border: 0;\n    line-height: inherit;\n    text-decoration: none;\n    cursor: pointer;\n    border-radius: 4px;\n  }\n\n  .form_submit-button {\n    width: 100%;\n    height: 50px;\n    padding-right: 28px;\n    padding-left: 28px;\n    background-color: #4353ff;\n    font-weight: 500;\n  }\n\n  .form_submit-button:hover {\n    background-color: #3545ee;\n  }\n  .form_submit-button:disabled {\n    opacity: 0.7;\n    cursor: not-allowed;\n  }\n  .form_submit-button[variation=\"small\"] {\n    width: 150px;\n    height: auto;\n  }\n\n  .form_submit-button[variation=\"black\"] {\n    width: auto;\n    height: auto;\n    padding-right: 28px;\n    padding-left: 28px;\n    background-color: #333;\n    font-weight: 500;\n  }\n\n  .form_submit-button[variation=\"black\"]:hover {\n    background-color: #000;\n  }\n\n  .form_submit-button[variation=\"red\"] {\n    width: auto;\n    height: auto;\n    padding-right: 28px;\n    padding-left: 28px;\n    background-color: #ff6382;\n    font-weight: 500;\n  }\n\n  .form_submit-button[variation=\"red\"]:hover {\n    background-color: #ff6382;\n  }\n\n  .form_submit-button[variation=\"grey\"] {\n    width: auto;\n    height: auto;\n    padding-right: 28px;\n    padding-left: 28px;\n    background-color: #d2d4d5;\n    font-weight: 500;\n  }\n\n  .form_submit-button[variation=\"grey\"]:hover {\n    background-color: #d2d4d5;\n  }\n</style>\n\n<input\n  type=\"submit\"\n  {value}\n  class=\"form_submit-button\"\n  {variation}\n  {disabled} />\n",
    33     "<script>\n  export let forHtml = \"\";\n</script>\n\n<style>\n  .field_label {\n    margin-top: 6px;\n    margin-bottom: 6px;\n    color: #999999;\n    font-size: 12px;\n    line-height: 18px;\n    font-weight: bold;\n    display: block;\n  }\n</style>\n\n<label class=\"field_label\" for={forHtml}>\n  <slot />\n</label>\n",
    34     "<style>\ndiv {\n    text-align: center;\n    padding: 20px;\n}\nimg {\n    max-width: 150px;\n    margin: auto;\n}\n</style>\n<div>\n<img\n  src=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIzLjAuNCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxMzkzLjEgMjIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMzkzLjEgMjIxOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6IzQzNTNGRjt9Cgkuc3Qxe2ZpbGw6IzMzMzMzMzt9Cjwvc3R5bGU+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNzIsODguOWMwLTE0LjUtMTQuMS0yOS45LTM4LjUtMjkuOWMtMjcuNCwwLTU3LjUsMjAuMS02Mi4xLDYwLjJjLTQuNyw0MC41LDIwLjUsNTguNSw0NS45LDU4LjUKCXMzOC43LTkuOSw1Mi4zLTIzLjFjLTExLjctMTQuNy0yNi44LTcuOS0yOS43LTYuNGMtMy4yLDEuNi03LjMsMy44LTE1LjcsMy44Yy05LjgsMC0xOS44LTQuNC0xOS44LTIyLjcKCUMyNjcuMiwxMjMuMSwyNzIsMTAzLjQsMjcyLDg4Ljl6IE0yNDAuOSw5MS4zYy0wLjQsNC41LTIuMiwxMi4yLTM0LDE2LjVjNi43LTIzLjgsMTkuNS0yNS42LDI1LjQtMjUuNgoJQzIzNy44LDgyLjIsMjQxLjMsODYuNSwyNDAuOSw5MS4zeiBNMTM0LjUsOTUuMmMwLDAtMTMuNSw0Mi40LTE0LjYsNDUuOWMtMC40LTMuNi0xMC4zLTc5LjctMTAuMy03OS43Yy0yMywwLTM1LjMsMTYuNC00MS44LDMzLjcKCWMwLDAtMTYuNCw0Mi41LTE3LjgsNDYuMWMtMC4xLTMuMy0yLjUtNDUuNi0yLjUtNDUuNkM0Ni4xLDc0LjQsMjYuNyw2MS41LDExLDYxLjVsMTksMTE1LjNjMjQuMS0wLjEsMzcuMS0xNi40LDQzLjktMzMuNwoJYzAsMCwxNC41LTM3LjUsMTUuMS0zOS4yYzAuMSwxLjYsMTAuNCw3Mi45LDEwLjQsNzIuOWMyNC4yLDAsMzcuMi0xNS4zLDQ0LjItMzJsMzMuOS04My4zQzE1My42LDYxLjUsMTQxLDc3LjgsMTM0LjUsOTUuMnoKCSBNMzYwLjgsNTguOGMtMTQuOSwwLTI2LjMsOC4xLTM1LjksMjB2LTAuMWw4LjYtNjkuM2MtMTkuOCwwLTM1LjksMTcuMi0zOSw0Mi44bC0xNSwxMjMuN2MxMS40LDAsMjMuNS0zLjMsMzAtMTEuNwoJYzUuOCw3LjUsMTQuNSwxMy41LDI3LjQsMTMuNWMzMy40LDAsNTYuMy0zOC44LDU2LjMtNzUuMkMzOTMsNjkuMywzNzYuOSw1OC44LDM2MC44LDU4Ljh6IE0zNTcuNywxMTguMwoJYy0zLjUsMjAuMy0xNC44LDM0LjEtMjUuNywzNC4xYy0xMSwwLTE1LjctNC45LTE1LjctNC45YzIuMS0xNy44LDMuNC0yOC43LDcuNC0zOC4xUzMzNy4yLDg1LDM0Ny4xLDg1CglDMzU2LjgsODUsMzYxLjIsOTcuOSwzNTcuNywxMTguM3ogTTQ3Ni42LDYxLjVoLTIzLjNsMC4xLTEuMmMxLjYtMTUuMiw1LjItMjMuMiwxNy4xLTI0LjVjOC4xLTAuOCwxMS43LTUsMTIuNi05LjYKCWMwLjctMy42LDIuOS0xNi4xLDIuOS0xNi4xYy00Ni44LTAuMy02MS41LDE5LjktNjUuMyw1MC43bC0wLjEsMC43aC0wLjVjLTcuNiwwLTE2LDguNi0xNy40LDE5LjVsLTAuNSw0aDE1LjZsLTEzLjEsMTA4LjJsLTQsMTkuNAoJYzAuNSwwLDEuMSwwLjEsMS42LDAuMWMyMS45LTAuOCwzNS45LTE4LjEsMzktNDMuMkw0NTEuNSw4NWg3LjNjNy4yLDAsMTUuNi03LjIsMTcuMS0xOS4yTDQ3Ni42LDYxLjV6IE01OTcuOCw1OS41CgljLTI2LjksMC01Mi4zLDE5LjgtNjAuMSw1MC45czQsNjcuOSw0My42LDY3LjljMzkuNSwwLDYyLjMtMzguMyw2Mi4zLTcwLjJDNjQzLjYsNzYuNCw2MjIuMSw1OS41LDU5Ny44LDU5LjV6IE02MDguNywxMTcuMwoJYy0xLjQsMTQuMS03LjYsMzUuNS0yNC42LDM1LjVjLTE3LjEsMC0xNC43LTI1LTEzLTM2LjljMS44LTEyLjcsOC45LTMwLjgsMjQuMi0zMC44QzYwOSw4NS4xLDYxMC4zLDEwMS40LDYwOC43LDExNy4zeiBNNzc2LjUsOTUuMgoJYzAsMC0xMy41LDQyLjQtMTQuNiw0NS45Yy0wLjQtMy42LTEwLjMtNzkuNy0xMC4zLTc5LjdjLTIzLDAtMzUuMywxNi40LTQxLjgsMzMuN2MwLDAtMTYuNCw0Mi41LTE3LjgsNDYuMQoJYy0wLjEtMy4zLTIuNS00NS42LTIuNS00NS42Yy0xLjQtMjEuMi0yMC44LTM0LjEtMzYuNS0zNC4xbDE4LjksMTE1LjNjMjQuMS0wLjEsMzcuMS0xNi40LDQzLjktMzMuN2MwLDAsMTQuNS0zNy41LDE1LTM5LjIKCWMwLjEsMS42LDEwLjQsNzIuOSwxMC40LDcyLjljMjQuMiwwLDM3LjItMTUuMyw0NC4yLTMybDMzLjktODMuM0M3OTUuNSw2MS41LDc4Mi45LDc3LjgsNzc2LjUsOTUuMnogTTQ5OC42LDEwLjFMNDc5LDE2OC4ybDAsMAoJbC00LDE5LjVjMC41LDAsMS4xLDAuMSwxLjYsMC4xbDAsMGMyMS4xLTAuMywzNi4xLTE4LjgsMzguOS00Mi4xTDUyNi44LDU1QzUzMC4yLDI3LjMsNTEzLjcsMTAuMSw0OTguNiwxMC4xeiIvPgo8Zz4KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik05NTIuOCwxMDhjLTcuNyw2LjQtMTguNyw5LjYtMzMsOS42aC0yNy40VjE2NUg4NjVWMzMuM2g1Ni41YzEzLDAsMjMuNCwzLjQsMzEuMiwxMC4yCgkJYzcuOCw2LjgsMTEuNiwxNy4zLDExLjYsMzEuNUM5NjQuMyw5MC42LDk2MC41LDEwMS42LDk1Mi44LDEwOHogTTkzMS43LDYwLjZjLTMuNS0yLjktOC40LTQuNC0xNC42LTQuNGgtMjQuOFY5NWgyNC44CgkJYzYuMywwLDExLjItMS42LDE0LjYtNC43YzMuNS0zLjIsNS4yLTguMiw1LjItMTVDOTM3LDY4LjQsOTM1LjIsNjMuNSw5MzEuNyw2MC42eiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTEwMjIuOSwxMDUuOGM0LjctMC42LDguMS0xLjMsMTAuMi0yLjJjMy43LTEuNSw1LjUtNCw1LjUtNy4yYzAtNC0xLjQtNi43LTQuMi04LjNjLTIuOC0xLjUtNi45LTIuMy0xMi40LTIuMwoJCWMtNi4xLDAtMTAuNCwxLjUtMTIuOSw0LjVjLTEuOCwyLjItMyw1LjItMy42LDguOWgtMjQuNmMwLjUtOC41LDIuOS0xNS41LDcuMi0yMWM2LjgtOC42LDE4LjQtMTIuOSwzNC44LTEyLjkKCQljMTAuNywwLDIwLjIsMi4xLDI4LjUsNi4zYzguMyw0LjIsMTIuNSwxMi4yLDEyLjUsMjMuOXY0NC43YzAsMy4xLDAuMSw2LjgsMC4yLDExLjNjMC4yLDMuMywwLjcsNS42LDEuNSw2LjgKCQljMC44LDEuMiwyLjEsMi4yLDMuOCwyLjl2My44aC0yNy43Yy0wLjgtMi0xLjMtMy44LTEuNi01LjVjLTAuMy0xLjctMC41LTMuNy0wLjctNS45Yy0zLjUsMy44LTcuNiw3LjEtMTIuMiw5LjcKCQljLTUuNSwzLjItMTEuNyw0LjctMTguNyw0LjdjLTguOSwwLTE2LjItMi41LTIyLTcuNWMtNS44LTUtOC43LTEyLjItOC43LTIxLjRjMC0xMiw0LjYtMjAuNiwxMy45LTI2YzUuMS0yLjksMTIuNi01LDIyLjUtNi4zCgkJTDEwMjIuOSwxMDUuOHogTTEwMzguNSwxMTcuN2MtMS42LDEtMy4zLDEuOC00LjksMi41Yy0xLjcsMC42LTMuOSwxLjItNi44LDEuN2wtNS44LDEuMWMtNS40LDEtOS4zLDIuMS0xMS43LDMuNQoJCWMtNCwyLjMtNiw1LjktNiwxMC44YzAsNC4zLDEuMiw3LjUsMy43LDkuNGMyLjQsMS45LDUuNCwyLjksOC45LDIuOWM1LjYsMCwxMC43LTEuNiwxNS40LTQuOHM3LjEtOS4xLDcuMy0xNy42VjExNy43eiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTExMzQuMiw2Ny41YzYuMiwyLjYsMTEuMiw3LjMsMTUsMTQuMXYtMTRoMjQuOFYxNjBjMCwxMi42LTIuMSwyMi02LjMsMjguNGMtNy4zLDExLTIxLjIsMTYuNC00MS44LDE2LjQKCQljLTEyLjQsMC0yMi42LTIuNC0zMC41LTcuM2MtNy45LTQuOS0xMi4yLTEyLjItMTMtMjEuOWgyNy43YzAuNywzLDEuOSw1LjEsMy41LDYuNGMyLjcsMi4zLDcuNCwzLjUsMTMuOCwzLjUKCQljOS4yLDAsMTUuMy0zLjEsMTguNC05LjJjMi0zLjksMy0xMC41LDMtMTkuOHYtNi4zYy0yLjQsNC4yLTUuMSw3LjMtNy45LDkuNGMtNS4xLDMuOS0xMS42LDUuOC0xOS43LDUuOGMtMTIuNSwwLTIyLjUtNC40LTMwLTEzLjIKCQljLTcuNS04LjgtMTEuMi0yMC43LTExLjItMzUuN2MwLTE0LjUsMy42LTI2LjYsMTAuOC0zNi41YzcuMi05LjksMTcuNC0xNC44LDMwLjYtMTQuOEMxMTI2LjQsNjUuMywxMTMwLjYsNjYuMSwxMTM0LjIsNjcuNXoKCQkgTTExNDIuOSwxMzcuNGM0LjEtNC41LDYuMS0xMS43LDYuMS0yMS41YzAtOS4yLTEuOS0xNi4zLTUuOC0yMS4xYy0zLjktNC44LTkuMS03LjItMTUuNi03LjJjLTguOSwwLTE1LDQuMi0xOC40LDEyLjYKCQljLTEuOCw0LjUtMi43LDEwLTIuNywxNi41YzAsNS43LDAuOSwxMC43LDIuOCwxNS4xYzMuNCw4LjIsOS42LDEyLjMsMTguNSwxMi4zQzExMzMuOCwxNDQuMSwxMTM4LjgsMTQxLjksMTE0Mi45LDEzNy40eiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTEyNjEuMyw2OS42YzYuOCwzLDEyLjQsNy44LDE2LjgsMTQuNGM0LDUuOCw2LjYsMTIuNSw3LjgsMjAuMWMwLjcsNC41LDEsMTAuOSwwLjgsMTkuM2gtNzAuOQoJCWMwLjQsOS44LDMuOCwxNi42LDEwLjIsMjAuNWMzLjksMi40LDguNiwzLjcsMTQsMy43YzUuOCwwLDEwLjUtMS41LDE0LjEtNC41YzItMS42LDMuNy0zLjgsNS4yLTYuN2gyNmMtMC43LDUuOC0zLjgsMTEuNi05LjQsMTcuNgoJCWMtOC43LDkuNS0yMC45LDE0LjItMzYuNiwxNC4yYy0xMywwLTI0LjQtNC0zNC4zLTEyYy05LjktOC0xNC45LTIxLTE0LjktMzljMC0xNi45LDQuNS0yOS44LDEzLjQtMzguOHMyMC41LTEzLjUsMzQuOC0xMy41CgkJQzEyNDYuOSw2NSwxMjU0LjUsNjYuNiwxMjYxLjMsNjkuNnogTTEyMjMuMiw5MS42Yy0zLjYsMy43LTUuOSw4LjctNi44LDE1LjFoNDMuOWMtMC41LTYuOC0yLjctMTEuOS02LjgtMTUuNAoJCWMtNC4xLTMuNS05LjEtNS4yLTE1LjEtNS4yQzEyMzEuOSw4NiwxMjI2LjgsODcuOSwxMjIzLjIsOTEuNnoiLz4KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xMzE5LjMsMTMzLjljMC41LDQuNSwxLjcsNy43LDMuNSw5LjZjMy4yLDMuNCw5LDUuMSwxNy42LDUuMWM1LDAsOS0wLjcsMTItMi4yYzMtMS41LDQuNC0zLjcsNC40LTYuNwoJCWMwLTIuOS0xLjItNS0zLjYtNi41Yy0yLjQtMS41LTExLjMtNC0yNi42LTcuN2MtMTEuMS0yLjctMTguOS02LjItMjMuNC0xMC4zYy00LjUtNC02LjgtOS45LTYuOC0xNy41YzAtOSwzLjUtMTYuNywxMC42LTIzLjIKCQljNy4xLTYuNSwxNy05LjcsMjkuOS05LjdjMTIuMiwwLDIyLjEsMi40LDI5LjgsNy4zYzcuNyw0LjksMTIuMSwxMy4yLDEzLjIsMjUuMWgtMjUuNWMtMC40LTMuMy0xLjMtNS45LTIuOC03LjgKCQljLTIuOC0zLjUtNy42LTUuMi0xNC4zLTUuMmMtNS42LDAtOS41LDAuOS0xMS45LDIuNmMtMi40LDEuNy0zLjUsMy44LTMuNSw2LjFjMCwyLjksMS4zLDUsMy44LDYuM2MyLjUsMS40LDExLjQsMy43LDI2LjYsNy4xCgkJYzEwLjEsMi40LDE3LjcsNiwyMi44LDEwLjhjNSw0LjksNy41LDExLDcuNSwxOC4zYzAsOS42LTMuNiwxNy41LTEwLjgsMjMuNmMtNy4yLDYuMS0xOC4zLDkuMi0zMy4zLDkuMmMtMTUuMywwLTI2LjctMy4yLTM0LTkuNwoJCWMtNy4zLTYuNS0xMS0xNC43LTExLTI0LjdIMTMxOS4zeiIvPgo8L2c+Cjwvc3ZnPgo=\n\"\n  alt=\"logo\" />\n</div>",
    35     "<script>\n  import Logo from \"./Logo.svelte\";\n  import Navigation from \"./Navigation.svelte\";\n</script>\n\n<style>\n  div.configuration-container {\n    width: 100%;\n    margin-right: auto;\n    margin-left: auto;\n    position: relative;\n    \n    height: calc(100vh - 32px);\n    display: flex;\n    height: calc(100vh - 32px);\n    flex-direction: column;\n    justify-content: space-evenly;\n  }\n  .wrapper {\n    margin: 0 auto;\n    height: calc(100vh - 80px);\n    width: 80%;\n  }\n  .main-content {\n    background-color: white;\n    border: 1px solid #f7f7f7;\n    border-radius: 4px;\n    display: grid;\n    padding: 15px;\n    grid-template-columns: 1fr 1fr;\n    grid-gap: 16px;\n    height: 80%;\n    align-items: center;\n    justify-content: space-between;\n  }\n  @media screen and (max-width: 782px) {\n    .main-content {\n      grid-template-columns: 1fr;\n      height: auto;\n    }\n  }\n</style>\n\n<div class=\"configuration-container\">\n  <Logo />\n  <div class=\"wrapper\">\n    <Navigation />\n    <div class=\"main-content\">\n      <slot />\n    </div>\n  </div>\n</div>\n",
    36     "<script>\n  import { router } from \"../store/router\";\n  import { isCurrentPath } from \"../store/router\";\n\n  export let path;\n  export let params = {};\n\n  export let text = \"\";\n\n  const handleClick = e => {\n    e.preventDefault();\n    router.goTo(path, params);\n  };\n\n  const isActive = isCurrentPath(path);\n \n</script>\n\n<style>\n  a {\n    height: 36px;\n    margin-bottom: 0px;\n    margin-right: 10px;\n    padding-left: 10px;\n    padding-right: 10px;\n    -webkit-box-flex: 0;\n    -webkit-flex: 0 0 auto;\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    -webkit-transition: color 200ms ease-in-out;\n    transition: color 200ms ease-in-out;\n    color: #888;\n    font-size: 15px;\n    line-height: 37px;\n    font-weight: 500;\n    text-decoration: none;\n    border-bottom: 2px solid transparent;\n  }\n  a:hover {\n    color: #000;\n  }\n  a.is-active {\n    color: #000;\n    border-bottom: 2px solid #000;\n  }\n  a:focus {\n    outline: none;\n    box-shadow: none;\n  }\n</style>\n\n<a href=\"/\" on:click={handleClick} class={$isActive ? 'is-active' : ''}>\n  {text}\n</a>\n",
    37     "<script>\n  import { store } from \"../store/wfData\";\n  import Submit from \"./Submit.svelte\";\n  import Label from \"./Label.svelte\";\n  import { writable } from \"svelte/store\";\n  import { onMount } from \"svelte\";\n\n  const hasItems = $store.staticRules.length > 0;\n\n  let staticRule = [\"\", \"\"];\n\n  let canAdd = false;\n\n\n  const handleSubmit = async e => {\n    e.preventDefault();\n   \n    await store.saveStaticRules($store.staticRules);\n    \n  };\n\n  const addStaticRule = e => {\n    e.preventDefault();\n    document.activeElement.blur();\n    store.addStaticRule(staticRule);\n    staticRule = [\"\", \"\"];\n    canAdd = false;\n    store.saveStaticRules($store.staticRules);\n  };\n\n  const removeStaticRule = index => {\n    store.removeStaticRule(index);\n    store.saveStaticRules($store.staticRules);\n  };\n\n  const handleInput = ({ target }) => {\n    let value = target.value;\n    let isAdd = target.getAttribute(\"data-add\");\n    target.value = encodeURI(decodeURI(value)); // little sanitification\n    value = target.value;\n    const match = value.match(/^(\\.?){2}(\\/[a-zA-Z0-9_\\-]+)+\\/?$/g);\n    if (match && match[0] === value || value === \"/\") {\n      target.setCustomValidity(\"\");\n      if (isAdd) {\n        canAdd = true;\n      }\n    } else {\n      target.setCustomValidity(\"Invalid field.\");\n      if (isAdd) {\n        canAdd = false;\n      }\n    }\n  };\n\n  const pages = $store.pages.filter( page => page !== '/404' && page !== '/401' );\n</script>\n\n<style>\n  \n  .headers h3 {\n    margin: 0;\n    height: 10%;\n    margin-bottom: 6px;\n  }\n  .form-wrapper {\n    display: flex;\n    flex-direction: column;\n    height: auto;\n    padding: 0px 10px;\n    border-radius: 4px;\n    margin-bottom: 10px;\n  }\n\n  .form-wrapper.new-page {\n    background-color: #f7f8f9;\n  }\n\n  form.configuration-form {\n    border-radius: 4px;\n    height: calc(100% - 32px);\n    width: 100%;\n    display: inline-flex;\n\n    flex-direction: column;\n  }\n\n  .section-description {\n    font-size: 12px;\n    font-weight: bold;\n  }\n  .no-pages-added {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    flex: 1;\n    width: 100%;\n    background-color: #f7f7f7;\n    border: 1px solid #f7f7f7;\n  }\n  .no-pages-added p {\n    font-size: 14px;\n    font-weight: 700;\n  }\n  .added-pages {\n    flex: 1;\n    display: inline-flex;\n    flex-direction: column;\n  }\n  .added-pages .fields-wrapper, .added-pages .fields-headers{\n    padding: 0 10px;\n    background-color: #f7f8f9;\n  }\n</style>\n\n<div class=\"wrapper\">\n  <div style=\"display: flex; flex-direction: column; justify-content: space-evenly;\">\n    <div class=\"headers\">\n      <h3>Static Pages</h3>\n    \n    </div>\n    <div class=\"form-wrapper new-page\">\n    <p class=\"section-description\">Create a new redirect</p>\n      <p class=\"description-subtitle\">Create redirects to serve a made-in-Webflow page in place of a WordPress Page</p>\n      <div class=\"grid grid-with-actions \">\n        <div>\n          <Label>WordPress Path</Label>\n        </div>\n        <div>\n          <Label>Webflow Page</Label>\n        </div>\n        <div style=\"visibility:hidden\">\n          <button disabled class=\"button add\">+</button>\n        </div>\n      </div>\n      <div class=\"input-wrapper\">\n\n        <form on:submit={addStaticRule} class=\"grid grid-with-actions\">\n          <div>\n            <input\n              data-add=\"true\"\n              class=\"field-input\"\n              type=\"text\"\n              bind:value={staticRule[0]}\n              required\n              placeholder=\"/path\"\n              on:input={handleInput} />\n            <small class=\"error-message\">\n              Path must start with / and be valid URLs\n            </small>\n          </div>\n          <div>\n\n            <select bind:value={staticRule[1]} class=\"field-select\">\n              {#each pages as page}\n                <option value={page}>\n                   {page.substr(1).replace('index.html', 'Home Page')}\n                </option>\n              {/each}\n            </select>\n          </div>\n\n          <button\n            type=\"submit\"\n            disabled={!canAdd}\n            class=\"button add\"\n            on:click={addStaticRule}>\n            +\n          </button>\n        </form>\n\n      </div>\n\n    </div>\n  </div>\n  <div class=\"added-pages\">\n    <p class=\"section-description\">Rules</p>\n    <form on:submit={handleSubmit} class=\"configuration-form\">\n      {#if $store.staticRules.length}\n        <div class=\"grid grid-with-actions fields-headers\">\n          <div>\n            <Label>WordPress Path</Label>\n          </div>\n          <div>\n            <Label>Webflow Page</Label>\n          </div>\n          <div style=\"visibility:hidden\">\n            <button disabled class=\"button add\">+</button>\n          </div>\n        </div>\n        <div class=\"fields-wrapper\">\n          {#each $store.staticRules as staticRule, index}\n            <div class=\"input-wrapper\">\n              <div class=\"grid grid-with-actions\">\n                <div>\n                  <input\n                    class=\"field-input\"\n                    type=\"text\"\n                    bind:value={staticRule[0]}\n                    readonly\n                    disabled\n                    on:input={handleInput} />\n                </div>\n                <div>\n                  <select bind:value={staticRule[1]} class=\"field-select\" disabled>\n                    {#each pages as page}\n                      <option value={page}>\n                         {page.substr(1).replace('index.html', 'Home Page')}\n                      </option>\n                    {/each}\n                  </select>\n                </div>\n                <a\n                  class=\"button remove\"\n                  on:click={() => removeStaticRule(index)}>\n                  X\n                </a>\n\n              </div>\n            </div>\n          {/each}\n        </div>\n      {:else}\n        <div class=\"no-pages-added\">\n          <p>No rules added</p>\n        </div>\n      {/if}\n    </form>\n  </div>\n</div>\n",
    38     "<script>\n  import { store } from \"../store/wfData\";\n  import Submit from \"./Submit.svelte\";\n  import Label from \"./Label.svelte\";\n  import { writable } from \"svelte/store\";\n\n  const hasItems = $store.dynamicRules.length > 0;\n\n  const firstCollection = $store.collections[0];\n\n  let dynamicRule = [\"\", \"\"];\n  if ($store.collections.length) {\n    dynamicRule = [``, `/${$store.collections[0].slug}/`];\n  }\n\n  let canAdd = false;\n\n  const handleSubmit = async e => {\n    e.preventDefault();\n\n    await store.saveDynamicRules($store.dynamicRules);\n  };\n\n  const addDynamicRule = e => {\n    canAdd = false;\n    e.preventDefault();\n    document.activeElement.blur();\n    if (!dynamicRule || !dynamicRule[0]) {\n      canAdd = false;\n      return;\n    }\n    store.addDynamicRule(dynamicRule);\n    dynamicRule = [``, ``];\n    store.saveDynamicRules($store.dynamicRules);\n  };\n\n  const removeDynamicRule = index => {\n    store.removeDynamicRule(index);\n    store.saveDynamicRules($store.dynamicRules);\n  };\n\n  const handleInput = e => {\n    let value = e.target.value;\n    e.target.value = encodeURI(decodeURI(value)); // little sanitification\n    let isAdd = e.target.getAttribute(\"data-add\");\n    value = e.target.value;\n    const match = value.match(/\\/.*?\\/\\*/g);\n    if (match && match[0] === value) {\n      e.target.setCustomValidity(\"\");\n      if (isAdd) {\n        canAdd = true;\n      }\n    } else {\n      e.target.setCustomValidity(\"Invalid field.\");\n      if (isAdd) {\n        canAdd = false;\n      }\n    }\n  };\n</script>\n\n<style>\n  \n  .headers h3 {\n    margin: 0;\n    height: 10%;\n     margin-bottom: 6px;\n  }\n  .form-wrapper {\n    display: flex;\n    flex-direction: column;\n    height: auto;\n    padding: 0px 10px;\n    border-radius: 4px;\n    margin-bottom: 10px;\n  }\n\n  .form-wrapper.new-page {\n    background-color: #f7f8f9;\n  }\n\n  form.configuration-form {\n    border-radius: 4px;\n    height: calc(100% - 32px);\n    width: 100%;\n    display: inline-flex;\n\n    flex-direction: column;\n  }\n  \n  .section-description {\n    font-size: 12px;\n    font-weight: bold;\n  }\n  .no-collections {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    flex: 1;\n    width: 100%;\n    background-color: #f7f7f7;\n    border: 1px solid #f7f7f7;\n    min-height: 90px;\n  }\n  .no-collections p {\n    font-size: 14px;\n    font-weight: 700;\n  }\n  .added-pages {\n    flex: 1;\n    display: inline-flex;\n    flex-direction: column;\n  }\n  .added-pages .fields-wrapper,\n  .added-pages .fields-headers {\n    padding: 0 10px;\n    background-color: #f7f8f9;\n  }\n\n  :global(.fields-wrapper) {\n    flex: 1;\n    overflow: auto;\n    max-height: calc(50px * 5);\n  }\ne\n:global(.fields-wrapper::-webkit-scrollbar){\n\twidth: 3px;\n\tbackground-color: #F5F5F5;\n}\n\n:global(.fields-wrapper::-webkit-scrollbar-thumb){\n\tbackground-color: #a1a1a1;\n}\n</style>\n\n<div class=\"wrapper\">\n  <div\n    style=\"display: flex; flex-direction: column; justify-content: space-evenly;\">\n    <div class=\"headers\">\n      <h3>Collection Pages</h3>\n    </div>\n    <div class=\"form-wrapper new-page\">\n      <p class=\"section-description\">Create a new Rule</p>\n      {#if $store.collections.length > 0}\n        <div class=\"grid grid-with-actions\">\n          <div>\n            <Label>WordPress Path</Label>\n          </div>\n          <div>\n            <Label>Webflow Page</Label>\n          </div>\n          <div style=\"visibility:hidden\">\n            <button disabled class=\"button add\">+</button>\n          </div>\n        </div>\n        <div class=\"input-wrapper\">\n          <form on:submit={addDynamicRule} class=\"grid grid-with-actions\">\n\n            <div>\n\n              <input\n                data-add=\"true\"\n                class=\"field-input\"\n                type=\"text\"\n                bind:value={dynamicRule[0]}\n                required\n                placeholder=\"/path/*\"\n                on:input={handleInput} />\n              <small class=\"error-message\">\n                Path must start with / and be valid URLs and end with /*\n              </small>\n            </div>\n            <div>\n\n              <select bind:value={dynamicRule[1]} class=\"field-select\">\n                {#each $store.collections as collection}\n                  <option value={'/' + collection.slug + '/'}>\n                    /{collection.slug}/*\n                  </option>\n                {/each}\n              </select>\n            </div>\n\n            <button\n              type=\"submit\"\n              disabled={!canAdd}\n              class=\"button add\"\n              on:click={addDynamicRule}>\n              +\n            </button>\n          </form>\n        </div>\n      {:else}\n        <div class=\"no-collections\">\n          <p>No collections</p>\n        </div>\n      {/if}\n    </div>\n  </div>\n  <div class=\"added-pages\">\n    <p class=\"section-description\">Rules</p>\n    <form on:submit={handleSubmit} class=\"configuration-form\">\n      {#if $store.dynamicRules.length}\n        <div class=\"grid grid-with-actions fields-headers\">\n          <div>\n            <Label>WordPress Path</Label>\n          </div>\n          <div>\n            <Label>Webflow Page</Label>\n          </div>\n          <div style=\"visibility:hidden\">\n            <button disabled class=\"button add\">+</button>\n          </div>\n        </div>\n        <div class=\"fields-wrapper\">\n          {#each $store.dynamicRules as dynamicRule, index}\n            <div class=\"input-wrapper\">\n              <div class=\"grid grid-with-actions\">\n                <div>\n                  <input\n                    class=\"field-input\"\n                    type=\"text\"\n                    bind:value={dynamicRule[0]}\n                    required\n                    disabled\n                    on:input={handleInput}\n                    readonly />\n\n                </div>\n                <div>\n                  <select\n                    bind:value={dynamicRule[1]}\n                    class=\"field-select\"\n                    disabled>\n                    {#each $store.collections as collection}\n                      <option value={'/' + collection.slug + '/'}>\n                        /{collection.slug}/*\n                      </option>\n                    {/each}\n                  </select>\n                </div>\n\n                <a\n                  class=\"button remove\"\n                  on:click={() => removeDynamicRule(index)}>\n                  X\n                </a>\n\n              </div>\n            </div>\n          {/each}\n        </div>\n      {:else}\n        <div class=\"no-collections\">\n          <p>No rules added</p>\n        </div>\n      {/if}\n    </form>\n  </div>\n\n</div>\n",
    39     "<script>\n  import { store } from \"../store/wfData\";\n  import { writable } from \"svelte/store\";\n  import Submit from \"./Submit.svelte\";\n  import { fade } from 'svelte/transition';\n\n  const removeTokenStore = writable({\n    disabled: false,\n    value: \"Reset\"\n  });\n\n  const modalStore = writable({\n    open: false\n  })\n\n  const handleRemoveToken = async e => {\n    e.preventDefault();\n    const res = await modalResponse();\n    if (!res) {\n      return;\n    }\n    removeTokenStore.set({ disabled: true, value: \"Wait...\" });\n    await store.removeToken();\n    removeTokenStore.set({ disabled: false, value: \"Reset\" });\n  };\n\n\n\n  const closeModal = e => {\n    e.preventDefault();\n    document.body.dispatchEvent(new CustomEvent('webflow-modal-remove-token', {detail: false}));\n  }\n\n  const acceptModal = e => {\n    e.preventDefault();\n    document.body.dispatchEvent(new CustomEvent('webflow-modal-remove-token', {detail: true}));\n  }\n\n  const modalResponse = () => {\n    return new Promise( res => {\n      modalStore.set({open: true});\n      document.body.addEventListener('webflow-modal-remove-token', e => {\n        modalStore.set({open: false})\n        res(e.detail);\n      }, {once: true});\n    })\n  }\n\n</script>\n\n<style>\n  .modal-wrapper {\n    position: fixed;\n    top: 0;\n    left: 0;\n    background-color: rgba(0, 0, 0, 0.7);\n    z-index: 99999999;\n    width: 100vw;\n    height: 100vh;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n  }\n  .modal {\n    background-color: white;\n    height: 30vh;\n    width: 30vw;\n    display: grid;\n    grid-template-rows: auto 1fr;\n  }\n  .modal-header {\n    display: flex;\n    padding: 20px 15px;\n    justify-content: space-between;\n    font-weight: 700;\n    font-size: 16px;\n    border-bottom: 1px solid #f7f7f7;\n  }\n  .modal-header a {\n    color: black;\n    text-decoration: none;\n  }\n  .modal-content {\n    background-color: #f5f5f5;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    align-items: center;\n  }\n  .modal-button {\n    display: inline-block;\n    padding: 9px 15px;\n    color: white;\n    border: 0;\n    line-height: inherit;\n    text-decoration: none;\n    cursor: pointer;\n    border-radius: 4px;\n  }\n  .modal-button.red {\n    width: auto;\n    height: auto;\n    padding-right: 28px;\n    padding-left: 28px;\n    background-color: #FF6382;\n    font-weight: 500;\n  }\n\n  .modal-button.red:hover {\n    background-color: #FF6382;\n  }\n\n  .modal-button.grey{\n    width: auto;\n    height: auto;\n    padding-right: 28px;\n    padding-left: 28px;\n    background-color: #d2d4d5;\n    font-weight: 500;\n  }\n\n  .modal-button.grey:hover {\n    background-color: #d2d4d5;\n  }\n</style>\n\n<h4>Remove Website</h4>\n<p class=\"description-subtitle\">Disconnect your Webflow project from your WordPress site.</p>\n<form on:submit={handleRemoveToken}>\n  <Submit\n    value={$removeTokenStore.value}\n    disabled={$removeTokenStore.disabled}\n    variation=\"red\" />\n</form>\n\n{#if $modalStore.open}\n<div class=\"modal-wrapper\">\n  <div class=\"modal\" transition:fade>\n    <div class=\"modal-header\">\n      <div>Do you want to remove all the Webflow Pages?</div>\n      <a on:click={closeModal}>X</a>\n    </div>\n    <div class=\"modal-content\">\n    <p>Are you sure you want to remove all your Webflow Settings?</p>\n        <div class=\"modal-actions\">\n          <button class=\"modal-button grey\" on:click={closeModal}>Cancel</button>\n          <button class=\"modal-button red\" on:click={acceptModal}>Confirm</button>\n        </div>\n    </div>\n  </div>\n</div>\n{/if}",
    40     "<script>\n  import { store } from \"../store/wfData\";\n  import { writable } from \"svelte/store\";\n  import Submit from \"./Submit.svelte\";\n\n  const localStore = writable({\n    disabled: false,\n    value: \"Save\"\n  });\n\n  let val = $store.cacheDuration;\n\n  const options = [\n    {\n      value: \"0\",\n      name: \"As long as possible\"\n    },\n    {\n      value: \"60\",\n      name: \"1 minute\"\n    },\n    {\n      value: 60 * 5 + \"\",\n      name: \"5 minutes\"\n    },\n    {\n      value: 60 * 15 + \"\",\n      name: \"15 minutes\"\n    },\n    {\n      value: 60 * 60 + \"\",\n      name: \"1 hour\"\n    },\n    {\n      value: 60 * 60 * 24 + \"\",\n      name: \"1 day\"\n    }\n  ];\n\n  const handleSubmit = async e => {\n    e.preventDefault();\n    localStore.set({ disabled: true, value: \"Wait...\" });\n    await store.changeCache(val);\n    localStore.set({ disabled: false, value: \"Save\" });\n  };\n</script>\n<style>\nform {\ndisplay: grid;\n    grid-gap: 8px;\n    justify-content: center;\n    align-items: center;\n    grid-template-columns: 1fr 1fr;\n}\nselect {\n  background-color: #f7f8f9;\n}\n\n</style>\n<h4>Cache Duration</h4>\n<p class=\"description-subtitle\">Define how long your site caches your Webflow pages. Cached pages load faster.</p>\n<form on:submit={handleSubmit} >\n  <select class=\"field-select\" bind:value={val}>\n    {#each options as option}\n      <option value={option.value}> {option.name} </option>\n    {/each}\n  </select>\n  <Submit\n    value={$localStore.value}\n    disabled={$localStore.disabled}\n    variation=\"small\"\n   />\n</form>\n",
    41     "<script>\n  import {store} from '../store/wfData';\n\n</script>\n\n<style>\n  img {\n    max-width: 100%;\n    height: auto;\n  }\n  a {box-shadow: none}\n</style>\n\n<div>\n  <a href={$store.site.dashboardUrl} target=\"_blank\">\n    <img src={$store.site.previewUrl} alt=\"site preview\" />\n    <h3>{$store.site.name}</h3>\n  </a>\n</div>\n",
    42     "<style>\n  div.navbar-light {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-flex: 1;\n    -webkit-flex: 1;\n    -ms-flex: 1;\n    flex: 1;\n    flex-grow: 1;\n    justify-self: flex-start;\n    align-self: flex-start;\n    padding-left: 10px;\n    margin-bottom: -1px;\n  }\n</style>\n\n<div class=\"navbar-light\">\n  <slot />\n</div>\n"
     26    "<script>\r\n\timport Route from './components/Route.svelte';\r\n\timport LoginPage from './pages/Login.svelte';\r\n\timport ConfigurationPage from './pages/Configuration.svelte';\r\n\timport UtilsPage from './pages/Utils.svelte';\r\n\timport Notifications from './components/Notifications.svelte';\r\n\timport {store} from './store/wfData';\r\n\timport Footer from './components/Footer.svelte';\r\n\r\n</script>\r\n<!-- \"Routes\" of the dashboard -->\r\n<Route path=\"/login\" component={LoginPage}></Route>\r\n<Route path=\"/configuration\" component={ConfigurationPage}></Route>\r\n<Route path=\"/settings\" component={UtilsPage}></Route>\r\n\r\n<Notifications></Notifications>\r\n<Footer></Footer>\r\n\r\n<style>\r\n:global(#wpcontent) {\r\n\tpadding-left: 0;\r\n}\r\n:global(#webflow-dashboard-root) {\r\n\theight: 100%;\r\n\tdisplay: flex;\r\n\tmin-height: calc(100vh - 32px - 65px); /* 32 px is the admin bar , 65 px is the padding bottom*/\r\n}\r\n</style>",
     27    "<script>\r\n    import {notifications} from '../store/notifications';\r\n    import { fade } from 'svelte/transition';\r\n   \r\n</script>\r\n<style>\r\ndiv {\r\n    position: fixed;\r\n    bottom: 40px;\r\n    left: 55%;\r\n    padding: 8px 100px;\r\n    transform: translateX(-50%);\r\n}\r\np {\r\n    margin: 0;\r\n    color: white;\r\n    font-size: 14px;\r\n    text-align: center;\r\n}\r\n</style>\r\n{#if $notifications.currentNotification}\r\n<div transition:fade style={$notifications.currentNotification.type == \"success\" ? \"background-color: #38D996\" : \"background-color:  #FF6382\"}>\r\n    <p>{$notifications.currentNotification.message}</p>\r\n</div>\r\n{/if}",
     28    "<style>\r\n.footer {\r\n    position: absolute;\r\n    bottom: 12px;\r\n    width: 100%;\r\n    text-align: center;\r\n}\r\na {\r\n    color: #4253ff;\r\n}\r\n</style>\r\n\r\n<div class=\"footer\">\r\n    <a href=\"https://university.webflow.com/\" target=\"_blank\" rel=\"nofollow\">Need support?</a>\r\n</div>",
     29    "<script>\r\n  import { store } from \"../store/wfData\";\r\n  import Container from \"../components/Container.svelte\";\r\n\r\n  import Submit from \"../components/Submit.svelte\";\r\n  import Label from \"../components/Label.svelte\";\r\n  import { writable } from \"svelte/store\";\r\n  import Logo from \"../components/Logo.svelte\";\r\n\r\n  const loginStore = writable({\r\n    disabled: false,\r\n    value: \"Add Webflow API Key\"\r\n  });\r\n\r\n  let token = \"\";\r\n\r\n  const handleSubmit = async e => {\r\n    e.preventDefault();\r\n    loginStore.set({ disabled: true, value: \"Saving...\" });\r\n    await store.saveToken(token);\r\n    loginStore.set({ disabled: false, value: \"Add Webflow API Key\" });\r\n  };\r\n</script>\r\n\r\n<style>\r\n  .login-wrapper {\r\n    background-color: white;\r\n    padding: 40px;\r\n    border-radius: 4px;\r\n    border: 1px solid #f7f7f7;\r\n    width: 450px;\r\n    text-align: center;\r\n  }\r\n  form {\r\n    max-width: 500px;\r\n    margin: auto;\r\n  }\r\n  p {\r\n    text-align: center;\r\n    margin: 0;\r\n    margin-bottom: 30px;\r\n    font-size: 14px;\r\n  }\r\n  a {\r\n    color: black;\r\n    text-align: center;\r\n    outline: 0;\r\n    box-shadow: none;\r\n  }\r\n  input.field-input {\r\n    margin-bottom: 10px;\r\n    background-color: #f7f8f9;\r\n  }\r\n\r\n  .warning-notice {\r\n    background-color: #f7f8f9;\r\n    padding: 20px;\r\n    border-radius: 4px;\r\n    margin-top: 20px;\r\n  }\r\n</style>\r\n\r\n<Container>\r\n  <div class=\"login-wrapper\">\r\n    <Logo />\r\n    <b>Congratulations on installing the Webflow Wordpress plugin!</b>\r\n    <p>\r\n      You can find your site's API key by going to the <a href=\"https://webflow.com/dashboard?utm_source=wpplugin\" target=\"_blank\" rel=\"nofollow\">Webflow Dashboard</a>.\r\n    <br />Be sure to generate a <a href=\"https://developers.webflow.com/data/reference/site-token?utm_source=iterable&utm_medium=email&utm_campaign=developerdeprecationv1sitetoken\">V2 Token</a> with at least Sites and CMS read only permissions.\r\n    </p>\r\n    <form on:submit={handleSubmit}>\r\n\r\n      <input\r\n        class=\"field-input\"\r\n        bind:value={token}\r\n        type=\"password\"\r\n        name=\"api_keys\"\r\n        autocomplete=\"off\"\r\n        placeholder=\"Your Api Key...\"\r\n        required />\r\n      <Submit value={$loginStore.value} disabled={$loginStore.disabled} />\r\n    </form>\r\n\r\n    <div class=\"warning-notice\">\r\n      This version of the plugin is not compatible with Webflow Ecommerce. Please contact <a href=\"https://university.webflow.com/contact\" target=\"_blank\" rel=\"nofollow\">Webflow Support</a> for any help with the plugin.\r\n    </div>\r\n  </div>\r\n</Container>\r\n",
     30    "<script>\r\n  import { store } from \"../store/wfData\";\r\n  import Container from \"../components/ConfigurationContainer.svelte\";\r\n  import StaticRules from \"../components/StaticRules.svelte\";\r\n  import Link from \"../components/Link.svelte\";\r\n  import CollectionRules from \"../components/CollectionRules.svelte\";\r\n\r\n  //store.removeToken();\r\n</script>\r\n\r\n<style>\r\n  div.spacer {\r\n    height: 100px;\r\n  }\r\n  :global(form:invalid input[type=\"submit\"]) {\r\n    opacity: 0.7;\r\n    cursor: not-allowed;\r\n  }\r\n\r\n  :global(input.field-input) {\r\n    height: 50px;\r\n    padding: 11px 16px;\r\n    background-color: white;\r\n    display: block;\r\n    width: 100%;\r\n    height: 38px;\r\n    padding: 8px 12px;\r\n    font-size: 14px;\r\n    line-height: 1.42857143;\r\n    color: #333333;\r\n    border: 1px solid transparent;\r\n    box-shadow: none;\r\n  }\r\n  :global(input.field-input:focus) {\r\n    border-color: #3898ec;\r\n    outline: 0;\r\n    box-shadow: none;\r\n  }\r\n  :global(input.field-input:read-only:focus) {\r\n    outline: 0;\r\n    box-shadow: none;\r\n  }\r\n\r\n  :global(select.field-select[disabled]) {\r\n    -webkit-appearance: none;\r\n    box-shadow: none;\r\n    height: 50px;\r\n    padding-right: 16px;\r\n    padding-left: 16px;\r\n    border: 1px none #000!important;\r\n    border-radius: 0px;\r\n\r\n    background-color: white!important;\r\n    display: block;\r\n    width: 100%;\r\n    height: 38px;\r\n    padding: 8px 12px;\r\n\r\n    font-size: 14px;\r\n    line-height: 1.42857143;\r\n    color: #000;\r\n  }\r\n\r\n  :global(#wpbody-content) {\r\n    float: none;\r\n    padding-bottom: 0;\r\n  }\r\n\r\n  :global(#wpfooter) {\r\n    display: none;\r\n  }\r\n  :global(.main-content .wrapper) {\r\n    display: flex;\r\n    flex-direction: column;\r\n    height: 100%;\r\n    overflow: hidden;\r\n  }\r\n\r\n  :global(small.error-message) {\r\n    display: none;\r\n    position: absolute;\r\n    bottom: 2px;\r\n  }\r\n  :global(.wp-core-ui .button-disabled, .wp-core-ui\r\n      .button-secondary.disabled, .wp-core-ui\r\n      .button-secondary:disabled, .wp-core-ui\r\n      .button-secondary[disabled], .wp-core-ui .button.disabled, .wp-core-ui\r\n      .button:disabled, .wp-core-ui .button[disabled]) {\r\n    background-color: #c5c5c5 !important;\r\n    color: white !important;\r\n    box-shadow: none !important;\r\n    border: none !important;\r\n    text-shadow: none !important;\r\n    font-size: 14px;\r\n    width: 30px;\r\n    height: 30px;\r\n    vertical-align: middle;\r\n    padding: 0;\r\n    margin: 0;\r\n  }\r\n  :global(input.field-input:invalid:focus) {\r\n    border: 1px solid red;\r\n  }\r\n  :global(input.field-input:focus:invalid ~ small.error-message) {\r\n    display: block;\r\n  }\r\n\r\n  :global(div.input-wrapper) {\r\n    position: relative;\r\n    padding-bottom: 22px;\r\n  }\r\n\r\n  :global(select.field-select) {\r\n    box-shadow: none;\r\n    height: 50px;\r\n    padding-right: 16px;\r\n    padding-left: 16px;\r\n    border: 1px none #000;\r\n    border-radius: 0px;\r\n\r\n    background-color: white;\r\n    display: block;\r\n    width: 100%;\r\n    height: 38px;\r\n    padding: 8px 12px;\r\n\r\n    font-size: 14px;\r\n    line-height: 1.42857143;\r\n    color: #000;\r\n  }\r\n\r\n  :global(.grid) {\r\n    display: grid;\r\n    grid-gap: 8px;\r\n    align-items: center;\r\n    grid-auto-columns: auto;\r\n  }\r\n  :global(.grid.grid-with-actions) {\r\n    grid-template-columns: 1fr 1fr auto;\r\n  }\r\n  :global(.grid.grid-two) {\r\n    grid-template-columns: 1fr 1fr;\r\n  }\r\n\r\n  :global(.button) {\r\n    margin-right: 16px;\r\n    padding-top: 6px;\r\n    padding-bottom: 6px;\r\n    padding-right: 24px;\r\n    padding-left: 24px;\r\n    font-size: 15px;\r\n    line-height: 16px;\r\n    height: auto;\r\n    font-weight: 500;\r\n    text-decoration: none;\r\n    display: inline-block;\r\n    border-radius: 4px;\r\n  }\r\n\r\n  :global(.button.primary) {\r\n    background-color: #4353ff;\r\n    -webkit-transition-property: none;\r\n    transition-property: none;\r\n    color: #fff;\r\n    border-radius: 4px !important;\r\n  }\r\n  :global(.button.primary:hover) {\r\n    background-color: #3545ee;\r\n    color: #fff;\r\n  }\r\n  :global(.button.remove) {\r\n    background-color: #ff6382;\r\n    border: none;\r\n    border-radius: 50%;\r\n    color: #fff;\r\n    font-size: 10px;\r\n    height: 30px;\r\n    width: 30px;\r\n    box-shadow: none;\r\n    padding: 0;\r\n        line-height: 30px;\r\n        text-align: center;\r\n\r\n  }\r\n  :global(.button.remove:hover) {\r\n    background-color: #ff6382;\r\n    color: #fff;\r\n  }\r\n  :global(.button.add) {\r\n    background-color: #38d996;\r\n    border: none;\r\n    border-radius: 50%;\r\n    color: #fff;\r\n    font-size: 10px!important;\r\n    width: 30px;\r\n    height: 30px;\r\n    box-shadow: none;\r\n  }\r\n  :global(.button.add:hover) {\r\n    background-color: #38d996;\r\n    color: #fff;\r\n  }\r\n  :global(p.description-subtitle) {\r\n        color: #999999;\r\n    font-size: 12px;\r\n  }\r\n</style>\r\n\r\n<Container>\r\n  <StaticRules />\r\n  <CollectionRules />\r\n</Container>\r\n",
     31    "<script>\r\n  import Container from \"../components/ConfigurationContainer.svelte\";\r\n  import Navigation from \"../components/Navigation.svelte\";\r\n  import RemoveTokenAction from \"../components/RemoveTokenAction.svelte\";\r\n  import InvalidateCacheAction from \"../components/InvalidateCacheAction.svelte\";\r\n  import PreloadCacheAction from \"../components/PreloadCacheAction.svelte\";\r\n  import ChangeCacheAction from \"../components/ChangeCacheAction.svelte\";\r\n\r\n  import Site from \"../components/Site.svelte\";\r\n  import RemoveTokenAndDataAction from \"../components/RemoveTokenAndDataAction.svelte\";\r\n</script>\r\n\r\n<style>\r\n  .actions-container {\r\n    display: flex;\r\n    height: 100%;\r\n    flex-direction: column;\r\n    overflow: auto;\r\n    overflow: auto;\r\n    justify-content: space-evenly;\r\n  }\r\n  hr {\r\n    border-color: #f7f7f7;\r\n    margin: 10px;\r\n  }\r\n  .site-container {\r\n    display: flex;\r\n    height: 100%;\r\n    overflow: auto;\r\n    justify-content: center;\r\n    align-items: center;\r\n  }\r\n  .actions-container p {\r\n    margin: 0;\r\n    line-height: 1;\r\n  }\r\n  :global(.actions-container h4) {\r\n    margin: 0;\r\n  }\r\n</style>\r\n\r\n<Container>\r\n  <div class=\"actions-container\">\r\n    <p>These advanced settings control how your site loads your Webflow pages. <br />For the most part, you shouldn't need to mess with them.</p>\r\n    <ChangeCacheAction />\r\n    <hr />\r\n    <InvalidateCacheAction />\r\n    <hr />\r\n    <PreloadCacheAction />\r\n    <hr />\r\n    <RemoveTokenAction />\r\n    <hr />\r\n    <RemoveTokenAndDataAction />\r\n  </div>\r\n  <div class=\"site-container\">\r\n    <Site />\r\n  </div>\r\n</Container>\r\n",
     32    "<style>\r\ndiv {\r\n    width: 100%;\r\n    max-width: 90%;\r\n    margin-right: auto;\r\n    margin-left: auto;\r\n    position: relative;\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n}\r\n</style>\r\n\r\n<div>\r\n    <slot></slot>\r\n</div>",
     33    "<script>\r\n  export let value = \"Submit\";\r\n  export let disabled = false;\r\n  export let variation = null;\r\n</script>\r\n\r\n<style>\r\n  input[type=\"submit\"] {\r\n    -webkit-appearance: button;\r\n  }\r\n\r\n  input[type=\"submit\"] {\r\n    display: inline-block;\r\n    padding: 9px 15px;\r\n    color: white;\r\n    border: 0;\r\n    line-height: inherit;\r\n    text-decoration: none;\r\n    cursor: pointer;\r\n    border-radius: 4px;\r\n  }\r\n\r\n  .form_submit-button {\r\n    width: 100%;\r\n    height: 50px;\r\n    padding-right: 28px;\r\n    padding-left: 28px;\r\n    background-color: #4353ff;\r\n    font-weight: 500;\r\n  }\r\n\r\n  .form_submit-button:hover {\r\n    background-color: #3545ee;\r\n  }\r\n  .form_submit-button:disabled {\r\n    opacity: 0.7;\r\n    cursor: not-allowed;\r\n  }\r\n  .form_submit-button[variation=\"small\"] {\r\n    width: 150px;\r\n    height: auto;\r\n  }\r\n\r\n  .form_submit-button[variation=\"black\"] {\r\n    width: auto;\r\n    height: auto;\r\n    padding-right: 28px;\r\n    padding-left: 28px;\r\n    background-color: #333;\r\n    font-weight: 500;\r\n  }\r\n\r\n  .form_submit-button[variation=\"black\"]:hover {\r\n    background-color: #000;\r\n  }\r\n\r\n  .form_submit-button[variation=\"red\"] {\r\n    width: auto;\r\n    height: auto;\r\n    padding-right: 28px;\r\n    padding-left: 28px;\r\n    background-color: #ff6382;\r\n    font-weight: 500;\r\n  }\r\n\r\n  .form_submit-button[variation=\"red\"]:hover {\r\n    background-color: #ff6382;\r\n  }\r\n\r\n  .form_submit-button[variation=\"grey\"] {\r\n    width: auto;\r\n    height: auto;\r\n    padding-right: 28px;\r\n    padding-left: 28px;\r\n    background-color: #d2d4d5;\r\n    font-weight: 500;\r\n  }\r\n\r\n  .form_submit-button[variation=\"grey\"]:hover {\r\n    background-color: #d2d4d5;\r\n  }\r\n</style>\r\n\r\n<input\r\n  type=\"submit\"\r\n  {value}\r\n  class=\"form_submit-button\"\r\n  {variation}\r\n  {disabled} />\r\n",
     34    "<style>\r\ndiv {\r\n    text-align: center;\r\n    padding: 20px;\r\n}\r\nimg {\r\n    max-width: 200px;\r\n    margin: auto;\r\n}\r\n</style>\r\n<div>\r\n<img\r\n  src=\"data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgdmlld0JveD0iMCAwIDE2NzUuMiAyMjEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDE2NzUuMiAyMjE7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQoJLnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiMxNDZFRjU7fQ0KCS5zdDF7ZmlsbDojMDgwODA4O30NCgkuc3Qye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6IzA4MDgwODt9DQoJLnN0M3tmaWxsOiMxNDZFRjU7fQ0KPC9zdHlsZT4NCjxnPg0KCTxnPg0KCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMzA1LjEsMy40bC05My41LDE4Mi44aC04Ny44bDM5LjEtNzUuN2gtMS44Yy0zMi4zLDQxLjktODAuNCw2OS41LTE0OS4xLDc1Ljd2LTc0LjdjMCwwLDQzLjktMi42LDY5LjctMjkuNw0KCQkJSDEyLjFWMy40aDc4LjN2NjQuNGwxLjgsMGwzMi02NC40aDU5LjJ2NjRsMS44LDBsMzMuMi02NEgzMDUuMXoiLz4NCgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTgxNC45LDE2NmgyNS4yVjIxLjFoLTI1LjJWMTY2eiIvPg0KCQk8cGF0aCBjbGFzcz0ic3QyIiBkPSJNNjc1LjksMTY0LjVjNS41LDIuMywxMS4xLDMuNCwxNi43LDMuNGM5LjQsMCwxNy43LTIuMywyNS4xLTYuOGM3LjQtNC42LDEzLjEtMTAuOCwxNy4yLTE4LjkNCgkJCWM0LjEtOC4xLDYuMS0xNy4yLDYuMS0yNy40cy0yLjEtMTkuNC02LjMtMjcuNGMtNC4yLTguMS0xMC0xNC4zLTE3LjUtMTguOGMtNy41LTQuNS0xNS45LTYuNy0yNS40LTYuN2MtNiwwLTExLjgsMS4yLTE3LjQsMy41DQoJCQljLTUuNSwyLjMtMTAuMiw1LjctMTMuOSwxMGMtMC4zLDAuMy0wLjYsMC43LTAuOCwxVjIxLjJoLTI1LjNWMTY2aDI1LjFsLTAuMS0xMy41YzAuNywwLjgsMS4zLDEuNiwyLjEsMi4zDQoJCQlDNjY1LjYsMTU4LjksNjcwLjQsMTYyLjEsNjc1LjksMTY0LjV6IE03MDEuNywxNDEuMWMtNC4xLDIuNS04LjgsMy44LTE0LjEsMy44Yy01LjIsMC0xMC0xLjMtMTQuNC0zLjkNCgkJCWMtNC40LTIuNi03LjktNi4zLTEwLjQtMTAuOGMtMi41LTQuNi0zLjgtOS43LTMuOC0xNS41Yy0wLjEtNS44LDEuMi0xMSwzLjctMTUuNWMyLjYtNC42LDYuMS04LjIsMTAuNC0xMC43DQoJCQljNC40LTIuNiw5LjItMy45LDE0LjUtMy44YzUuMy0wLjEsMTAsMS4yLDE0LjEsMy43YzQuMiwyLjUsNy40LDYsOS42LDEwLjZjMi4zLDQuNiwzLjQsOS44LDMuNCwxNS43YzAsNS45LTEuMSwxMS4yLTMuNCwxNS43DQoJCQlDNzA5LjEsMTM0LjksNzA1LjksMTM4LjUsNzAxLjcsMTQxLjF6Ii8+DQoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0zNDEuNywyOS45aDI4LjhsMjUuOCw5NC4ybDI3LjQtOTQuMmgyNGwyOS44LDkyLjNsMjQuOC05Mi4zaDI2LjRsLTM5LDEzNmgtMjQuOWwtMzAuMy05MC4yTDQwNi44LDE2NmgtMjUuMQ0KCQkJTDM0MS43LDI5Ljl6Ii8+DQoJCTxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik01NzEuMywxNjguNGMtMTAsMC4xLTE5LjEtMi4yLTI3LjItNi43Yy04LTQuNi0xNC4zLTEwLjktMTguOS0xOC45Yy00LjYtOC4xLTYuOC0xNy4zLTYuOC0yNy42DQoJCQljMC0xMCwyLjMtMTkuMSw3LTI3LjNjNC43LTguMSwxMS0xNC41LDE5LTE5YzgtNC42LDE2LjktNi44LDI2LjgtNi44YzExLjEsMCwyMC44LDIuNSwyOS4xLDcuNGM4LjQsNC45LDE0LjYsMTEuOSwxOC44LDIxDQoJCQljNC4yLDksNS43LDE5LjMsNC41LDMxaC03OS4yYzAuMiw0LjYsMS40LDguOSwzLjUsMTIuN2MyLjMsNC4yLDUuNiw3LjUsOS44LDkuOGM0LjIsMi4zLDguOSwzLjUsMTQsMy41YzMuOS0wLjEsNy42LTAuNywxMS0yDQoJCQljMy40LTEuNCw2LjMtMy4yLDguNi01LjVjMi40LTIuMyw0LjEtNC45LDUuMS03LjhoMjYuNGMtMS42LDcuMS00LjgsMTMuNC05LjYsMTguOWMtNC44LDUuNS0xMC44LDkuOC0xOC4xLDEyLjgNCgkJCUM1ODcuOSwxNjYuOSw1ODAsMTY4LjQsNTcxLjMsMTY4LjR6IE01NDgsOTUuOWMtMS41LDIuNi0yLjUsNS4zLTMuMSw4LjNoNTIuNWMtMC40LTMuOC0xLjUtNy4yLTMuNS0xMC4zDQoJCQljLTIuMi0zLjYtNS4yLTYuNC05LjEtOC40Yy0zLjgtMi04LjEtMy0xMi45LTNjLTUuMSwwLTkuOCwxLjItMTQsMy41QzU1My44LDg4LjQsNTUwLjUsOTEuNiw1NDgsOTUuOXoiLz4NCgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTc1OS42LDY0LjFjMC04LjMsMS45LTE1LjYsNS42LTIyYzMuOC02LjUsOS0xMS41LDE1LjgtMTUuMWM2LjgtMy42LDE0LjgtNS41LDIzLjktNS42djIyLjUNCgkJCWMtNC4zLDAuMS03LjksMS0xMC45LDIuN2MtMywxLjctNS4yLDQuMS02LjgsNy4zYy0xLjUsMi45LTIuMyw2LjQtMi40LDEwLjNoMTkuNnYyMS4zaC0xOS42VjE2NmgtMjUuMlY4NS41aC0xNi4zVjY0LjFINzU5LjZ6Ii8+DQoJCTxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05MDQuMywxNjguMmMtMTAuMywwLTE5LjUtMi4yLTI3LjYtNi43Yy04LjEtNC42LTE0LjQtMTAuOC0xOS0xOC45Yy00LjYtOC4xLTYuOC0xNy4yLTYuOC0yNy40DQoJCQljMC0xMC4zLDIuMy0xOS41LDYuOC0yNy41YzQuNi04LjEsMTEtMTQuNCwxOS0xOC45YzguMS00LjUsMTcuMy02LjcsMjcuNi02LjdjMTAuNCwwLDE5LjYsMi4yLDI3LjcsNi43DQoJCQljOC4yLDQuNSwxNC42LDEwLjgsMTkuMSwxOC45YzQuNiw4LjEsNi45LDE3LjMsNi45LDI3LjZjLTAuMSwxMC4yLTIuNCwxOS40LTYuOSwyNy40Yy00LjUsOC0xMC44LDE0LjMtMTksMTguOQ0KCQkJQzkyMy45LDE2NS45LDkxNC43LDE2OC4yLDkwNC4zLDE2OC4yeiBNOTA0LjMsMTQ1YzUuNCwwLDEwLjItMS4yLDE0LjQtMy43YzQuMi0yLjUsNy40LTYsOS43LTEwLjVjMi4zLTQuNiwzLjQtOS44LDMuNC0xNS42DQoJCQljMC01LjktMS4xLTExLjItMy40LTE1LjdjLTIuMy00LjYtNS41LTguMS05LjctMTAuNWMtNC4yLTIuNS05LTMuOC0xNC40LTMuOGMtNS40LDAtMTAuMSwxLjMtMTQuMywzLjhjLTQuMSwyLjUtNy4zLDYtOS42LDEwLjUNCgkJCWMtMi4zLDQuNi0zLjQsOS44LTMuMywxNS43YzAsNS45LDEuMSwxMS4xLDMuNCwxNS42YzIuMyw0LjUsNS41LDgsOS42LDEwLjVDODk0LjIsMTQzLjcsODk5LDE0NSw5MDQuMywxNDV6Ii8+DQoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik05ODUuNCw2NC4xaC0yOC4xTDk4Ny43LDE2NmgyNC42bDIwLTY1bDIxLjYsNjVoMjQuMmwzMC41LTEwMS44aC0yNS40bC0xNy4zLDYzLjRsLTE5LjEtNjMuNGgtMjQuNmwtMTksNjQuOA0KCQkJTDk4NS40LDY0LjF6Ii8+DQoJPC9nPg0KCTxnPg0KCQk8cGF0aCBjbGFzcz0ic3QzIiBkPSJNMTE0NC43LDE2Ny42VjMwLjNoNDljMTMuOCwwLDI1LDQuMSwzMy43LDEyLjNjOC42LDguMiwxMywxOC44LDEzLDMxLjdjMCwxMy4xLTQuMywyMy43LTEzLDMyDQoJCQljLTguNiw4LjMtMTkuOCwxMi40LTMzLjUsMTIuNGgtMjcuMnY0OC45SDExNDQuN3ogTTExNjYuNiw5OWgyNS4yYzcuNiwwLDEzLjctMi4zLDE4LjQtNi44YzQuNy00LjUsNy0xMC40LDctMTcuNg0KCQkJYzAuMS03LjItMi4zLTEzLjEtNy0xNy41Yy00LjctNC41LTEwLjktNi43LTE4LjYtNi43aC0yNVY5OXoiLz4NCgkJPHBhdGggY2xhc3M9InN0MyIgZD0iTTEyOTMuMiwxNjkuN2MtMTQuNiwwLTI2LjUtNS0zNS44LTE1LjFjLTkuMy0xMC0xNC0yMi45LTEzLjktMzguNWMwLTEwLjMsMi4xLTE5LjUsNi40LTI3LjYNCgkJCWM0LjMtOC4xLDEwLjItMTQuNSwxNy44LTE5YzcuNi00LjUsMTYuMi02LjgsMjUuOS02LjhjNi44LTAuMSwxMy4zLDEuMywxOS41LDQuMXMxMS4xLDYuNiwxNC45LDExLjRWNjVoMjEuMnYxMDIuNmgtMjEuMQ0KCQkJbDAuMS0xNC4yYy00LjIsNS05LjUsOS0xNS44LDExLjlDMTMwNi4xLDE2OC4yLDEyOTkuNywxNjkuNywxMjkzLjIsMTY5Ljd6IE0xMjczLjksOTEuMWMtNS42LDYuNC04LjQsMTQuNy04LjQsMjUNCgkJCWMwLDEwLjMsMi44LDE4LjcsOC40LDI1YzUuNiw2LjQsMTMsOS42LDIyLjIsOS42YzkuMSwwLDE2LjktMy4yLDIzLjMtOS43YzYuNC02LjUsOS42LTE0LjgsOS43LTI0LjljMC0xMC4xLTMuMi0xOC40LTkuNi0yNC45DQoJCQljLTYuNC02LjUtMTQuMi05LjctMjMuNC05LjdDMTI4Ni45LDgxLjUsMTI3OS41LDg0LjcsMTI3My45LDkxLjF6Ii8+DQoJCTxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik0xNDE4LjcsMjEyLjFjLTEzLjIsMC0yNC41LTMuMy0zNC05LjhjLTkuNS02LjUtMTUuMS0xNC45LTE2LjgtMjVoMjMuOGMxLjcsNS4xLDUuMSw5LjEsMTAsMTIuMQ0KCQkJYzQuOSwzLDEwLjgsNC40LDE3LjYsNC40YzguMSwwLDE0LjUtMi4xLDE5LjEtNi40YzQuNi00LjMsNi45LTEwLjMsNi44LTE4LjF2LTE1LjZjLTQuMiw1LTkuNSw5LTE1LjcsMTEuOA0KCQkJYy02LjIsMi44LTEyLjgsNC4yLTE5LjksNC4yYy05LjQsMC0xNy44LTIuMy0yNS4yLTYuOWMtNy40LTQuNi0xMy4yLTEwLjktMTcuMy0xOS4xYy00LjEtOC4yLTYuMi0xNy40LTYuMi0yNy44DQoJCQljMC0xMC4yLDIuMi0xOS40LDYuNi0yNy42YzQuNC04LjIsMTAuMy0xNC41LDE3LjgtMTguOWM3LjUtNC40LDE1LjgtNi43LDI0LjktNi43YzctMC4xLDEzLjUsMS4zLDE5LjUsNC4yDQoJCQljNiwyLjgsMTEuMSw3LDE1LjMsMTIuNFY2NWgyMXYxMDQuMWMwLDEzLjMtNC4yLDIzLjgtMTIuNywzMS41QzE0NDQuOSwyMDguMywxNDMzLjMsMjEyLjEsMTQxOC43LDIxMi4xeiBNMTM4MywxMTYuMQ0KCQkJYzAsOS44LDMsMTgsOC45LDI0LjhjNS45LDYuNywxMy4xLDEwLjEsMjEuNiwxMC4xYzguOCwwLDE2LjUtMy40LDIyLjktMTAuMmM2LjQtNi44LDkuNy0xNSw5LjctMjQuN3MtMy4yLTE3LjktOS42LTI0LjcNCgkJCWMtNi40LTYuNy0xNC0xMC4xLTIyLjctMTAuMWMtOC42LDAtMTUuOSwzLjMtMjEuOSwxMEMxMzg2LDk4LjEsMTM4MywxMDYuMywxMzgzLDExNi4xeiIvPg0KCQk8cGF0aCBjbGFzcz0ic3QzIiBkPSJNMTUzMS4yLDE3MC4yYy0xMC4xLDAtMTkuMy0yLjItMjcuMy02LjdjLTguMS00LjUtMTQuNC0xMC44LTE5LTE5cy02LjktMTcuNS02LjktMjhjMC03LjUsMS40LTE0LjYsNC4yLTIxLjMNCgkJCWMyLjgtNi43LDYuNi0xMi4zLDExLjMtMTcuMWM0LjctNC43LDEwLjQtOC41LDE2LjktMTEuMmM2LjUtMi43LDEzLjUtNC4xLDIwLjgtNC4xYzE2LjYsMC4xLDI5LjksNS42LDM5LjgsMTYuNg0KCQkJYzkuOSwxMSwxNCwyNS4yLDEyLjQsNDIuNUgxNTAwYzAuNCw4LjgsMy42LDE2LDkuNSwyMS42YzUuOSw1LjYsMTMuMiw4LjQsMjEuOCw4LjNjNy0wLjEsMTMuMS0xLjgsMTguMy01LjENCgkJCWM1LjItMy4zLDguNy03LjcsMTAuNS0xMy4xaDIyLjNjLTIuNiwxMC45LTguNSwxOS44LTE3LjgsMjYuNEMxNTU1LjQsMTY2LjgsMTU0NC4yLDE3MC4yLDE1MzEuMiwxNzAuMnogTTE1MDAuNiwxMDYuMmg2MC41DQoJCQljLTAuNy03LjUtMy45LTEzLjUtOS4zLTE4LjJjLTUuNS00LjctMTIuMi03LTIwLjItNy4xYy03LjcsMC0xNC40LDIuMy0yMC4yLDdDMTUwNS42LDkyLjUsMTUwMiw5OC42LDE1MDAuNiwxMDYuMnoiLz4NCgkJPHBhdGggY2xhc3M9InN0MyIgZD0iTTE2NDYuMSw5NS44Yy0wLjctNC43LTIuNi04LjUtNS43LTExLjRjLTMuMS0yLjktNi44LTQuNC0xMS4xLTQuM2MtMy43LDAuMS02LjgsMS4zLTkuMywzLjcNCgkJCWMtMi41LDIuNC0zLjcsNS4zLTMuNyw4LjhjMCw1LjcsMy44LDkuNiwxMS41LDExLjlsMTQuMSw0YzE3LjQsNC45LDI2LjEsMTUsMjUuOSwzMC4yYy0wLjEsOC44LTMuNSwxNi4xLTEwLjIsMjEuOQ0KCQkJYy02LjcsNS44LTE1LjIsOC42LTI1LjQsOC42Yy0xMS40LTAuMS0yMC45LTMuMS0yOC4zLTkuMWMtNy40LTYtMTEuNi0xNC0xMi43LTIzLjloMjEuMmMwLjksNC44LDMuMSw4LjcsNi42LDExLjYNCgkJCXM3LjksNC40LDEzLjEsNC4zYzQuNC0wLjEsNy45LTEuMSwxMC41LTMuMmMyLjctMi4xLDQtNC44LDMuOS04LjJjLTAuMS02LjMtMy44LTEwLjYtMTAuOS0xMi44bC0xMy41LTMuOQ0KCQkJYy05LjItMi43LTE2LTYuNC0yMC40LTExLjJjLTQuNC00LjgtNi42LTEwLjktNi43LTE4LjJjLTAuMS05LDMuMi0xNi41LDkuOS0yMi41YzYuNy02LjEsMTUuMS05LjEsMjUuNC05LjINCgkJCWMxMC4zLDAsMTguOCwzLDI1LjQsOC45YzYuNiw1LjksMTAuNCwxMy45LDExLjMsMjMuOEgxNjQ2LjF6Ii8+DQoJPC9nPg0KPC9nPg0KPC9zdmc+DQo=\r\n\"\r\n  alt=\"logo\" />\r\n</div>",
     35    "<script>\r\n  export let forHtml = \"\";\r\n</script>\r\n\r\n<style>\r\n  .field_label {\r\n    margin-top: 6px;\r\n    margin-bottom: 6px;\r\n    color: #999999;\r\n    font-size: 12px;\r\n    line-height: 18px;\r\n    font-weight: bold;\r\n    display: block;\r\n  }\r\n</style>\r\n\r\n<label class=\"field_label\" for={forHtml}>\r\n  <slot />\r\n</label>\r\n",
     36    "<script>\r\n  import { router } from \"../store/router\";\r\n  import { isCurrentPath } from \"../store/router\";\r\n\r\n  export let path;\r\n  export let params = {};\r\n\r\n  export let text = \"\";\r\n\r\n  const handleClick = e => {\r\n    e.preventDefault();\r\n    router.goTo(path, params);\r\n  };\r\n\r\n  const isActive = isCurrentPath(path);\r\n \r\n</script>\r\n\r\n<style>\r\n  a {\r\n    height: 36px;\r\n    margin-bottom: 0px;\r\n    margin-right: 10px;\r\n    padding-left: 10px;\r\n    padding-right: 10px;\r\n    -webkit-box-flex: 0;\r\n    -webkit-flex: 0 0 auto;\r\n    -ms-flex: 0 0 auto;\r\n    flex: 0 0 auto;\r\n    -webkit-transition: color 200ms ease-in-out;\r\n    transition: color 200ms ease-in-out;\r\n    color: #888;\r\n    font-size: 15px;\r\n    line-height: 37px;\r\n    font-weight: 500;\r\n    text-decoration: none;\r\n    border-bottom: 2px solid transparent;\r\n  }\r\n  a:hover {\r\n    color: #000;\r\n  }\r\n  a.is-active {\r\n    color: #000;\r\n    border-bottom: 2px solid #000;\r\n  }\r\n  a:focus {\r\n    outline: none;\r\n    box-shadow: none;\r\n  }\r\n</style>\r\n\r\n<a href=\"/\" on:click={handleClick} class={$isActive ? 'is-active' : ''}>\r\n  {text}\r\n</a>\r\n",
     37    "<script>\r\n  import { store } from \"../store/wfData\";\r\n  import Submit from \"./Submit.svelte\";\r\n  import Label from \"./Label.svelte\";\r\n  import { writable } from \"svelte/store\";\r\n\r\n  const hasItems = $store.dynamicRules.length > 0;\r\n\r\n  const firstCollection = $store.collections[0];\r\n\r\n  let dynamicRule = [\"\", \"\"];\r\n  if ($store.collections.length) {\r\n    dynamicRule = [``, `/${$store.collections[0].slug}/`];\r\n  }\r\n\r\n  let canAdd = false;\r\n\r\n  const handleSubmit = async e => {\r\n    e.preventDefault();\r\n\r\n    await store.saveDynamicRules($store.dynamicRules);\r\n  };\r\n\r\n  const addDynamicRule = e => {\r\n    canAdd = false;\r\n    e.preventDefault();\r\n    document.activeElement.blur();\r\n    if (!dynamicRule || !dynamicRule[0]) {\r\n      canAdd = false;\r\n      return;\r\n    }\r\n    store.addDynamicRule(dynamicRule);\r\n    dynamicRule = [``, ``];\r\n    store.saveDynamicRules($store.dynamicRules);\r\n  };\r\n\r\n  const removeDynamicRule = index => {\r\n    store.removeDynamicRule(index);\r\n    store.saveDynamicRules($store.dynamicRules);\r\n  };\r\n\r\n  const handleInput = e => {\r\n    let value = e.target.value;\r\n    e.target.value = encodeURI(decodeURI(value)); // little sanitification\r\n    let isAdd = e.target.getAttribute(\"data-add\");\r\n    value = e.target.value;\r\n    const match = value.match(/\\/.*?\\/\\*/g);\r\n    if (match && match[0] === value) {\r\n      e.target.setCustomValidity(\"\");\r\n      if (isAdd) {\r\n        canAdd = true;\r\n      }\r\n    } else {\r\n      e.target.setCustomValidity(\"Invalid field.\");\r\n      if (isAdd) {\r\n        canAdd = false;\r\n      }\r\n    }\r\n  };\r\n</script>\r\n\r\n<style>\r\n  \r\n  .headers h3 {\r\n    margin: 0;\r\n    height: 10%;\r\n     margin-bottom: 6px;\r\n  }\r\n  .form-wrapper {\r\n    display: flex;\r\n    flex-direction: column;\r\n    height: auto;\r\n    padding: 0px 10px;\r\n    border-radius: 4px;\r\n    margin-bottom: 10px;\r\n  }\r\n\r\n  .form-wrapper.new-page {\r\n    background-color: #f7f8f9;\r\n  }\r\n\r\n  form.configuration-form {\r\n    border-radius: 4px;\r\n    height: calc(100% - 32px);\r\n    width: 100%;\r\n    display: inline-flex;\r\n\r\n    flex-direction: column;\r\n  }\r\n  \r\n  .section-description {\r\n    font-size: 12px;\r\n    font-weight: bold;\r\n  }\r\n  .no-collections {\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n    flex: 1;\r\n    width: 100%;\r\n    background-color: #f7f7f7;\r\n    border: 1px solid #f7f7f7;\r\n    min-height: 90px;\r\n  }\r\n  .no-collections p {\r\n    font-size: 14px;\r\n    font-weight: 700;\r\n  }\r\n  .added-pages {\r\n    flex: 1;\r\n    display: inline-flex;\r\n    flex-direction: column;\r\n  }\r\n  .added-pages .fields-wrapper,\r\n  .added-pages .fields-headers {\r\n    padding: 0 10px;\r\n    background-color: #f7f8f9;\r\n  }\r\n\r\n  :global(.fields-wrapper) {\r\n    flex: 1;\r\n    overflow: auto;\r\n    max-height: calc(50px * 5);\r\n  }\r\ne\r\n:global(.fields-wrapper::-webkit-scrollbar){\r\n\twidth: 3px;\r\n\tbackground-color: #F5F5F5;\r\n}\r\n\r\n:global(.fields-wrapper::-webkit-scrollbar-thumb){\r\n\tbackground-color: #a1a1a1;\r\n}\r\n</style>\r\n\r\n<div class=\"wrapper\">\r\n  <div\r\n    style=\"display: flex; flex-direction: column; justify-content: space-evenly;\">\r\n    <div class=\"headers\">\r\n      <h3>Collection Pages</h3>\r\n    </div>\r\n    <div class=\"form-wrapper new-page\">\r\n      <p class=\"section-description\">Create a new Rule</p>\r\n      {#if $store.collections.length > 0}\r\n        <div class=\"grid grid-with-actions\">\r\n          <div>\r\n            <Label>WordPress Path</Label>\r\n          </div>\r\n          <div>\r\n            <Label>Webflow Page</Label>\r\n          </div>\r\n          <div style=\"visibility:hidden\">\r\n            <button disabled class=\"button add\">+</button>\r\n          </div>\r\n        </div>\r\n        <div class=\"input-wrapper\">\r\n          <form on:submit={addDynamicRule} class=\"grid grid-with-actions\">\r\n\r\n            <div>\r\n\r\n              <input\r\n                data-add=\"true\"\r\n                class=\"field-input\"\r\n                type=\"text\"\r\n                bind:value={dynamicRule[0]}\r\n                required\r\n                placeholder=\"/path/*\"\r\n                on:input={handleInput} />\r\n              <small class=\"error-message\">\r\n                Path must start with / and be valid URLs and end with /*\r\n              </small>\r\n            </div>\r\n            <div>\r\n\r\n              <select bind:value={dynamicRule[1]} class=\"field-select\">\r\n                {#each $store.collections as collection}\r\n                  <option value={'/' + collection.slug + '/'}>\r\n                    /{collection.slug}/*\r\n                  </option>\r\n                {/each}\r\n              </select>\r\n            </div>\r\n\r\n            <button\r\n              type=\"submit\"\r\n              disabled={!canAdd}\r\n              class=\"button add\"\r\n              on:click={addDynamicRule}>\r\n              +\r\n            </button>\r\n          </form>\r\n        </div>\r\n      {:else}\r\n        <div class=\"no-collections\">\r\n          <p>No collections</p>\r\n        </div>\r\n      {/if}\r\n    </div>\r\n  </div>\r\n  <div class=\"added-pages\">\r\n    <p class=\"section-description\">Rules</p>\r\n    <form on:submit={handleSubmit} class=\"configuration-form\">\r\n      {#if $store.dynamicRules.length}\r\n        <div class=\"grid grid-with-actions fields-headers\">\r\n          <div>\r\n            <Label>WordPress Path</Label>\r\n          </div>\r\n          <div>\r\n            <Label>Webflow Page</Label>\r\n          </div>\r\n          <div style=\"visibility:hidden\">\r\n            <button disabled class=\"button add\">+</button>\r\n          </div>\r\n        </div>\r\n        <div class=\"fields-wrapper\">\r\n          {#each $store.dynamicRules as dynamicRule, index}\r\n            <div class=\"input-wrapper\">\r\n              <div class=\"grid grid-with-actions\">\r\n                <div>\r\n                  <input\r\n                    class=\"field-input\"\r\n                    type=\"text\"\r\n                    bind:value={dynamicRule[0]}\r\n                    required\r\n                    disabled\r\n                    on:input={handleInput}\r\n                    readonly />\r\n\r\n                </div>\r\n                <div>\r\n                  <select\r\n                    bind:value={dynamicRule[1]}\r\n                    class=\"field-select\"\r\n                    disabled>\r\n                    {#each $store.collections as collection}\r\n                      <option value={'/' + collection.slug + '/'}>\r\n                        /{collection.slug}/*\r\n                      </option>\r\n                    {/each}\r\n                  </select>\r\n                </div>\r\n\r\n                <a\r\n                  class=\"button remove\"\r\n                  on:click={() => removeDynamicRule(index)}>\r\n                  X\r\n                </a>\r\n\r\n              </div>\r\n            </div>\r\n          {/each}\r\n        </div>\r\n      {:else}\r\n        <div class=\"no-collections\">\r\n          <p>No rules added</p>\r\n        </div>\r\n      {/if}\r\n    </form>\r\n  </div>\r\n\r\n</div>\r\n",
     38    "<script>\r\n  import { store } from \"../store/wfData\";\r\n  import Submit from \"./Submit.svelte\";\r\n  import Label from \"./Label.svelte\";\r\n  import { writable } from \"svelte/store\";\r\n  import { onMount } from \"svelte\";\r\n\r\n  const hasItems = $store.staticRules.length > 0;\r\n\r\n  let staticRule = [\"\", \"\"];\r\n\r\n  let canAdd = false;\r\n\r\n\r\n  const handleSubmit = async e => {\r\n    e.preventDefault();\r\n   \r\n    await store.saveStaticRules($store.staticRules);\r\n    \r\n  };\r\n\r\n  const addStaticRule = e => {\r\n    e.preventDefault();\r\n    document.activeElement.blur();\r\n    store.addStaticRule(staticRule);\r\n    staticRule = [\"\", \"\"];\r\n    canAdd = false;\r\n    store.saveStaticRules($store.staticRules);\r\n  };\r\n\r\n  const removeStaticRule = index => {\r\n    store.removeStaticRule(index);\r\n    store.saveStaticRules($store.staticRules);\r\n  };\r\n\r\n  const handleInput = ({ target }) => {\r\n    let value = target.value;\r\n    let isAdd = target.getAttribute(\"data-add\");\r\n    target.value = encodeURI(decodeURI(value)); // little sanitification\r\n    value = target.value;\r\n    const match = value.match(/^(\\.?){2}(\\/[a-zA-Z0-9_\\-]+)+\\/?$/g);\r\n    if (match && match[0] === value || value === \"/\") {\r\n      target.setCustomValidity(\"\");\r\n      if (isAdd) {\r\n        canAdd = true;\r\n      }\r\n    } else {\r\n      target.setCustomValidity(\"Invalid field.\");\r\n      if (isAdd) {\r\n        canAdd = false;\r\n      }\r\n    }\r\n  };\r\n\r\n  const pages = $store.pages.filter( page => page !== '/404' && page !== '/401' );\r\n</script>\r\n\r\n<style>\r\n  \r\n  .headers h3 {\r\n    margin: 0;\r\n    height: 10%;\r\n    margin-bottom: 6px;\r\n  }\r\n  .form-wrapper {\r\n    display: flex;\r\n    flex-direction: column;\r\n    height: auto;\r\n    padding: 0px 10px;\r\n    border-radius: 4px;\r\n    margin-bottom: 10px;\r\n  }\r\n\r\n  .form-wrapper.new-page {\r\n    background-color: #f7f8f9;\r\n  }\r\n\r\n  form.configuration-form {\r\n    border-radius: 4px;\r\n    height: calc(100% - 32px);\r\n    width: 100%;\r\n    display: inline-flex;\r\n\r\n    flex-direction: column;\r\n  }\r\n\r\n  .section-description {\r\n    font-size: 12px;\r\n    font-weight: bold;\r\n  }\r\n  .no-pages-added {\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n    flex: 1;\r\n    width: 100%;\r\n    background-color: #f7f7f7;\r\n    border: 1px solid #f7f7f7;\r\n  }\r\n  .no-pages-added p {\r\n    font-size: 14px;\r\n    font-weight: 700;\r\n  }\r\n  .added-pages {\r\n    flex: 1;\r\n    display: inline-flex;\r\n    flex-direction: column;\r\n  }\r\n  .added-pages .fields-wrapper, .added-pages .fields-headers{\r\n    padding: 0 10px;\r\n    background-color: #f7f8f9;\r\n  }\r\n</style>\r\n\r\n<div class=\"wrapper\">\r\n  <div style=\"display: flex; flex-direction: column; justify-content: space-evenly;\">\r\n    <div class=\"headers\">\r\n      <h3>Static Pages</h3>\r\n    \r\n    </div>\r\n    <div class=\"form-wrapper new-page\">\r\n    <p class=\"section-description\">Create a new redirect</p>\r\n      <p class=\"description-subtitle\">Create redirects to serve a made-in-Webflow page in place of a WordPress Page</p>\r\n      <div class=\"grid grid-with-actions \">\r\n        <div>\r\n          <Label>WordPress Path</Label>\r\n        </div>\r\n        <div>\r\n          <Label>Webflow Page</Label>\r\n        </div>\r\n        <div style=\"visibility:hidden\">\r\n          <button disabled class=\"button add\">+</button>\r\n        </div>\r\n      </div>\r\n      <div class=\"input-wrapper\">\r\n\r\n        <form on:submit={addStaticRule} class=\"grid grid-with-actions\">\r\n          <div>\r\n            <input\r\n              data-add=\"true\"\r\n              class=\"field-input\"\r\n              type=\"text\"\r\n              bind:value={staticRule[0]}\r\n              required\r\n              placeholder=\"/path\"\r\n              on:input={handleInput} />\r\n            <small class=\"error-message\">\r\n              Path must start with / and be valid URLs\r\n            </small>\r\n          </div>\r\n          <div>\r\n\r\n            <select bind:value={staticRule[1]} class=\"field-select\">\r\n              {#each pages as page}\r\n                <option value={page}>\r\n                   {page.substr(1).replace('index.html', 'Home Page')}\r\n                </option>\r\n              {/each}\r\n            </select>\r\n          </div>\r\n\r\n          <button\r\n            type=\"submit\"\r\n            disabled={!canAdd}\r\n            class=\"button add\"\r\n            on:click={addStaticRule}>\r\n            +\r\n          </button>\r\n        </form>\r\n\r\n      </div>\r\n\r\n    </div>\r\n  </div>\r\n  <div class=\"added-pages\">\r\n    <p class=\"section-description\">Rules</p>\r\n    <form on:submit={handleSubmit} class=\"configuration-form\">\r\n      {#if $store.staticRules.length}\r\n        <div class=\"grid grid-with-actions fields-headers\">\r\n          <div>\r\n            <Label>WordPress Path</Label>\r\n          </div>\r\n          <div>\r\n            <Label>Webflow Page</Label>\r\n          </div>\r\n          <div style=\"visibility:hidden\">\r\n            <button disabled class=\"button add\">+</button>\r\n          </div>\r\n        </div>\r\n        <div class=\"fields-wrapper\">\r\n          {#each $store.staticRules as staticRule, index}\r\n            <div class=\"input-wrapper\">\r\n              <div class=\"grid grid-with-actions\">\r\n                <div>\r\n                  <input\r\n                    class=\"field-input\"\r\n                    type=\"text\"\r\n                    bind:value={staticRule[0]}\r\n                    readonly\r\n                    disabled\r\n                    on:input={handleInput} />\r\n                </div>\r\n                <div>\r\n                  <select bind:value={staticRule[1]} class=\"field-select\" disabled>\r\n                    {#each pages as page}\r\n                      <option value={page}>\r\n                         {page.substr(1).replace('index.html', 'Home Page')}\r\n                      </option>\r\n                    {/each}\r\n                  </select>\r\n                </div>\r\n                <a\r\n                  class=\"button remove\"\r\n                  on:click={() => removeStaticRule(index)}>\r\n                  X\r\n                </a>\r\n\r\n              </div>\r\n            </div>\r\n          {/each}\r\n        </div>\r\n      {:else}\r\n        <div class=\"no-pages-added\">\r\n          <p>No rules added</p>\r\n        </div>\r\n      {/if}\r\n    </form>\r\n  </div>\r\n</div>\r\n",
     39    "<script>\r\n  import Logo from \"./Logo.svelte\";\r\n  import Navigation from \"./Navigation.svelte\";\r\n</script>\r\n\r\n<style>\r\n  div.configuration-container {\r\n    width: 100%;\r\n    margin-right: auto;\r\n    margin-left: auto;\r\n    position: relative;\r\n    \r\n    height: calc(100vh - 32px);\r\n    display: flex;\r\n    height: calc(100vh - 32px);\r\n    flex-direction: column;\r\n    justify-content: space-evenly;\r\n  }\r\n  .wrapper {\r\n    margin: 0 auto;\r\n    height: calc(100vh - 80px);\r\n    width: 80%;\r\n  }\r\n  .main-content {\r\n    background-color: white;\r\n    border: 1px solid #f7f7f7;\r\n    border-radius: 4px;\r\n    display: grid;\r\n    padding: 15px;\r\n    grid-template-columns: 1fr 1fr;\r\n    grid-gap: 16px;\r\n    height: 80%;\r\n    align-items: center;\r\n    justify-content: space-between;\r\n  }\r\n  @media screen and (max-width: 782px) {\r\n    .main-content {\r\n      grid-template-columns: 1fr;\r\n      height: auto;\r\n    }\r\n  }\r\n</style>\r\n\r\n<div class=\"configuration-container\">\r\n  <Logo />\r\n  <div class=\"wrapper\">\r\n    <Navigation />\r\n    <div class=\"main-content\">\r\n      <slot />\r\n    </div>\r\n  </div>\r\n</div>\r\n",
     40    "<script>\r\n  import { store } from \"../store/wfData\";\r\n  import { writable } from \"svelte/store\";\r\n  import Submit from \"./Submit.svelte\";\r\n  import { fade } from 'svelte/transition';\r\n\r\n  const removeTokenStore = writable({\r\n    disabled: false,\r\n    value: \"Remove site\"\r\n  });\r\n\r\n  const modalStore = writable({\r\n    open: false\r\n  })\r\n\r\n  const handleRemoveToken = async e => {\r\n    e.preventDefault();\r\n    const res = await modalResponse();\r\n    if (!res) {\r\n      return;\r\n    }\r\n    removeTokenStore.set({ disabled: true, value: \"Wait...\" });\r\n    await store.removeToken();\r\n    removeTokenStore.set({ disabled: false, value: \"Remove site\" });\r\n  };\r\n\r\n\r\n\r\n  const closeModal = e => {\r\n    e.preventDefault();\r\n    document.body.dispatchEvent(new CustomEvent('webflow-modal-remove-token', {detail: false}));\r\n  }\r\n\r\n  const acceptModal = e => {\r\n    e.preventDefault();\r\n    document.body.dispatchEvent(new CustomEvent('webflow-modal-remove-token', {detail: true}));\r\n  }\r\n\r\n  const modalResponse = () => {\r\n    return new Promise( res => {\r\n      modalStore.set({open: true});\r\n      document.body.addEventListener('webflow-modal-remove-token', e => {\r\n        modalStore.set({open: false})\r\n        res(e.detail);\r\n      }, {once: true});\r\n    })\r\n  }\r\n\r\n</script>\r\n\r\n<style>\r\n  .modal-wrapper {\r\n    position: fixed;\r\n    top: 0;\r\n    left: 0;\r\n    background-color: rgba(0, 0, 0, 0.7);\r\n    z-index: 99999999;\r\n    width: 100vw;\r\n    height: 100vh;\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n  }\r\n  .modal {\r\n    background-color: white;\r\n    height: 30vh;\r\n    width: 30vw;\r\n    display: grid;\r\n    grid-template-rows: auto 1fr;\r\n  }\r\n  .modal-header {\r\n    display: flex;\r\n    padding: 20px 15px;\r\n    justify-content: space-between;\r\n    font-weight: 700;\r\n    font-size: 16px;\r\n    border-bottom: 1px solid #f7f7f7;\r\n  }\r\n  .modal-header a {\r\n    color: black;\r\n    text-decoration: none;\r\n  }\r\n  .modal-content {\r\n    background-color: #f5f5f5;\r\n    display: flex;\r\n    flex-direction: column;\r\n    justify-content: center;\r\n    align-items: center;\r\n  }\r\n  .modal-button {\r\n    display: inline-block;\r\n    padding: 9px 15px;\r\n    color: white;\r\n    border: 0;\r\n    line-height: inherit;\r\n    text-decoration: none;\r\n    cursor: pointer;\r\n    border-radius: 4px;\r\n  }\r\n  .modal-button.red {\r\n    width: auto;\r\n    height: auto;\r\n    padding-right: 28px;\r\n    padding-left: 28px;\r\n    background-color: #FF6382;\r\n    font-weight: 500;\r\n  }\r\n\r\n  .modal-button.red:hover {\r\n    background-color: #FF6382;\r\n  }\r\n\r\n  .modal-button.grey{\r\n    width: auto;\r\n    height: auto;\r\n    padding-right: 28px;\r\n    padding-left: 28px;\r\n    background-color: #d2d4d5;\r\n    font-weight: 500;\r\n  }\r\n\r\n  .modal-button.grey:hover {\r\n    background-color: #d2d4d5;\r\n  }\r\n</style>\r\n\r\n<h4>Remove Website</h4>\r\n<p class=\"description-subtitle\">Disconnect your Webflow project from your WordPress site.</p>\r\n<form on:submit={handleRemoveToken}>\r\n  <Submit\r\n    value={$removeTokenStore.value}\r\n    disabled={$removeTokenStore.disabled}\r\n    variation=\"red\" />\r\n</form>\r\n\r\n{#if $modalStore.open}\r\n<div class=\"modal-wrapper\">\r\n  <div class=\"modal\" transition:fade>\r\n    <div class=\"modal-header\">\r\n      <div>Do you want to remove all the Webflow Pages?</div>\r\n      <a on:click={closeModal}>X</a>\r\n    </div>\r\n    <div class=\"modal-content\">\r\n    <p>Are you sure you want to remove all your Webflow Settings?</p>\r\n        <div class=\"modal-actions\">\r\n          <button class=\"modal-button grey\" on:click={closeModal}>Cancel</button>\r\n          <button class=\"modal-button red\" on:click={acceptModal}>Confirm</button>\r\n        </div>\r\n    </div>\r\n  </div>\r\n</div>\r\n{/if}",
     41    "<script>\r\n  import {store} from '../store/wfData';\r\n\r\n</script>\r\n\r\n<style>\r\n  img {\r\n    max-width: 100%;\r\n    height: auto;\r\n  }\r\n  a {box-shadow: none}\r\n</style>\r\n\r\n<div>\r\n  <a href={$store.site.dashboardUrl} target=\"_blank\">\r\n    <img src={$store.site.previewUrl} alt=\"site preview\" />\r\n    <h3>{$store.site.name}</h3>\r\n  </a>\r\n</div>\r\n",
     42    "<script>\r\n  import { store } from \"../store/wfData\";\r\n  import { writable } from \"svelte/store\";\r\n  import Submit from \"./Submit.svelte\";\r\n  import { fade } from 'svelte/transition';\r\n\r\n  const removeTokenStore = writable({\r\n    disabled: false,\r\n    value: \"Remove site and data\"\r\n  });\r\n\r\n  const modalStore = writable({\r\n    open: false\r\n  })\r\n\r\n  const handleRemoveToken = async e => {\r\n    e.preventDefault();\r\n    const res = await modalResponse();\r\n    if (!res) {\r\n      return;\r\n    }\r\n    removeTokenStore.set({ disabled: true, value: \"Wait...\" });\r\n    await store.removeTokenAndData();\r\n    removeTokenStore.set({ disabled: false, value: \"Remove site and data\" });\r\n  };\r\n\r\n\r\n\r\n  const closeModal = e => {\r\n    e.preventDefault();\r\n    document.body.dispatchEvent(new CustomEvent('webflow-modal-remove-token-data', {detail: false}));\r\n  }\r\n\r\n  const acceptModal = e => {\r\n    e.preventDefault();\r\n    document.body.dispatchEvent(new CustomEvent('webflow-modal-remove-token-data', {detail: true}));\r\n  }\r\n\r\n  const modalResponse = () => {\r\n    return new Promise( res => {\r\n      modalStore.set({open: true});\r\n      document.body.addEventListener('webflow-modal-remove-token-data', e => {\r\n        modalStore.set({open: false})\r\n        res(e.detail);\r\n      }, {once: true});\r\n    })\r\n  }\r\n\r\n</script>\r\n\r\n<style>\r\n  .modal-wrapper {\r\n    position: fixed;\r\n    top: 0;\r\n    left: 0;\r\n    background-color: rgba(0, 0, 0, 0.7);\r\n    z-index: 99999999;\r\n    width: 100vw;\r\n    height: 100vh;\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n  }\r\n  .modal {\r\n    background-color: white;\r\n    height: 30vh;\r\n    width: 30vw;\r\n    display: grid;\r\n    grid-template-rows: auto 1fr;\r\n  }\r\n  .modal-header {\r\n    display: flex;\r\n    padding: 20px 15px;\r\n    justify-content: space-between;\r\n    font-weight: 700;\r\n    font-size: 16px;\r\n    border-bottom: 1px solid #f7f7f7;\r\n  }\r\n  .modal-header a {\r\n    color: black;\r\n    text-decoration: none;\r\n  }\r\n  .modal-content {\r\n    background-color: #f5f5f5;\r\n    display: flex;\r\n    flex-direction: column;\r\n    justify-content: center;\r\n    align-items: center;\r\n  }\r\n  .modal-button {\r\n    display: inline-block;\r\n    padding: 9px 15px;\r\n    color: white;\r\n    border: 0;\r\n    line-height: inherit;\r\n    text-decoration: none;\r\n    cursor: pointer;\r\n    border-radius: 4px;\r\n  }\r\n  .modal-button.red {\r\n    width: auto;\r\n    height: auto;\r\n    padding-right: 28px;\r\n    padding-left: 28px;\r\n    background-color: #FF6382;\r\n    font-weight: 500;\r\n  }\r\n\r\n  .modal-button.red:hover {\r\n    background-color: #FF6382;\r\n  }\r\n\r\n  .modal-button.grey{\r\n    width: auto;\r\n    height: auto;\r\n    padding-right: 28px;\r\n    padding-left: 28px;\r\n    background-color: #d2d4d5;\r\n    font-weight: 500;\r\n  }\r\n\r\n  .modal-button.grey:hover {\r\n    background-color: #d2d4d5;\r\n  }\r\n</style>\r\n\r\n<h4>Remove Website and Data</h4>\r\n<p class=\"description-subtitle\">Disconnect your Webflow project from your WordPress site and remove saved pages settings.</p>\r\n<form on:submit={handleRemoveToken}>\r\n  <Submit\r\n    value={$removeTokenStore.value}\r\n    disabled={$removeTokenStore.disabled}\r\n    variation=\"red\" />\r\n</form>\r\n\r\n{#if $modalStore.open}\r\n<div class=\"modal-wrapper\">\r\n  <div class=\"modal\" transition:fade>\r\n    <div class=\"modal-header\">\r\n      <div>Do you want to remove all the Webflow Pages?</div>\r\n      <a on:click={closeModal}>X</a>\r\n    </div>\r\n    <div class=\"modal-content\">\r\n    <p>Are you sure you want to remove all your Webflow Settings?</p>\r\n        <div class=\"modal-actions\">\r\n          <button class=\"modal-button grey\" on:click={closeModal}>Cancel</button>\r\n          <button class=\"modal-button red\" on:click={acceptModal}>Confirm</button>\r\n        </div>\r\n    </div>\r\n  </div>\r\n</div>\r\n{/if}",
     43    "<script>\r\n  import { store } from \"../store/wfData\";\r\n  import { writable } from \"svelte/store\";\r\n  import Submit from \"./Submit.svelte\";\r\n\r\n  const localStore = writable({\r\n    disabled: false,\r\n    value: \"Save\"\r\n  });\r\n\r\n  let val = $store.cacheDuration;\r\n\r\n  const options = [\r\n    {\r\n      value: \"0\",\r\n      name: \"As long as possible\"\r\n    },\r\n    {\r\n      value: \"60\",\r\n      name: \"1 minute\"\r\n    },\r\n    {\r\n      value: 60 * 5 + \"\",\r\n      name: \"5 minutes\"\r\n    },\r\n    {\r\n      value: 60 * 15 + \"\",\r\n      name: \"15 minutes\"\r\n    },\r\n    {\r\n      value: 60 * 60 + \"\",\r\n      name: \"1 hour\"\r\n    },\r\n    {\r\n      value: 60 * 60 * 24 + \"\",\r\n      name: \"1 day\"\r\n    }\r\n  ];\r\n\r\n  const handleSubmit = async e => {\r\n    e.preventDefault();\r\n    localStore.set({ disabled: true, value: \"Wait...\" });\r\n    await store.changeCache(val);\r\n    localStore.set({ disabled: false, value: \"Save\" });\r\n  };\r\n</script>\r\n<style>\r\nform {\r\ndisplay: grid;\r\n    grid-gap: 8px;\r\n    justify-content: center;\r\n    align-items: center;\r\n    grid-template-columns: 1fr 1fr;\r\n}\r\nselect {\r\n  background-color: #f7f8f9;\r\n}\r\n\r\n</style>\r\n<h4>Cache Duration</h4>\r\n<p class=\"description-subtitle\">Define how long your site caches your Webflow pages. Cached pages load faster.</p>\r\n<form on:submit={handleSubmit} >\r\n  <select class=\"field-select\" bind:value={val}>\r\n    {#each options as option}\r\n      <option value={option.value}> {option.name} </option>\r\n    {/each}\r\n  </select>\r\n  <Submit\r\n    value={$localStore.value}\r\n    disabled={$localStore.disabled}\r\n    variation=\"small\"\r\n   />\r\n</form>\r\n",
     44    "<style>\r\n  div.navbar-light {\r\n    display: -webkit-box;\r\n    display: -webkit-flex;\r\n    display: -ms-flexbox;\r\n    display: flex;\r\n    -webkit-box-flex: 1;\r\n    -webkit-flex: 1;\r\n    -ms-flex: 1;\r\n    flex: 1;\r\n    flex-grow: 1;\r\n    justify-self: flex-start;\r\n    align-self: flex-start;\r\n    padding-left: 10px;\r\n    margin-bottom: -1px;\r\n  }\r\n</style>\r\n\r\n<div class=\"navbar-light\">\r\n  <slot />\r\n</div>\r\n"
    4345  ],
    4446  "names": [],
    45   "mappings": "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"
     47  "mappings": "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"
    4648}
  • webflow-pages/trunk/externals/dashboard/public/bundle.js

    r2494376 r3153929  
    1 !function(){"use strict";function e(){}const t=e=>e;function n(e,t){for(const n in t)e[n]=t[n];return e}function a(e){return e()}function s(){return Object.create(null)}function o(e){e.forEach(a)}function i(e){return"function"==typeof e}function c(e,t){return e!=e?t==t:e!==t||e&&"object"==typeof e||"function"==typeof e}function r(e,t,n){const a=t.subscribe(n);e.$$.on_destroy.push(a.unsubscribe?()=>a.unsubscribe():a)}function l(e,t,n){if(e){const a=u(e,t,n);return e[0](a)}}function u(e,t,a){return e[1]?n({},n(t.$$scope.ctx,e[1](a?a(t):{}))):t.$$scope.ctx}function d(e,t,a,s){return e[1]?n({},n(t.$$scope.changed||{},e[1](s?s(a):{}))):t.$$scope.changed||{}}const M="undefined"!=typeof window;let L=M?()=>window.performance.now():()=>Date.now(),m=M?requestAnimationFrame:e;const $=new Set;let p,f=!1;function g(){$.forEach(e=>{e[0](L())||($.delete(e),e[1]())}),(f=$.size>0)&&m(g)}function v(e,t){e.appendChild(t)}function y(e,t,n){e.insertBefore(t,n||null)}function N(e){e.parentNode.removeChild(e)}function w(e,t){for(let n=0;n<e.length;n+=1)e[n]&&e[n].d(t)}function j(e){return document.createElement(e)}function h(e){return document.createTextNode(e)}function T(){return h(" ")}function x(){return h("")}function C(e,t,n,a){return e.addEventListener(t,n,a),()=>e.removeEventListener(t,n,a)}function b(e,t,n){null==n?e.removeAttribute(t):e.setAttribute(t,n)}function S(e,t){t=""+t,e.data!==t&&(e.data=t)}function D(e,t,n){e.style.setProperty(t,n)}function z(e,t){for(let n=0;n<e.options.length;n+=1){const a=e.options[n];if(a.__value===t)return void(a.selected=!0)}}function E(e){const t=e.querySelector(":checked")||e.options[0];return t&&t.__value}let I,O=0,_={};function k(e,t,n,a,s,o,i,c=0){const r=16.666/a;let l="{\n";for(let e=0;e<=1;e+=r){const a=t+(n-t)*o(e);l+=100*e+`%{${i(a,1-a)}}\n`}const u=l+`100% {${i(n,1-n)}}\n}`,d=`__svelte_${function(e){let t=5381,n=e.length;for(;n--;)t=(t<<5)-t^e.charCodeAt(n);return t>>>0}(u)}_${c}`;if(!_[d]){if(!p){const e=j("style");document.head.appendChild(e),p=e.sheet}_[d]=!0,p.insertRule(`@keyframes ${d} ${u}`,p.cssRules.length)}const M=e.style.animation||"";return e.style.animation=`${M?`${M}, `:""}${d} ${a}ms linear ${s}ms 1 both`,O+=1,d}function Y(e,t){e.style.animation=(e.style.animation||"").split(", ").filter(t?e=>e.indexOf(t)<0:e=>-1===e.indexOf("__svelte")).join(", "),t&&!--O&&m(()=>{if(O)return;let e=p.cssRules.length;for(;e--;)p.deleteRule(e);_={}})}function R(e){I=e}const A=[],U=Promise.resolve();let Q=!1;const W=[],P=[],H=[];function J(e){P.push(e)}function G(){const e=new Set;do{for(;A.length;){const e=A.shift();R(e),Z(e.$$)}for(;W.length;)W.shift()();for(;P.length;){const t=P.pop();e.has(t)||(t(),e.add(t))}}while(A.length);for(;H.length;)H.pop()();Q=!1}function Z(e){e.fragment&&(e.update(e.dirty),o(e.before_render),e.fragment.p(e.dirty,e.ctx),e.dirty=null,e.after_render.forEach(J))}let V,K;function F(e,t,n){e.dispatchEvent(function(e,t){const n=document.createEvent("CustomEvent");return n.initCustomEvent(e,!1,!1,t),n}(`${t?"intro":"outro"}${n}`))}function X(){K={remaining:0,callbacks:[]}}function B(){K.remaining||o(K.callbacks)}function q(e){K.callbacks.push(e)}function ee(n,a,s,i){let c=a(n,s),r=i?0:1,l=null,u=null,d=null;function M(){d&&Y(n,d)}function p(e,t){const n=e.b-r;return t*=Math.abs(n),{a:r,b:e.b,d:n,duration:t,start:e.start,end:e.start+t,group:e.group}}function v(a){const{delay:s=0,duration:i=300,easing:v=t,tick:y=e,css:N}=c,w={start:L()+s,b:a};a||(w.group=K,K.remaining+=1),l?u=w:(N&&(M(),d=k(n,r,a,i,s,v,N)),a&&y(0,1),l=p(w,i),J(()=>F(n,a,"start")),function(e){let t;f||(f=!0,m(g)),new Promise(n=>{$.add(t=[e,n])})}(e=>{if(u&&e>u.start&&(l=p(u,i),u=null,F(n,l.b,"start"),N&&(M(),d=k(n,r,l.b,l.duration,0,v,c.css))),l)if(e>=l.end)y(r=l.b,1-r),F(n,l.b,"end"),u||(l.b?M():--l.group.remaining||o(l.group.callbacks)),l=null;else if(e>=l.start){const t=e-l.start;r=l.a+l.d*v(t/l.duration),y(r,1-r)}return!(!l&&!u)}))}return{run(e){"function"==typeof c?(V||(V=Promise.resolve()).then(()=>{V=null}),V).then(()=>{c=c(),v(e)}):v(e)},end(){M(),l=u=null}}}function te(e,t,n){const{fragment:s,on_mount:c,on_destroy:r,after_render:l}=e.$$;s.m(t,n),J(()=>{const t=c.map(a).filter(i);r?r.push(...t):o(t),e.$$.on_mount=[]}),l.forEach(J)}function ne(e,t){e.$$.dirty||(A.push(e),Q||(Q=!0,U.then(G)),e.$$.dirty=s()),e.$$.dirty[t]=!0}function ae(t,n,a,i,c,r){const l=I;R(t);const u=n.props||{},d=t.$$={fragment:null,ctx:null,props:r,update:e,not_equal:c,bound:s(),on_mount:[],on_destroy:[],before_render:[],after_render:[],context:new Map(l?l.$$.context:[]),callbacks:s(),dirty:null};let M=!1;var L;d.ctx=a?a(t,u,(e,n)=>{d.ctx&&c(d.ctx[e],d.ctx[e]=n)&&(d.bound[e]&&d.bound[e](n),M&&ne(t,e))}):u,d.update(),M=!0,o(d.before_render),d.fragment=i(d.ctx),n.target&&(n.hydrate?d.fragment.l((L=n.target,Array.from(L.childNodes))):d.fragment.c(),n.intro&&t.$$.fragment.i&&t.$$.fragment.i(),te(t,n.target,n.anchor),G()),R(l)}class se{$destroy(){var t,n;n=!0,(t=this).$$&&(o(t.$$.on_destroy),t.$$.fragment.d(n),t.$$.on_destroy=t.$$.fragment=null,t.$$.ctx={}),this.$destroy=e}$on(e,t){const n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}$set(){}}function oe(t,n=e){let a;const s=[];function o(e){if(c(t,e)){if(t=e,!a)return;s.forEach(e=>e[1]()),s.forEach(e=>e[0](t))}}return{set:o,update:function(e){o(e(t))},subscribe:function(i,c=e){const r=[i,c];return s.push(r),1===s.length&&(a=n(o)||e),i(t),()=>{const e=s.indexOf(r);-1!==e&&s.splice(e,1),0===s.length&&a()}}}}function ie(t,n,a){const s=!Array.isArray(t),c=s?[t]:t,r=n.length<2;return{subscribe:oe(a,t=>{let a=!1;const l=[];let u=0,d=e;const M=()=>{if(u)return;d();const a=n(s?l[0]:l,t);r?t(a):d=i(a)?a:e},L=c.map((e,t)=>e.subscribe(e=>{l[t]=e,u&=~(1<<t),a&&M()},()=>{u|=1<<t}));return a=!0,M(),function(){o(L),d()}}).subscribe}}const ce=function(){const{subscribe:e,set:t}=oe({path:"/",params:{}});return{subscribe:e,goTo:(e,n={})=>t({path:e,params:n})}}(),re=e=>ie(ce,t=>t.path===e);function le(e){var t,n,a=e.component;if(a)var s=new a({});return{c(){s&&s.$$.fragment.c(),t=x()},m(e,a){s&&te(s,e,a),y(e,t,a),n=!0},p(e,n){if(a!==(a=n.component)){if(s){X();const e=s;q(()=>{e.$destroy()}),e.$$.fragment.o(1),B()}a?((s=new a({})).$$.fragment.c(),s.$$.fragment.i(1),te(s,t.parentNode,t)):s=null}},i(e){n||(s&&s.$$.fragment.i(e),n=!0)},o(e){s&&s.$$.fragment.o(e),n=!1},d(e){e&&N(t),s&&s.$destroy(e)}}}function ue(e){var t,n,a=e.$isActive&&le(e);return{c(){a&&a.c(),t=x()},m(e,s){a&&a.m(e,s),y(e,t,s),n=!0},p(e,n){n.$isActive?a?(a.p(e,n),a.i(1)):((a=le(n)).c(),a.i(1),a.m(t.parentNode,t)):a&&(X(),q(()=>{a.d(1),a=null}),a.o(1),B())},i(e){n||(a&&a.i(),n=!0)},o(e){a&&a.o(),n=!1},d(e){a&&a.d(e),e&&N(t)}}}function de(e,t,n){let a,{component:s,path:o}=t;const i=re(o);return r(e,i,e=>{n("$isActive",a=e)}),e.$set=(e=>{"component"in e&&n("component",s=e.component),"path"in e&&n("path",o=e.path)}),{component:s,path:o,isActive:i,$isActive:a}}class Me extends se{constructor(e){super(),ae(this,e,de,ue,c,["component","path"])}}function Le(e={}){const{action:t,nonce:n,nonceField:a,data:s,method:o,credentials:i,url:c}=e;if(!t)throw new TypeError("Cannot make ajax call without action");if(!n)throw new TypeError("Cannot make ajax call without nonce");if(s&&"object"!=typeof s)throw new TypeError("Data to send must be an object");if(!c&&!window.ajaxurl)throw new TypeError("Cannot make ajax call without url");let r=new FormData;if(r.append("action",t),r.append(a||"security",n),s)for(let e in s)r.append(e,s[e]);return fetch(c||window.ajaxurl,{method:o||"POST",body:r,credentials:i||"same-origin"})}const me=function(){const{subscribe:e,update:t}=oe({currentNotification:null});return{subscribe:e,addNotification:(e,n="success")=>{t(t=>(t.currentNotification={message:e,type:n},{...t})),setTimeout(()=>{t(e=>(e.currentNotification=null,{...e}))},5e3)}}}(),{hasToken:$e,nonce:pe,pages:fe,collections:ge,site:ve,staticRules:ye,dynamicRules:Ne,error:we,cacheDuration:je}=window._wfAjaxData;ve&&(ve.dashboardUrl=`https://webflow.com/dashboard/sites/${ve.shortName}/settings`),we?(ce.goTo("/login"),me.addNotification(we,"error")):"true"===$e?ce.goTo("/configuration"):ce.goTo("/login");const he=function(){const{subscribe:e,set:t,update:n}=oe({pages:fe||[],collections:ge||[],site:ve||void 0,staticRules:ye||[],dynamicRules:Ne||[],cacheDuration:je||0});return{subscribe:e,saveToken:async e=>{try{await Le({nonce:pe,data:{token:e},action:"save_wf_token"});const n=await Le({nonce:pe,action:"get_wf_site_data"});let a=await n.json();if(a.success)t({pages:a.data.pages||[],collections:a.data.collections||[],site:a.data.site,dynamicRules:[],staticRules:[]}),me.addNotification("Token Saved Successfully"),ce.goTo("/configuration");else{const e=a.data[0]||{code:"401",message:"Invalid Token"};me.addNotification(e.message,"error")}}catch(e){const t={code:e.code||"500",message:e.message||"Cannot save api token, please try again later"};me.addNotification(t.message,"error")}},removeToken:async()=>{try{await Le({nonce:pe,action:"remove_wf_token"}),me.addNotification("Token removed successfully"),window.location.reload()}catch(e){const t={code:e.code||"500",message:e.message||"Cannot remove token, please try again later"};me.addNotification(t.message,"error")}},addStaticRule:e=>{n(t=>(t.staticRules.push(e),{...t}))},removeStaticRule:e=>{n(t=>(t.staticRules.splice(e,1),{...t}))},addDynamicRule:e=>{n(t=>(t.dynamicRules.push(e),{...t}))},removeDynamicRule:e=>{n(t=>(t.dynamicRules.splice(e,1),{...t}))},saveStaticRules:async e=>{try{const t=await Le({action:"save_wf_static_rules",nonce:pe,data:{rules:JSON.stringify(e)}}),a=await t.json();if(a.success){const e=a.data;return n(t=>(t.staticRules=e,{...t})),me.addNotification("Rules saved successfully"),!0}{const e=a.data[0]||{code:"500",message:"Internal Server Error"};return me.addNotification(e.message,"error"),!1}}catch(e){const t={code:e.code||"500",message:e.message||"Cannot save data please, try again later"};return me.addNotification(t.message,"error"),!1}},saveDynamicRules:async e=>{try{const t=await Le({action:"save_wf_dynamic_rules",nonce:pe,data:{rules:JSON.stringify(e)}}),a=await t.json();if(a.success){const e=a.data;return n(t=>(t.dynamicRules=e,{...t})),me.addNotification("Rules saved successfully"),!0}{const e=a.data[0]||{code:"500",message:"Internal Server Error"};return me.addNotification(e.message,"error"),!1}}catch(e){const t={code:e.code||"500",message:e.message||"Cannot save data please, try again later"};return me.addNotification(t.message,"error"),!1}},invalidateCache:async()=>{try{const e=await Le({action:"invalidate_wf_cache",nonce:pe}),t=await e.json();if(t.success)return me.addNotification("Cache invalidated successfully"),!0;{const e=t.data[0]||{code:"500",message:"Internal Server Error"};return me.addNotification(e.message,"error"),!1}}catch(e){const t={code:e.code||"500",message:e.message||"Cannot save data please, try again later"};return me.addNotification(t.message,"error"),!1}},changeCache:async e=>{try{const t=await Le({action:"change_wf_cache_duration",nonce:pe,data:{duration:e}}),n=await t.json();if(n.success)return me.addNotification("Cache settings changed successfully"),!0;{const e=n.data[0]||{code:"500",message:"Internal Server Error"};return me.addNotification(e.message,"error"),!1}}catch(e){const t={code:e.code||"500",message:e.message||"Cannot save data please, try again later"};return me.addNotification(t.message,"error"),!1}},preloadCache:async()=>{try{const e=await Le({action:"preload_wf_cache",nonce:pe}),t=await e.json();if(t.success){const e=t.data||0;return me.addNotification(`Preloaded ${e} ${1==e?"page":"pages"}!`),!0}{const e=t.data[0]||{code:"500",message:"Internal Server Error"};return me.addNotification(e.message,"error"),!1}}catch(e){const t={code:e.code||"500",message:e.message||"Cannot save data please, try again later"};return me.addNotification(t.message,"error"),!1}}}}();function Te(e){var t,n;const a=e.$$slots.default,s=l(a,e,null);return{c(){t=j("div"),s&&s.c(),t.className="svelte-abjjh4"},l(e){s&&s.l(div_nodes)},m(e,a){y(e,t,a),s&&s.m(t,null),n=!0},p(e,t){s&&s.p&&e.$$scope&&s.p(d(a,t,e,null),u(a,t,null))},i(e){n||(s&&s.i&&s.i(e),n=!0)},o(e){s&&s.o&&s.o(e),n=!1},d(e){e&&N(t),s&&s.d(e)}}}function xe(e,t,n){let{$$slots:a={},$$scope:s}=t;return e.$set=(e=>{"$$scope"in e&&n("$$scope",s=e.$$scope)}),{$$slots:a,$$scope:s}}class Ce extends se{constructor(e){super(),ae(this,e,xe,Te,c,[])}}function be(t){var n;return{c(){b(n=j("input"),"type","submit"),n.value=t.value,n.className="form_submit-button svelte-1gmfj7p",b(n,"variation",t.variation),n.disabled=t.disabled},m(e,t){y(e,n,t)},p(e,t){e.value&&(n.value=t.value),e.variation&&b(n,"variation",t.variation),e.disabled&&(n.disabled=t.disabled)},i:e,o:e,d(e){e&&N(n)}}}function Se(e,t,n){let{value:a="Submit",disabled:s=!1,variation:o=null}=t;return e.$set=(e=>{"value"in e&&n("value",a=e.value),"disabled"in e&&n("disabled",s=e.disabled),"variation"in e&&n("variation",o=e.variation)}),{value:a,disabled:s,variation:o}}class De extends se{constructor(e){super(),ae(this,e,Se,be,c,["value","disabled","variation"])}}function ze(e){var t,n;const a=e.$$slots.default,s=l(a,e,null);return{c(){t=j("label"),s&&s.c(),t.className="field_label svelte-a6pibg",t.htmlFor=e.forHtml},l(e){s&&s.l(label_nodes)},m(e,a){y(e,t,a),s&&s.m(t,null),n=!0},p(e,o){s&&s.p&&e.$$scope&&s.p(d(a,o,e,null),u(a,o,null)),n&&!e.forHtml||(t.htmlFor=o.forHtml)},i(e){n||(s&&s.i&&s.i(e),n=!0)},o(e){s&&s.o&&s.o(e),n=!1},d(e){e&&N(t),s&&s.d(e)}}}function Ee(e,t,n){let{forHtml:a=""}=t,{$$slots:s={},$$scope:o}=t;return e.$set=(e=>{"forHtml"in e&&n("forHtml",a=e.forHtml),"$$scope"in e&&n("$$scope",o=e.$$scope)}),{forHtml:a,$$slots:s,$$scope:o}}class Ie extends se{constructor(e){super(),ae(this,e,Ee,ze,c,["forHtml"])}}function Oe(t){var n;return{c(){(n=j("div")).innerHTML='<img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIzLjAuNCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxMzkzLjEgMjIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMzkzLjEgMjIxOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6IzQzNTNGRjt9Cgkuc3Qxe2ZpbGw6IzMzMzMzMzt9Cjwvc3R5bGU+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNzIsODguOWMwLTE0LjUtMTQuMS0yOS45LTM4LjUtMjkuOWMtMjcuNCwwLTU3LjUsMjAuMS02Mi4xLDYwLjJjLTQuNyw0MC41LDIwLjUsNTguNSw0NS45LDU4LjUKCXMzOC43LTkuOSw1Mi4zLTIzLjFjLTExLjctMTQuNy0yNi44LTcuOS0yOS43LTYuNGMtMy4yLDEuNi03LjMsMy44LTE1LjcsMy44Yy05LjgsMC0xOS44LTQuNC0xOS44LTIyLjcKCUMyNjcuMiwxMjMuMSwyNzIsMTAzLjQsMjcyLDg4Ljl6IE0yNDAuOSw5MS4zYy0wLjQsNC41LTIuMiwxMi4yLTM0LDE2LjVjNi43LTIzLjgsMTkuNS0yNS42LDI1LjQtMjUuNgoJQzIzNy44LDgyLjIsMjQxLjMsODYuNSwyNDAuOSw5MS4zeiBNMTM0LjUsOTUuMmMwLDAtMTMuNSw0Mi40LTE0LjYsNDUuOWMtMC40LTMuNi0xMC4zLTc5LjctMTAuMy03OS43Yy0yMywwLTM1LjMsMTYuNC00MS44LDMzLjcKCWMwLDAtMTYuNCw0Mi41LTE3LjgsNDYuMWMtMC4xLTMuMy0yLjUtNDUuNi0yLjUtNDUuNkM0Ni4xLDc0LjQsMjYuNyw2MS41LDExLDYxLjVsMTksMTE1LjNjMjQuMS0wLjEsMzcuMS0xNi40LDQzLjktMzMuNwoJYzAsMCwxNC41LTM3LjUsMTUuMS0zOS4yYzAuMSwxLjYsMTAuNCw3Mi45LDEwLjQsNzIuOWMyNC4yLDAsMzcuMi0xNS4zLDQ0LjItMzJsMzMuOS04My4zQzE1My42LDYxLjUsMTQxLDc3LjgsMTM0LjUsOTUuMnoKCSBNMzYwLjgsNTguOGMtMTQuOSwwLTI2LjMsOC4xLTM1LjksMjB2LTAuMWw4LjYtNjkuM2MtMTkuOCwwLTM1LjksMTcuMi0zOSw0Mi44bC0xNSwxMjMuN2MxMS40LDAsMjMuNS0zLjMsMzAtMTEuNwoJYzUuOCw3LjUsMTQuNSwxMy41LDI3LjQsMTMuNWMzMy40LDAsNTYuMy0zOC44LDU2LjMtNzUuMkMzOTMsNjkuMywzNzYuOSw1OC44LDM2MC44LDU4Ljh6IE0zNTcuNywxMTguMwoJYy0zLjUsMjAuMy0xNC44LDM0LjEtMjUuNywzNC4xYy0xMSwwLTE1LjctNC45LTE1LjctNC45YzIuMS0xNy44LDMuNC0yOC43LDcuNC0zOC4xUzMzNy4yLDg1LDM0Ny4xLDg1CglDMzU2LjgsODUsMzYxLjIsOTcuOSwzNTcuNywxMTguM3ogTTQ3Ni42LDYxLjVoLTIzLjNsMC4xLTEuMmMxLjYtMTUuMiw1LjItMjMuMiwxNy4xLTI0LjVjOC4xLTAuOCwxMS43LTUsMTIuNi05LjYKCWMwLjctMy42LDIuOS0xNi4xLDIuOS0xNi4xYy00Ni44LTAuMy02MS41LDE5LjktNjUuMyw1MC43bC0wLjEsMC43aC0wLjVjLTcuNiwwLTE2LDguNi0xNy40LDE5LjVsLTAuNSw0aDE1LjZsLTEzLjEsMTA4LjJsLTQsMTkuNAoJYzAuNSwwLDEuMSwwLjEsMS42LDAuMWMyMS45LTAuOCwzNS45LTE4LjEsMzktNDMuMkw0NTEuNSw4NWg3LjNjNy4yLDAsMTUuNi03LjIsMTcuMS0xOS4yTDQ3Ni42LDYxLjV6IE01OTcuOCw1OS41CgljLTI2LjksMC01Mi4zLDE5LjgtNjAuMSw1MC45czQsNjcuOSw0My42LDY3LjljMzkuNSwwLDYyLjMtMzguMyw2Mi4zLTcwLjJDNjQzLjYsNzYuNCw2MjIuMSw1OS41LDU5Ny44LDU5LjV6IE02MDguNywxMTcuMwoJYy0xLjQsMTQuMS03LjYsMzUuNS0yNC42LDM1LjVjLTE3LjEsMC0xNC43LTI1LTEzLTM2LjljMS44LTEyLjcsOC45LTMwLjgsMjQuMi0zMC44QzYwOSw4NS4xLDYxMC4zLDEwMS40LDYwOC43LDExNy4zeiBNNzc2LjUsOTUuMgoJYzAsMC0xMy41LDQyLjQtMTQuNiw0NS45Yy0wLjQtMy42LTEwLjMtNzkuNy0xMC4zLTc5LjdjLTIzLDAtMzUuMywxNi40LTQxLjgsMzMuN2MwLDAtMTYuNCw0Mi41LTE3LjgsNDYuMQoJYy0wLjEtMy4zLTIuNS00NS42LTIuNS00NS42Yy0xLjQtMjEuMi0yMC44LTM0LjEtMzYuNS0zNC4xbDE4LjksMTE1LjNjMjQuMS0wLjEsMzcuMS0xNi40LDQzLjktMzMuN2MwLDAsMTQuNS0zNy41LDE1LTM5LjIKCWMwLjEsMS42LDEwLjQsNzIuOSwxMC40LDcyLjljMjQuMiwwLDM3LjItMTUuMyw0NC4yLTMybDMzLjktODMuM0M3OTUuNSw2MS41LDc4Mi45LDc3LjgsNzc2LjUsOTUuMnogTTQ5OC42LDEwLjFMNDc5LDE2OC4ybDAsMAoJbC00LDE5LjVjMC41LDAsMS4xLDAuMSwxLjYsMC4xbDAsMGMyMS4xLTAuMywzNi4xLTE4LjgsMzguOS00Mi4xTDUyNi44LDU1QzUzMC4yLDI3LjMsNTEzLjcsMTAuMSw0OTguNiwxMC4xeiIvPgo8Zz4KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik05NTIuOCwxMDhjLTcuNyw2LjQtMTguNyw5LjYtMzMsOS42aC0yNy40VjE2NUg4NjVWMzMuM2g1Ni41YzEzLDAsMjMuNCwzLjQsMzEuMiwxMC4yCgkJYzcuOCw2LjgsMTEuNiwxNy4zLDExLjYsMzEuNUM5NjQuMyw5MC42LDk2MC41LDEwMS42LDk1Mi44LDEwOHogTTkzMS43LDYwLjZjLTMuNS0yLjktOC40LTQuNC0xNC42LTQuNGgtMjQuOFY5NWgyNC44CgkJYzYuMywwLDExLjItMS42LDE0LjYtNC43YzMuNS0zLjIsNS4yLTguMiw1LjItMTVDOTM3LDY4LjQsOTM1LjIsNjMuNSw5MzEuNyw2MC42eiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTEwMjIuOSwxMDUuOGM0LjctMC42LDguMS0xLjMsMTAuMi0yLjJjMy43LTEuNSw1LjUtNCw1LjUtNy4yYzAtNC0xLjQtNi43LTQuMi04LjNjLTIuOC0xLjUtNi45LTIuMy0xMi40LTIuMwoJCWMtNi4xLDAtMTAuNCwxLjUtMTIuOSw0LjVjLTEuOCwyLjItMyw1LjItMy42LDguOWgtMjQuNmMwLjUtOC41LDIuOS0xNS41LDcuMi0yMWM2LjgtOC42LDE4LjQtMTIuOSwzNC44LTEyLjkKCQljMTAuNywwLDIwLjIsMi4xLDI4LjUsNi4zYzguMyw0LjIsMTIuNSwxMi4yLDEyLjUsMjMuOXY0NC43YzAsMy4xLDAuMSw2LjgsMC4yLDExLjNjMC4yLDMuMywwLjcsNS42LDEuNSw2LjgKCQljMC44LDEuMiwyLjEsMi4yLDMuOCwyLjl2My44aC0yNy43Yy0wLjgtMi0xLjMtMy44LTEuNi01LjVjLTAuMy0xLjctMC41LTMuNy0wLjctNS45Yy0zLjUsMy44LTcuNiw3LjEtMTIuMiw5LjcKCQljLTUuNSwzLjItMTEuNyw0LjctMTguNyw0LjdjLTguOSwwLTE2LjItMi41LTIyLTcuNWMtNS44LTUtOC43LTEyLjItOC43LTIxLjRjMC0xMiw0LjYtMjAuNiwxMy45LTI2YzUuMS0yLjksMTIuNi01LDIyLjUtNi4zCgkJTDEwMjIuOSwxMDUuOHogTTEwMzguNSwxMTcuN2MtMS42LDEtMy4zLDEuOC00LjksMi41Yy0xLjcsMC42LTMuOSwxLjItNi44LDEuN2wtNS44LDEuMWMtNS40LDEtOS4zLDIuMS0xMS43LDMuNQoJCWMtNCwyLjMtNiw1LjktNiwxMC44YzAsNC4zLDEuMiw3LjUsMy43LDkuNGMyLjQsMS45LDUuNCwyLjksOC45LDIuOWM1LjYsMCwxMC43LTEuNiwxNS40LTQuOHM3LjEtOS4xLDcuMy0xNy42VjExNy43eiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTExMzQuMiw2Ny41YzYuMiwyLjYsMTEuMiw3LjMsMTUsMTQuMXYtMTRoMjQuOFYxNjBjMCwxMi42LTIuMSwyMi02LjMsMjguNGMtNy4zLDExLTIxLjIsMTYuNC00MS44LDE2LjQKCQljLTEyLjQsMC0yMi42LTIuNC0zMC41LTcuM2MtNy45LTQuOS0xMi4yLTEyLjItMTMtMjEuOWgyNy43YzAuNywzLDEuOSw1LjEsMy41LDYuNGMyLjcsMi4zLDcuNCwzLjUsMTMuOCwzLjUKCQljOS4yLDAsMTUuMy0zLjEsMTguNC05LjJjMi0zLjksMy0xMC41LDMtMTkuOHYtNi4zYy0yLjQsNC4yLTUuMSw3LjMtNy45LDkuNGMtNS4xLDMuOS0xMS42LDUuOC0xOS43LDUuOGMtMTIuNSwwLTIyLjUtNC40LTMwLTEzLjIKCQljLTcuNS04LjgtMTEuMi0yMC43LTExLjItMzUuN2MwLTE0LjUsMy42LTI2LjYsMTAuOC0zNi41YzcuMi05LjksMTcuNC0xNC44LDMwLjYtMTQuOEMxMTI2LjQsNjUuMywxMTMwLjYsNjYuMSwxMTM0LjIsNjcuNXoKCQkgTTExNDIuOSwxMzcuNGM0LjEtNC41LDYuMS0xMS43LDYuMS0yMS41YzAtOS4yLTEuOS0xNi4zLTUuOC0yMS4xYy0zLjktNC44LTkuMS03LjItMTUuNi03LjJjLTguOSwwLTE1LDQuMi0xOC40LDEyLjYKCQljLTEuOCw0LjUtMi43LDEwLTIuNywxNi41YzAsNS43LDAuOSwxMC43LDIuOCwxNS4xYzMuNCw4LjIsOS42LDEyLjMsMTguNSwxMi4zQzExMzMuOCwxNDQuMSwxMTM4LjgsMTQxLjksMTE0Mi45LDEzNy40eiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTEyNjEuMyw2OS42YzYuOCwzLDEyLjQsNy44LDE2LjgsMTQuNGM0LDUuOCw2LjYsMTIuNSw3LjgsMjAuMWMwLjcsNC41LDEsMTAuOSwwLjgsMTkuM2gtNzAuOQoJCWMwLjQsOS44LDMuOCwxNi42LDEwLjIsMjAuNWMzLjksMi40LDguNiwzLjcsMTQsMy43YzUuOCwwLDEwLjUtMS41LDE0LjEtNC41YzItMS42LDMuNy0zLjgsNS4yLTYuN2gyNmMtMC43LDUuOC0zLjgsMTEuNi05LjQsMTcuNgoJCWMtOC43LDkuNS0yMC45LDE0LjItMzYuNiwxNC4yYy0xMywwLTI0LjQtNC0zNC4zLTEyYy05LjktOC0xNC45LTIxLTE0LjktMzljMC0xNi45LDQuNS0yOS44LDEzLjQtMzguOHMyMC41LTEzLjUsMzQuOC0xMy41CgkJQzEyNDYuOSw2NSwxMjU0LjUsNjYuNiwxMjYxLjMsNjkuNnogTTEyMjMuMiw5MS42Yy0zLjYsMy43LTUuOSw4LjctNi44LDE1LjFoNDMuOWMtMC41LTYuOC0yLjctMTEuOS02LjgtMTUuNAoJCWMtNC4xLTMuNS05LjEtNS4yLTE1LjEtNS4yQzEyMzEuOSw4NiwxMjI2LjgsODcuOSwxMjIzLjIsOTEuNnoiLz4KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xMzE5LjMsMTMzLjljMC41LDQuNSwxLjcsNy43LDMuNSw5LjZjMy4yLDMuNCw5LDUuMSwxNy42LDUuMWM1LDAsOS0wLjcsMTItMi4yYzMtMS41LDQuNC0zLjcsNC40LTYuNwoJCWMwLTIuOS0xLjItNS0zLjYtNi41Yy0yLjQtMS41LTExLjMtNC0yNi42LTcuN2MtMTEuMS0yLjctMTguOS02LjItMjMuNC0xMC4zYy00LjUtNC02LjgtOS45LTYuOC0xNy41YzAtOSwzLjUtMTYuNywxMC42LTIzLjIKCQljNy4xLTYuNSwxNy05LjcsMjkuOS05LjdjMTIuMiwwLDIyLjEsMi40LDI5LjgsNy4zYzcuNyw0LjksMTIuMSwxMy4yLDEzLjIsMjUuMWgtMjUuNWMtMC40LTMuMy0xLjMtNS45LTIuOC03LjgKCQljLTIuOC0zLjUtNy42LTUuMi0xNC4zLTUuMmMtNS42LDAtOS41LDAuOS0xMS45LDIuNmMtMi40LDEuNy0zLjUsMy44LTMuNSw2LjFjMCwyLjksMS4zLDUsMy44LDYuM2MyLjUsMS40LDExLjQsMy43LDI2LjYsNy4xCgkJYzEwLjEsMi40LDE3LjcsNiwyMi44LDEwLjhjNSw0LjksNy41LDExLDcuNSwxOC4zYzAsOS42LTMuNiwxNy41LTEwLjgsMjMuNmMtNy4yLDYuMS0xOC4zLDkuMi0zMy4zLDkuMmMtMTUuMywwLTI2LjctMy4yLTM0LTkuNwoJCWMtNy4zLTYuNS0xMS0xNC43LTExLTI0LjdIMTMxOS4zeiIvPgo8L2c+Cjwvc3ZnPgo=\n\t\t\t" alt="logo" class="svelte-1ppj3qq">',n.className="svelte-1ppj3qq"},m(e,t){y(e,n,t)},p:e,i:e,o:e,d(e){e&&N(n)}}}class _e extends se{constructor(e){super(),ae(this,e,null,Oe,c,[])}}function ke(e){var t,n,a,s,i,c,r,l,u,d,M,L,m,$=new _e({}),p=new De({props:{value:e.$loginStore.value,disabled:e.$loginStore.disabled}});return{c(){t=j("div"),$.$$.fragment.c(),n=T(),(a=j("b")).textContent="Congratulations on installing the Webflow Wordpress plugin!",s=T(),(i=j("p")).innerHTML='\n\t\t\t      You can find your site\'s API key by going to the <a href="https://webflow.com/dashboard?utm_source=wpplugin" target="_blank" rel="nofollow" class="svelte-uxpgyu">Webflow Dashboard</a>, then your site\'s settings\n\t\t\t    ',c=T(),r=j("form"),l=j("input"),u=T(),p.$$.fragment.c(),d=T(),(M=j("div")).innerHTML='\n\t\t\t      This version of the plugin is not compatible with Webflow Ecommerce. Please contact <a href="https://university.webflow.com/contact" target="_blank" rel="nofollow" class="svelte-uxpgyu">Webflow Support</a> for any help with the plugin.\n\t\t\t    ',i.className="svelte-uxpgyu",l.className="field-input svelte-uxpgyu",b(l,"type","password"),l.name="api_keys",l.autocomplete="off",l.placeholder="Your Api Key...",l.required=!0,r.className="svelte-uxpgyu",M.className="warning-notice svelte-uxpgyu",t.className="login-wrapper svelte-uxpgyu",m=[C(l,"input",e.input_input_handler),C(r,"submit",e.handleSubmit)]},m(o,m){y(o,t,m),te($,t,null),v(t,n),v(t,a),v(t,s),v(t,i),v(t,c),v(t,r),v(r,l),l.value=e.token,v(r,u),te(p,r,null),v(t,d),v(t,M),L=!0},p(e,t){e.token&&(l.value=t.token);var n={};e.$loginStore&&(n.value=t.$loginStore.value),e.$loginStore&&(n.disabled=t.$loginStore.disabled),p.$set(n)},i(e){L||($.$$.fragment.i(e),p.$$.fragment.i(e),L=!0)},o(e){$.$$.fragment.o(e),p.$$.fragment.o(e),L=!1},d(e){e&&N(t),$.$destroy(),p.$destroy(),o(m)}}}function Ye(e){var t,n=new Ce({props:{$$slots:{default:[ke]},$$scope:{ctx:e}}});return{c(){n.$$.fragment.c()},m(e,a){te(n,e,a),t=!0},p(e,t){var a={};(e.$$scope||e.$loginStore||e.token)&&(a.$$scope={changed:e,ctx:t}),n.$set(a)},i(e){t||(n.$$.fragment.i(e),t=!0)},o(e){n.$$.fragment.o(e),t=!1},d(e){n.$destroy(e)}}}function Re(e,t,n){let a;const s=oe({disabled:!1,value:"Add Webflow API Key"});r(e,s,e=>{n("$loginStore",a=e)});let o="";return{loginStore:s,token:o,handleSubmit:async e=>{e.preventDefault(),s.set({disabled:!0,value:"Saving..."}),await he.saveToken(o),s.set({disabled:!1,value:"Add Webflow API Key"})},$loginStore:a,input_input_handler:function(){o=this.value,n("token",o)}}}class Ae extends se{constructor(e){super(),ae(this,e,Re,Ye,c,[])}}function Ue(e){var t,n;const a=e.$$slots.default,s=l(a,e,null);return{c(){t=j("div"),s&&s.c(),t.className="navbar-light svelte-eljuso"},l(e){s&&s.l(div_nodes)},m(e,a){y(e,t,a),s&&s.m(t,null),n=!0},p(e,t){s&&s.p&&e.$$scope&&s.p(d(a,t,e,null),u(a,t,null))},i(e){n||(s&&s.i&&s.i(e),n=!0)},o(e){s&&s.o&&s.o(e),n=!1},d(e){e&&N(t),s&&s.d(e)}}}function Qe(e,t,n){let{$$slots:a={},$$scope:s}=t;return e.$set=(e=>{"$$scope"in e&&n("$$scope",s=e.$$scope)}),{$$slots:a,$$scope:s}}class We extends se{constructor(e){super(),ae(this,e,Qe,Ue,c,[])}}function Pe(t){var n,a,s,o;return{c(){n=j("a"),a=h(t.text),n.href="/",n.className=s=(t.$isActive?"is-active":"")+" svelte-kx0bmz",o=C(n,"click",t.handleClick)},m(e,t){y(e,n,t),v(n,a)},p(e,t){e.text&&S(a,t.text),e.$isActive&&s!==(s=(t.$isActive?"is-active":"")+" svelte-kx0bmz")&&(n.className=s)},i:e,o:e,d(e){e&&N(n),o()}}}function He(e,t,n){let a,{path:s,params:o={},text:i=""}=t;const c=re(s);return r(e,c,e=>{n("$isActive",a=e)}),e.$set=(e=>{"path"in e&&n("path",s=e.path),"params"in e&&n("params",o=e.params),"text"in e&&n("text",i=e.text)}),{path:s,params:o,text:i,handleClick:e=>{e.preventDefault(),ce.goTo(s,o)},isActive:c,$isActive:a}}class Je extends se{constructor(e){super(),ae(this,e,He,Pe,c,["path","params","text"])}}function Ge(t){var n,a,s=new Je({props:{path:"/configuration",text:"Pages"}}),o=new Je({props:{path:"/settings",text:"Settings"}});return{c(){s.$$.fragment.c(),n=T(),o.$$.fragment.c()},m(e,t){te(s,e,t),y(e,n,t),te(o,e,t),a=!0},p:e,i(e){a||(s.$$.fragment.i(e),o.$$.fragment.i(e),a=!0)},o(e){s.$$.fragment.o(e),o.$$.fragment.o(e),a=!1},d(e){s.$destroy(e),e&&N(n),o.$destroy(e)}}}function Ze(e){var t,n=new We({props:{$$slots:{default:[Ge]},$$scope:{ctx:e}}});return{c(){n.$$.fragment.c()},m(e,a){te(n,e,a),t=!0},p(e,t){var a={};e.$$scope&&(a.$$scope={changed:e,ctx:t}),n.$set(a)},i(e){t||(n.$$.fragment.i(e),t=!0)},o(e){n.$$.fragment.o(e),t=!1},d(e){n.$destroy(e)}}}class Ve extends se{constructor(e){super(),ae(this,e,null,Ze,c,[])}}function Ke(e){var t,n,a,s,o,i,c=new _e({}),r=new Ve({});const M=e.$$slots.default,L=l(M,e,null);return{c(){t=j("div"),c.$$.fragment.c(),n=T(),a=j("div"),r.$$.fragment.c(),s=T(),o=j("div"),L&&L.c(),o.className="main-content svelte-k0nbyo",a.className="wrapper svelte-k0nbyo",t.className="configuration-container svelte-k0nbyo"},l(e){L&&L.l(div0_nodes)},m(e,l){y(e,t,l),te(c,t,null),v(t,n),v(t,a),te(r,a,null),v(a,s),v(a,o),L&&L.m(o,null),i=!0},p(e,t){L&&L.p&&e.$$scope&&L.p(d(M,t,e,null),u(M,t,null))},i(e){i||(c.$$.fragment.i(e),r.$$.fragment.i(e),L&&L.i&&L.i(e),i=!0)},o(e){c.$$.fragment.o(e),r.$$.fragment.o(e),L&&L.o&&L.o(e),i=!1},d(e){e&&N(t),c.$destroy(),r.$destroy(),L&&L.d(e)}}}function Fe(e,t,n){let{$$slots:a={},$$scope:s}=t;return e.$set=(e=>{"$$scope"in e&&n("$$scope",s=e.$$scope)}),{$$slots:a,$$scope:s}}class Xe extends se{constructor(e){super(),ae(this,e,Fe,Ke,c,[])}}function Be(e,t,n){const a=Object.create(e);return a.page=t[n],a}function qe(e,t,n){const a=Object.create(e);return a.staticRule=t[n],a.each_value=t,a.index=n,a}function et(e,t,n){const a=Object.create(e);return a.page=t[n],a}function tt(e){var t;return{c(){t=h("WordPress Path")},m(e,n){y(e,t,n)},d(e){e&&N(t)}}}function nt(e){var t;return{c(){t=h("Webflow Page")},m(e,n){y(e,t,n)},d(e){e&&N(t)}}}function at(e){var t,n,a=e.page.substr(1).replace("index.html","Home Page");return{c(){t=j("option"),n=h(a),t.__value=e.page,t.value=t.__value},m(e,a){y(e,t,a),v(t,n)},p(e,n){t.value=t.__value},d(e){e&&N(t)}}}function st(t){var n;return{c(){(n=j("div")).innerHTML='<p class="svelte-1eka5wc">No rules added</p>',n.className="no-pages-added svelte-1eka5wc"},m(e,t){y(e,n,t)},p:e,i:e,o:e,d(e){e&&N(n)}}}function ot(e){for(var t,n,a,s,o,i,c,r,l,u=new Ie({props:{$$slots:{default:[it]},$$scope:{ctx:e}}}),d=new Ie({props:{$$slots:{default:[ct]},$$scope:{ctx:e}}}),M=e.$store.staticRules,L=[],m=0;m<M.length;m+=1)L[m]=lt(qe(e,M,m));return{c(){t=j("div"),n=j("div"),u.$$.fragment.c(),a=T(),s=j("div"),d.$$.fragment.c(),o=T(),(i=j("div")).innerHTML='<button disabled class="button add">+</button>',c=T(),r=j("div");for(var e=0;e<L.length;e+=1)L[e].c();D(i,"visibility","hidden"),t.className="grid grid-with-actions fields-headers svelte-1eka5wc",r.className="fields-wrapper svelte-1eka5wc"},m(e,M){y(e,t,M),v(t,n),te(u,n,null),v(t,a),v(t,s),te(d,s,null),v(t,o),v(t,i),y(e,c,M),y(e,r,M);for(var m=0;m<L.length;m+=1)L[m].m(r,null);l=!0},p(e,t){var n={};e.$$scope&&(n.$$scope={changed:e,ctx:t}),u.$set(n);var a={};if(e.$$scope&&(a.$$scope={changed:e,ctx:t}),d.$set(a),e.$store||e.pages||e.handleInput){M=t.$store.staticRules;for(var s=0;s<M.length;s+=1){const n=qe(t,M,s);L[s]?L[s].p(e,n):(L[s]=lt(n),L[s].c(),L[s].m(r,null))}for(;s<L.length;s+=1)L[s].d(1);L.length=M.length}},i(e){l||(u.$$.fragment.i(e),d.$$.fragment.i(e),l=!0)},o(e){u.$$.fragment.o(e),d.$$.fragment.o(e),l=!1},d(e){e&&N(t),u.$destroy(),d.$destroy(),e&&(N(c),N(r)),w(L,e)}}}function it(e){var t;return{c(){t=h("WordPress Path")},m(e,n){y(e,t,n)},d(e){e&&N(t)}}}function ct(e){var t;return{c(){t=h("Webflow Page")},m(e,n){y(e,t,n)},d(e){e&&N(t)}}}function rt(e){var t,n,a=e.page.substr(1).replace("index.html","Home Page");return{c(){t=j("option"),n=h(a),t.__value=e.page,t.value=t.__value},m(e,a){y(e,t,a),v(t,n)},p(e,n){t.value=t.__value},d(e){e&&N(t)}}}function lt(e){var t,n,a,s,i,c,r,l,u,d,M;function L(){e.input_input_handler_1.call(s,e)}for(var m=e.pages,$=[],p=0;p<m.length;p+=1)$[p]=rt(Be(e,m,p));function f(){e.select_change_handler_1.call(r,e)}function g(){return e.click_handler(e)}return{c(){t=j("div"),n=j("div"),a=j("div"),s=j("input"),i=T(),c=j("div"),r=j("select");for(var o=0;o<$.length;o+=1)$[o].c();l=T(),(u=j("a")).textContent="X",d=T(),s.className="field-input",b(s,"type","text"),s.readOnly=!0,s.disabled=!0,void 0===e.staticRule[1]&&J(f),r.className="field-select",r.disabled=!0,u.className="button remove",n.className="grid grid-with-actions",t.className="input-wrapper",M=[C(s,"input",L),C(s,"input",e.handleInput),C(r,"change",f),C(u,"click",g)]},m(o,M){y(o,t,M),v(t,n),v(n,a),v(a,s),s.value=e.staticRule[0],v(n,i),v(n,c),v(c,r);for(var L=0;L<$.length;L+=1)$[L].m(r,null);z(r,e.staticRule[1]),v(n,l),v(n,u),v(t,d)},p(t,n){if(e=n,t.$store&&s.value!==e.staticRule[0]&&(s.value=e.staticRule[0]),t.pages){m=e.pages;for(var a=0;a<m.length;a+=1){const n=Be(e,m,a);$[a]?$[a].p(t,n):($[a]=rt(n),$[a].c(),$[a].m(r,null))}for(;a<$.length;a+=1)$[a].d(1);$.length=m.length}t.$store&&z(r,e.staticRule[1])},d(e){e&&N(t),w($,e),o(M)}}}function ut(e){for(var t,n,a,s,i,c,r,l,u,d,M,L,m,$,p,f,g,x,S,E,I,O,_,k,Y,R,A,U,Q,W,P,H,G,Z,V,K,F,ee,ne=new Ie({props:{$$slots:{default:[tt]},$$scope:{ctx:e}}}),ae=new Ie({props:{$$slots:{default:[nt]},$$scope:{ctx:e}}}),se=e.pages,oe=[],ie=0;ie<se.length;ie+=1)oe[ie]=at(et(e,se,ie));var ce=[ot,st],re=[];function le(e){return e.$store.staticRules.length?0:1}return V=le(e),K=re[V]=ce[V](e),{c(){t=j("div"),n=j("div"),(a=j("div")).innerHTML='<h3 class="svelte-1eka5wc">Static Pages</h3>',s=T(),i=j("div"),(c=j("p")).textContent="Create a new redirect",r=T(),(l=j("p")).textContent="Create redirects to serve a made-in-Webflow page in place of a WordPress Page",u=T(),d=j("div"),M=j("div"),ne.$$.fragment.c(),L=T(),m=j("div"),ae.$$.fragment.c(),$=T(),(p=j("div")).innerHTML='<button disabled class="button add">+</button>',f=T(),g=j("div"),x=j("form"),S=j("div"),E=j("input"),I=T(),(O=j("small")).textContent="Path must start with / and be valid URLs",_=T(),k=j("div"),Y=j("select");for(var o=0;o<oe.length;o+=1)oe[o].c();R=T(),A=j("button"),U=h("+"),W=T(),P=j("div"),(H=j("p")).textContent="Rules",G=T(),Z=j("form"),K.c(),a.className="headers svelte-1eka5wc",c.className="section-description svelte-1eka5wc",l.className="description-subtitle",D(p,"visibility","hidden"),d.className="grid grid-with-actions ",E.dataset.add="true",E.className="field-input",b(E,"type","text"),E.required=!0,E.placeholder="/path",O.className="error-message",void 0===e.staticRule[1]&&J(()=>e.select_change_handler.call(Y)),Y.className="field-select",A.type="submit",A.disabled=Q=!e.canAdd,A.className="button add",x.className="grid grid-with-actions",g.className="input-wrapper",i.className="form-wrapper new-page svelte-1eka5wc",D(n,"display","flex"),D(n,"flex-direction","column"),D(n,"justify-content","space-evenly"),H.className="section-description svelte-1eka5wc",Z.className="configuration-form svelte-1eka5wc",P.className="added-pages svelte-1eka5wc",t.className="wrapper",ee=[C(E,"input",e.input_input_handler),C(E,"input",e.handleInput),C(Y,"change",e.select_change_handler),C(A,"click",e.addStaticRule),C(x,"submit",e.addStaticRule),C(Z,"submit",e.handleSubmit)]},m(o,N){y(o,t,N),v(t,n),v(n,a),v(n,s),v(n,i),v(i,c),v(i,r),v(i,l),v(i,u),v(i,d),v(d,M),te(ne,M,null),v(d,L),v(d,m),te(ae,m,null),v(d,$),v(d,p),v(i,f),v(i,g),v(g,x),v(x,S),v(S,E),E.value=e.staticRule[0],v(S,I),v(S,O),v(x,_),v(x,k),v(k,Y);for(var w=0;w<oe.length;w+=1)oe[w].m(Y,null);z(Y,e.staticRule[1]),v(x,R),v(x,A),v(A,U),v(t,W),v(t,P),v(P,H),v(P,G),v(P,Z),re[V].m(Z,null),F=!0},p(e,t){var n={};e.$$scope&&(n.$$scope={changed:e,ctx:t}),ne.$set(n);var a={};if(e.$$scope&&(a.$$scope={changed:e,ctx:t}),ae.$set(a),e.staticRule&&E.value!==t.staticRule[0]&&(E.value=t.staticRule[0]),e.pages){se=t.pages;for(var s=0;s<se.length;s+=1){const n=et(t,se,s);oe[s]?oe[s].p(e,n):(oe[s]=at(n),oe[s].c(),oe[s].m(Y,null))}for(;s<oe.length;s+=1)oe[s].d(1);oe.length=se.length}e.staticRule&&z(Y,t.staticRule[1]),F&&!e.canAdd||Q===(Q=!t.canAdd)||(A.disabled=Q);var o=V;(V=le(t))===o?re[V].p(e,t):(X(),q(()=>{re[o].d(1),re[o]=null}),K.o(1),B(),(K=re[V])||(K=re[V]=ce[V](t)).c(),K.i(1),K.m(Z,null))},i(e){F||(ne.$$.fragment.i(e),ae.$$.fragment.i(e),K&&K.i(),F=!0)},o(e){ne.$$.fragment.o(e),ae.$$.fragment.o(e),K&&K.o(),F=!1},d(e){e&&N(t),ne.$destroy(),ae.$destroy(),w(oe,e),re[V].d(),o(ee)}}}function dt(e,t,n){let a;r(e,he,e=>{n("$store",a=e)});a.staticRules.length;let s=["",""],o=!1;const i=e=>{he.removeStaticRule(e),he.saveStaticRules(a.staticRules)},c=a.pages.filter(e=>"/404"!==e&&"/401"!==e);return{staticRule:s,canAdd:o,handleSubmit:async e=>{e.preventDefault(),await he.saveStaticRules(a.staticRules)},addStaticRule:e=>{e.preventDefault(),document.activeElement.blur(),he.addStaticRule(s),n("staticRule",s=["",""]),n("canAdd",o=!1),he.saveStaticRules(a.staticRules)},removeStaticRule:i,handleInput:({target:e})=>{let t=e.value,a=e.getAttribute("data-add");e.value=encodeURI(decodeURI(t));const s=(t=e.value).match(/^(\.?){2}(\/[a-zA-Z0-9_\-]+)+\/?$/g);s&&s[0]===t||"/"===t?(e.setCustomValidity(""),a&&n("canAdd",o=!0)):(e.setCustomValidity("Invalid field."),a&&n("canAdd",o=!1))},pages:c,$store:a,input_input_handler:function(){s[0]=this.value,n("staticRule",s),n("pages",c)},select_change_handler:function(){s[1]=E(this),n("staticRule",s),n("pages",c)},input_input_handler_1:function({staticRule:e,each_value:t,index:a}){t[a][0]=this.value,n("pages",c)},select_change_handler_1:function({staticRule:e,each_value:t,index:a}){t[a][1]=E(this),n("pages",c)},click_handler:function({index:e}){return i(e)}}}class Mt extends se{constructor(e){super(),ae(this,e,dt,ut,c,[])}}function Lt(e,t,n){const a=Object.create(e);return a.collection=t[n],a}function mt(e,t,n){const a=Object.create(e);return a.dynamicRule=t[n],a.each_value=t,a.index=n,a}function $t(e,t,n){const a=Object.create(e);return a.collection=t[n],a}function pt(t){var n;return{c(){(n=j("div")).innerHTML='<p class="svelte-1l2pbbv">No collections</p>',n.className="no-collections svelte-1l2pbbv"},m(e,t){y(e,n,t)},p:e,i:e,o:e,d(e){e&&N(n)}}}function ft(e){for(var t,n,a,s,i,c,r,l,u,d,M,L,m,$,p,f,g,x,S,E,I,O,_=new Ie({props:{$$slots:{default:[gt]},$$scope:{ctx:e}}}),k=new Ie({props:{$$slots:{default:[vt]},$$scope:{ctx:e}}}),Y=e.$store.collections,R=[],A=0;A<Y.length;A+=1)R[A]=yt($t(e,Y,A));return{c(){t=j("div"),n=j("div"),_.$$.fragment.c(),a=T(),s=j("div"),k.$$.fragment.c(),i=T(),(c=j("div")).innerHTML='<button disabled class="button add">+</button>',r=T(),l=j("div"),u=j("form"),d=j("div"),M=j("input"),L=T(),(m=j("small")).textContent="Path must start with / and be valid URLs and end with /*",$=T(),p=j("div"),f=j("select");for(var o=0;o<R.length;o+=1)R[o].c();g=T(),x=j("button"),S=h("+"),D(c,"visibility","hidden"),t.className="grid grid-with-actions",M.dataset.add="true",M.className="field-input",b(M,"type","text"),M.required=!0,M.placeholder="/path/*",m.className="error-message",void 0===e.dynamicRule[1]&&J(()=>e.select_change_handler.call(f)),f.className="field-select",x.type="submit",x.disabled=E=!e.canAdd,x.className="button add",u.className="grid grid-with-actions",l.className="input-wrapper",O=[C(M,"input",e.input_input_handler),C(M,"input",e.handleInput),C(f,"change",e.select_change_handler),C(x,"click",e.addDynamicRule),C(u,"submit",e.addDynamicRule)]},m(o,N){y(o,t,N),v(t,n),te(_,n,null),v(t,a),v(t,s),te(k,s,null),v(t,i),v(t,c),y(o,r,N),y(o,l,N),v(l,u),v(u,d),v(d,M),M.value=e.dynamicRule[0],v(d,L),v(d,m),v(u,$),v(u,p),v(p,f);for(var w=0;w<R.length;w+=1)R[w].m(f,null);z(f,e.dynamicRule[1]),v(u,g),v(u,x),v(x,S),I=!0},p(e,t){var n={};e.$$scope&&(n.$$scope={changed:e,ctx:t}),_.$set(n);var a={};if(e.$$scope&&(a.$$scope={changed:e,ctx:t}),k.$set(a),e.dynamicRule&&M.value!==t.dynamicRule[0]&&(M.value=t.dynamicRule[0]),e.$store){Y=t.$store.collections;for(var s=0;s<Y.length;s+=1){const n=$t(t,Y,s);R[s]?R[s].p(e,n):(R[s]=yt(n),R[s].c(),R[s].m(f,null))}for(;s<R.length;s+=1)R[s].d(1);R.length=Y.length}e.dynamicRule&&z(f,t.dynamicRule[1]),I&&!e.canAdd||E===(E=!t.canAdd)||(x.disabled=E)},i(e){I||(_.$$.fragment.i(e),k.$$.fragment.i(e),I=!0)},o(e){_.$$.fragment.o(e),k.$$.fragment.o(e),I=!1},d(e){e&&N(t),_.$destroy(),k.$destroy(),e&&(N(r),N(l)),w(R,e),o(O)}}}function gt(e){var t;return{c(){t=h("WordPress Path")},m(e,n){y(e,t,n)},d(e){e&&N(t)}}}function vt(e){var t;return{c(){t=h("Webflow Page")},m(e,n){y(e,t,n)},d(e){e&&N(t)}}}function yt(e){var t,n,a,s,o,i=e.collection.slug;return{c(){t=j("option"),n=h("/"),a=h(i),s=h("/*"),t.__value=o="/"+e.collection.slug+"/",t.value=t.__value},m(e,o){y(e,t,o),v(t,n),v(t,a),v(t,s)},p(e,n){e.$store&&i!==(i=n.collection.slug)&&S(a,i),e.$store&&o!==(o="/"+n.collection.slug+"/")&&(t.__value=o),t.value=t.__value},d(e){e&&N(t)}}}function Nt(t){var n;return{c(){(n=j("div")).innerHTML='<p class="svelte-1l2pbbv">No rules added</p>',n.className="no-collections svelte-1l2pbbv"},m(e,t){y(e,n,t)},p:e,i:e,o:e,d(e){e&&N(n)}}}function wt(e){for(var t,n,a,s,o,i,c,r,l,u=new Ie({props:{$$slots:{default:[jt]},$$scope:{ctx:e}}}),d=new Ie({props:{$$slots:{default:[ht]},$$scope:{ctx:e}}}),M=e.$store.dynamicRules,L=[],m=0;m<M.length;m+=1)L[m]=xt(mt(e,M,m));return{c(){t=j("div"),n=j("div"),u.$$.fragment.c(),a=T(),s=j("div"),d.$$.fragment.c(),o=T(),(i=j("div")).innerHTML='<button disabled class="button add">+</button>',c=T(),r=j("div");for(var e=0;e<L.length;e+=1)L[e].c();D(i,"visibility","hidden"),t.className="grid grid-with-actions fields-headers svelte-1l2pbbv",r.className="fields-wrapper svelte-1l2pbbv"},m(e,M){y(e,t,M),v(t,n),te(u,n,null),v(t,a),v(t,s),te(d,s,null),v(t,o),v(t,i),y(e,c,M),y(e,r,M);for(var m=0;m<L.length;m+=1)L[m].m(r,null);l=!0},p(e,t){var n={};e.$$scope&&(n.$$scope={changed:e,ctx:t}),u.$set(n);var a={};if(e.$$scope&&(a.$$scope={changed:e,ctx:t}),d.$set(a),e.$store||e.handleInput){M=t.$store.dynamicRules;for(var s=0;s<M.length;s+=1){const n=mt(t,M,s);L[s]?L[s].p(e,n):(L[s]=xt(n),L[s].c(),L[s].m(r,null))}for(;s<L.length;s+=1)L[s].d(1);L.length=M.length}},i(e){l||(u.$$.fragment.i(e),d.$$.fragment.i(e),l=!0)},o(e){u.$$.fragment.o(e),d.$$.fragment.o(e),l=!1},d(e){e&&N(t),u.$destroy(),d.$destroy(),e&&(N(c),N(r)),w(L,e)}}}function jt(e){var t;return{c(){t=h("WordPress Path")},m(e,n){y(e,t,n)},d(e){e&&N(t)}}}function ht(e){var t;return{c(){t=h("Webflow Page")},m(e,n){y(e,t,n)},d(e){e&&N(t)}}}function Tt(e){var t,n,a,s,o,i=e.collection.slug;return{c(){t=j("option"),n=h("/"),a=h(i),s=h("/*"),t.__value=o="/"+e.collection.slug+"/",t.value=t.__value},m(e,o){y(e,t,o),v(t,n),v(t,a),v(t,s)},p(e,n){e.$store&&i!==(i=n.collection.slug)&&S(a,i),e.$store&&o!==(o="/"+n.collection.slug+"/")&&(t.__value=o),t.value=t.__value},d(e){e&&N(t)}}}function xt(e){var t,n,a,s,i,c,r,l,u,d,M;function L(){e.input_input_handler_1.call(s,e)}for(var m=e.$store.collections,$=[],p=0;p<m.length;p+=1)$[p]=Tt(Lt(e,m,p));function f(){e.select_change_handler_1.call(r,e)}function g(){return e.click_handler(e)}return{c(){t=j("div"),n=j("div"),a=j("div"),s=j("input"),i=T(),c=j("div"),r=j("select");for(var o=0;o<$.length;o+=1)$[o].c();l=T(),(u=j("a")).textContent="X",d=T(),s.className="field-input",b(s,"type","text"),s.required=!0,s.disabled=!0,s.readOnly=!0,void 0===e.dynamicRule[1]&&J(f),r.className="field-select",r.disabled=!0,u.className="button remove",n.className="grid grid-with-actions",t.className="input-wrapper",M=[C(s,"input",L),C(s,"input",e.handleInput),C(r,"change",f),C(u,"click",g)]},m(o,M){y(o,t,M),v(t,n),v(n,a),v(a,s),s.value=e.dynamicRule[0],v(n,i),v(n,c),v(c,r);for(var L=0;L<$.length;L+=1)$[L].m(r,null);z(r,e.dynamicRule[1]),v(n,l),v(n,u),v(t,d)},p(t,n){if(e=n,t.$store&&s.value!==e.dynamicRule[0]&&(s.value=e.dynamicRule[0]),t.$store){m=e.$store.collections;for(var a=0;a<m.length;a+=1){const n=Lt(e,m,a);$[a]?$[a].p(t,n):($[a]=Tt(n),$[a].c(),$[a].m(r,null))}for(;a<$.length;a+=1)$[a].d(1);$.length=m.length}t.$store&&z(r,e.dynamicRule[1])},d(e){e&&N(t),w($,e),o(M)}}}function Ct(e){var t,n,a,s,o,i,c,r,l,u,d,M,L,m,$,p,f,g,w=[ft,pt],h=[];function x(e){return e.$store.collections.length>0?0:1}r=x(e),l=h[r]=w[r](e);var b=[wt,Nt],S=[];function z(e){return e.$store.dynamicRules.length?0:1}return $=z(e),p=S[$]=b[$](e),{c(){t=j("div"),n=j("div"),(a=j("div")).innerHTML='<h3 class="svelte-1l2pbbv">Collection Pages</h3>',s=T(),o=j("div"),(i=j("p")).textContent="Create a new Rule",c=T(),l.c(),u=T(),d=j("div"),(M=j("p")).textContent="Rules",L=T(),m=j("form"),p.c(),a.className="headers svelte-1l2pbbv",i.className="section-description svelte-1l2pbbv",o.className="form-wrapper new-page svelte-1l2pbbv",D(n,"display","flex"),D(n,"flex-direction","column"),D(n,"justify-content","space-evenly"),M.className="section-description svelte-1l2pbbv",m.className="configuration-form svelte-1l2pbbv",d.className="added-pages svelte-1l2pbbv",t.className="wrapper",g=C(m,"submit",e.handleSubmit)},m(e,l){y(e,t,l),v(t,n),v(n,a),v(n,s),v(n,o),v(o,i),v(o,c),h[r].m(o,null),v(t,u),v(t,d),v(d,M),v(d,L),v(d,m),S[$].m(m,null),f=!0},p(e,t){var n=r;(r=x(t))===n?h[r].p(e,t):(X(),q(()=>{h[n].d(1),h[n]=null}),l.o(1),B(),(l=h[r])||(l=h[r]=w[r](t)).c(),l.i(1),l.m(o,null));var a=$;($=z(t))===a?S[$].p(e,t):(X(),q(()=>{S[a].d(1),S[a]=null}),p.o(1),B(),(p=S[$])||(p=S[$]=b[$](t)).c(),p.i(1),p.m(m,null))},i(e){f||(l&&l.i(),p&&p.i(),f=!0)},o(e){l&&l.o(),p&&p.o(),f=!1},d(e){e&&N(t),h[r].d(),S[$].d(),g()}}}function bt(e,t,n){let a;r(e,he,e=>{n("$store",a=e)});a.dynamicRules.length,a.collections[0];let s=["",""];a.collections.length&&n("dynamicRule",s=["",`/${a.collections[0].slug}/`]);let o=!1;const i=e=>{he.removeDynamicRule(e),he.saveDynamicRules(a.dynamicRules)};return{dynamicRule:s,canAdd:o,handleSubmit:async e=>{e.preventDefault(),await he.saveDynamicRules(a.dynamicRules)},addDynamicRule:e=>{n("canAdd",o=!1),e.preventDefault(),document.activeElement.blur(),s&&s[0]?(he.addDynamicRule(s),n("dynamicRule",s=["",""]),he.saveDynamicRules(a.dynamicRules)):n("canAdd",o=!1)},removeDynamicRule:i,handleInput:e=>{let t=e.target.value;e.target.value=encodeURI(decodeURI(t));let a=e.target.getAttribute("data-add");const s=(t=e.target.value).match(/\/.*?\/\*/g);s&&s[0]===t?(e.target.setCustomValidity(""),a&&n("canAdd",o=!0)):(e.target.setCustomValidity("Invalid field."),a&&n("canAdd",o=!1))},$store:a,input_input_handler:function(){s[0]=this.value,n("dynamicRule",s)},select_change_handler:function(){s[1]=E(this),n("dynamicRule",s)},input_input_handler_1:function({dynamicRule:e,each_value:t,index:n}){t[n][0]=this.value},select_change_handler_1:function({dynamicRule:e,each_value:t,index:n}){t[n][1]=E(this)},click_handler:function({index:e}){return i(e)}}}class St extends se{constructor(e){super(),ae(this,e,bt,Ct,c,[])}}function Dt(e){var t,n,a=new Mt({}),s=new St({});return{c(){a.$$.fragment.c(),t=T(),s.$$.fragment.c()},m(e,o){te(a,e,o),y(e,t,o),te(s,e,o),n=!0},i(e){n||(a.$$.fragment.i(e),s.$$.fragment.i(e),n=!0)},o(e){a.$$.fragment.o(e),s.$$.fragment.o(e),n=!1},d(e){a.$destroy(e),e&&N(t),s.$destroy(e)}}}function zt(e){var t,n=new Xe({props:{$$slots:{default:[Dt]},$$scope:{ctx:e}}});return{c(){n.$$.fragment.c()},m(e,a){te(n,e,a),t=!0},p(e,t){var a={};e.$$scope&&(a.$$scope={changed:e,ctx:t}),n.$set(a)},i(e){t||(n.$$.fragment.i(e),t=!0)},o(e){n.$$.fragment.o(e),t=!1},d(e){n.$destroy(e)}}}class Et extends se{constructor(e){super(),ae(this,e,null,zt,c,[])}}function It(e,{delay:t=0,duration:n=400}){const a=+getComputedStyle(e).opacity;return{delay:t,duration:n,css:e=>`opacity: ${e*a}`}}function Ot(t){var n,a,s,i,c,r,l,u,d,M,L,m,$,p,f,g,w;return{c(){n=j("div"),a=j("div"),s=j("div"),(i=j("div")).textContent="Do you want to remove all the Webflow Pages?",c=T(),(r=j("a")).textContent="X",l=T(),u=j("div"),(d=j("p")).textContent="Are you sure you want to remove all your Webflow Settings?",M=T(),L=j("div"),(m=j("button")).textContent="Cancel",$=T(),(p=j("button")).textContent="Confirm",r.className="svelte-j6cw5o",s.className="modal-header svelte-j6cw5o",m.className="modal-button grey svelte-j6cw5o",p.className="modal-button red svelte-j6cw5o",L.className="modal-actions svelte-j6cw5o",u.className="modal-content svelte-j6cw5o",a.className="modal svelte-j6cw5o",n.className="modal-wrapper svelte-j6cw5o",w=[C(r,"click",t.closeModal),C(m,"click",t.closeModal),C(p,"click",t.acceptModal)]},m(e,t){y(e,n,t),v(n,a),v(a,s),v(s,i),v(s,c),v(s,r),v(a,l),v(a,u),v(u,d),v(u,M),v(u,L),v(L,m),v(L,$),v(L,p),g=!0},p:e,i(e){g||(J(()=>{f||(f=ee(a,It,{},!0)),f.run(1)}),g=!0)},o(e){f||(f=ee(a,It,{},!1)),f.run(0),g=!1},d(e){e&&(N(n),f&&f.end()),o(w)}}}function _t(e){var t,n,a,s,o,i,c,r,l,u=new De({props:{value:e.$removeTokenStore.value,disabled:e.$removeTokenStore.disabled,variation:"red"}}),d=e.$modalStore.open&&Ot(e);return{c(){(t=j("h4")).textContent="Remove Website",n=T(),(a=j("p")).textContent="Disconnect your Webflow project from your WordPress site.",s=T(),o=j("form"),u.$$.fragment.c(),i=T(),d&&d.c(),c=x(),a.className="description-subtitle",l=C(o,"submit",e.handleRemoveToken)},m(e,l){y(e,t,l),y(e,n,l),y(e,a,l),y(e,s,l),y(e,o,l),te(u,o,null),y(e,i,l),d&&d.m(e,l),y(e,c,l),r=!0},p(e,t){var n={};e.$removeTokenStore&&(n.value=t.$removeTokenStore.value),e.$removeTokenStore&&(n.disabled=t.$removeTokenStore.disabled),u.$set(n),t.$modalStore.open?d?(d.p(e,t),d.i(1)):((d=Ot(t)).c(),d.i(1),d.m(c.parentNode,c)):d&&(X(),q(()=>{d.d(1),d=null}),d.o(1),B())},i(e){r||(u.$$.fragment.i(e),d&&d.i(),r=!0)},o(e){u.$$.fragment.o(e),d&&d.o(),r=!1},d(e){e&&(N(t),N(n),N(a),N(s),N(o)),u.$destroy(),e&&N(i),d&&d.d(e),e&&N(c),l()}}}function kt(e,t,n){let a,s;const o=oe({disabled:!1,value:"Reset"});r(e,o,e=>{n("$removeTokenStore",a=e)});const i=oe({open:!1});r(e,i,e=>{n("$modalStore",s=e)});const c=()=>new Promise(e=>{i.set({open:!0}),document.body.addEventListener("webflow-modal-remove-token",t=>{i.set({open:!1}),e(t.detail)},{once:!0})});return{removeTokenStore:o,modalStore:i,handleRemoveToken:async e=>{e.preventDefault(),await c()&&(o.set({disabled:!0,value:"Wait..."}),await he.removeToken(),o.set({disabled:!1,value:"Reset"}))},closeModal:e=>{e.preventDefault(),document.body.dispatchEvent(new CustomEvent("webflow-modal-remove-token",{detail:!1}))},acceptModal:e=>{e.preventDefault(),document.body.dispatchEvent(new CustomEvent("webflow-modal-remove-token",{detail:!0}))},$removeTokenStore:a,$modalStore:s}}class Yt extends se{constructor(e){super(),ae(this,e,kt,_t,c,[])}}function Rt(e){var t,n,a,s,o,i,c,r=new De({props:{value:e.$invalidateCacheStore.value,disabled:e.$invalidateCacheStore.disabled,variation:"black"}});return{c(){(t=j("h4")).textContent="Invalidate Cache",n=T(),(a=j("p")).textContent="Deletes your WordPress site's cache, which can be helpful with debugging.",s=T(),o=j("form"),r.$$.fragment.c(),a.className="description-subtitle",c=C(o,"submit",e.handleInvalidateCache)},m(e,c){y(e,t,c),y(e,n,c),y(e,a,c),y(e,s,c),y(e,o,c),te(r,o,null),i=!0},p(e,t){var n={};e.$invalidateCacheStore&&(n.value=t.$invalidateCacheStore.value),e.$invalidateCacheStore&&(n.disabled=t.$invalidateCacheStore.disabled),r.$set(n)},i(e){i||(r.$$.fragment.i(e),i=!0)},o(e){r.$$.fragment.o(e),i=!1},d(e){e&&(N(t),N(n),N(a),N(s),N(o)),r.$destroy(),c()}}}function At(e,t,n){let a;const s=oe({disabled:!1,value:"Invalidate Cache"});r(e,s,e=>{n("$invalidateCacheStore",a=e)});return{invalidateCacheStore:s,handleInvalidateCache:async e=>{e.preventDefault(),s.set({disabled:!0,value:"Wait..."}),await he.invalidateCache(),s.set({disabled:!1,value:"Invalidate Cache"})},$invalidateCacheStore:a}}class Ut extends se{constructor(e){super(),ae(this,e,At,Rt,c,[])}}function Qt(e){var t,n,a,s,o,i,c,r=new De({props:{value:e.$preloadCacheStore.value,disabled:e.$preloadCacheStore.disabled,variation:"black"}});return{c(){(t=j("h4")).textContent="Preload static page cache",n=T(),(a=j("p")).textContent="Preload your static page cache to help pages load faster.",s=T(),o=j("form"),r.$$.fragment.c(),a.className="description-subtitle",c=C(o,"submit",e.handlePreloadCache)},m(e,c){y(e,t,c),y(e,n,c),y(e,a,c),y(e,s,c),y(e,o,c),te(r,o,null),i=!0},p(e,t){var n={};e.$preloadCacheStore&&(n.value=t.$preloadCacheStore.value),e.$preloadCacheStore&&(n.disabled=t.$preloadCacheStore.disabled),r.$set(n)},i(e){i||(r.$$.fragment.i(e),i=!0)},o(e){r.$$.fragment.o(e),i=!1},d(e){e&&(N(t),N(n),N(a),N(s),N(o)),r.$destroy(),c()}}}function Wt(e,t,n){let a;const s=oe({disabled:!1,value:"Preload Cache"});r(e,s,e=>{n("$preloadCacheStore",a=e)});return{preloadCacheStore:s,handlePreloadCache:async e=>{e.preventDefault(),s.set({disabled:!0,value:"Wait..."}),await he.preloadCache(),s.set({disabled:!1,value:"Preload Cache"})},$preloadCacheStore:a}}class Pt extends se{constructor(e){super(),ae(this,e,Wt,Qt,c,[])}}function Ht(e,t,n){const a=Object.create(e);return a.option=t[n],a}function Jt(e){var t,n,a=e.option.name;return{c(){t=j("option"),n=h(a),t.__value=e.option.value,t.value=t.__value},m(e,a){y(e,t,a),v(t,n)},p(e,n){t.value=t.__value},d(e){e&&N(t)}}}function Gt(e){for(var t,n,a,s,i,c,r,l,u,d=e.options,M=[],L=0;L<d.length;L+=1)M[L]=Jt(Ht(e,d,L));var m=new De({props:{value:e.$localStore.value,disabled:e.$localStore.disabled,variation:"small"}});return{c(){(t=j("h4")).textContent="Cache Duration",n=T(),(a=j("p")).textContent="Define how long your site caches your Webflow pages. Cached pages load faster.",s=T(),i=j("form"),c=j("select");for(var o=0;o<M.length;o+=1)M[o].c();r=T(),m.$$.fragment.c(),a.className="description-subtitle",void 0===e.val&&J(()=>e.select_change_handler.call(c)),c.className="field-select svelte-24m7xe",i.className="svelte-24m7xe",u=[C(c,"change",e.select_change_handler),C(i,"submit",e.handleSubmit)]},m(o,u){y(o,t,u),y(o,n,u),y(o,a,u),y(o,s,u),y(o,i,u),v(i,c);for(var d=0;d<M.length;d+=1)M[d].m(c,null);z(c,e.val),v(i,r),te(m,i,null),l=!0},p(e,t){if(e.options){d=t.options;for(var n=0;n<d.length;n+=1){const a=Ht(t,d,n);M[n]?M[n].p(e,a):(M[n]=Jt(a),M[n].c(),M[n].m(c,null))}for(;n<M.length;n+=1)M[n].d(1);M.length=d.length}e.val&&z(c,t.val);var a={};e.$localStore&&(a.value=t.$localStore.value),e.$localStore&&(a.disabled=t.$localStore.disabled),m.$set(a)},i(e){l||(m.$$.fragment.i(e),l=!0)},o(e){m.$$.fragment.o(e),l=!1},d(e){e&&(N(t),N(n),N(a),N(s),N(i)),w(M,e),m.$destroy(),o(u)}}}function Zt(e,t,n){let a,s;r(e,he,e=>{n("$store",a=e)});const o=oe({disabled:!1,value:"Save"});r(e,o,e=>{n("$localStore",s=e)});let i=a.cacheDuration;const c=[{value:"0",name:"As long as possible"},{value:"60",name:"1 minute"},{value:"300",name:"5 minutes"},{value:"900",name:"15 minutes"},{value:"3600",name:"1 hour"},{value:"86400",name:"1 day"}];return{localStore:o,val:i,options:c,handleSubmit:async e=>{e.preventDefault(),o.set({disabled:!0,value:"Wait..."}),await he.changeCache(i),o.set({disabled:!1,value:"Save"})},$localStore:s,select_change_handler:function(){i=E(this),n("val",i),n("options",c)}}}class Vt extends se{constructor(e){super(),ae(this,e,Zt,Gt,c,[])}}function Kt(t){var n,a,s,o,i,c,r,l,u=t.$store.site.name;return{c(){n=j("div"),a=j("a"),s=j("img"),i=T(),c=j("h3"),r=h(u),s.src=o=t.$store.site.previewUrl,s.alt="site preview",s.className="svelte-oui6fo",a.href=l=t.$store.site.dashboardUrl,a.target="_blank",a.className="svelte-oui6fo"},m(e,t){y(e,n,t),v(n,a),v(a,s),v(a,i),v(a,c),v(c,r)},p(e,t){e.$store&&o!==(o=t.$store.site.previewUrl)&&(s.src=o),e.$store&&u!==(u=t.$store.site.name)&&S(r,u),e.$store&&l!==(l=t.$store.site.dashboardUrl)&&(a.href=l)},i:e,o:e,d(e){e&&N(n)}}}function Ft(e,t,n){let a;return r(e,he,e=>{n("$store",a=e)}),{$store:a}}class Xt extends se{constructor(e){super(),ae(this,e,Ft,Kt,c,[])}}function Bt(e){var t,n,a,s,o,i,c,r,l,u,d,M,L,m,$,p=new Vt({}),f=new Ut({}),g=new Pt({}),w=new Yt({}),h=new Xt({});return{c(){t=j("div"),(n=j("p")).innerHTML="These advanced settings control how your site loads your Webflow pages. <br>For the most part, you shouldn't need to mess with them.",a=T(),p.$$.fragment.c(),s=T(),o=j("hr"),i=T(),f.$$.fragment.c(),c=T(),r=j("hr"),l=T(),g.$$.fragment.c(),u=T(),d=j("hr"),M=T(),w.$$.fragment.c(),L=T(),m=j("div"),h.$$.fragment.c(),n.className="svelte-1nnj8oz",o.className="svelte-1nnj8oz",r.className="svelte-1nnj8oz",d.className="svelte-1nnj8oz",t.className="actions-container svelte-1nnj8oz",m.className="site-container svelte-1nnj8oz"},m(e,N){y(e,t,N),v(t,n),v(t,a),te(p,t,null),v(t,s),v(t,o),v(t,i),te(f,t,null),v(t,c),v(t,r),v(t,l),te(g,t,null),v(t,u),v(t,d),v(t,M),te(w,t,null),y(e,L,N),y(e,m,N),te(h,m,null),$=!0},i(e){$||(p.$$.fragment.i(e),f.$$.fragment.i(e),g.$$.fragment.i(e),w.$$.fragment.i(e),h.$$.fragment.i(e),$=!0)},o(e){p.$$.fragment.o(e),f.$$.fragment.o(e),g.$$.fragment.o(e),w.$$.fragment.o(e),h.$$.fragment.o(e),$=!1},d(e){e&&N(t),p.$destroy(),f.$destroy(),g.$destroy(),w.$destroy(),e&&(N(L),N(m)),h.$destroy()}}}function qt(e){var t,n=new Xe({props:{$$slots:{default:[Bt]},$$scope:{ctx:e}}});return{c(){n.$$.fragment.c()},m(e,a){te(n,e,a),t=!0},p(e,t){var a={};e.$$scope&&(a.$$scope={changed:e,ctx:t}),n.$set(a)},i(e){t||(n.$$.fragment.i(e),t=!0)},o(e){n.$$.fragment.o(e),t=!1},d(e){n.$destroy(e)}}}class en extends se{constructor(e){super(),ae(this,e,null,qt,c,[])}}function tn(e){var t,n,a,s,o,i,c=e.$notifications.currentNotification.message;return{c(){t=j("div"),n=j("p"),a=h(c),n.className="svelte-1mpfn9l",t.style.cssText=s="success"==e.$notifications.currentNotification.type?"background-color: #38D996":"background-color:  #FF6382",t.className="svelte-1mpfn9l"},m(e,s){y(e,t,s),v(t,n),v(n,a),i=!0},p(e,n){i&&!e.$notifications||c===(c=n.$notifications.currentNotification.message)||S(a,c),i&&!e.$notifications||s===(s="success"==n.$notifications.currentNotification.type?"background-color: #38D996":"background-color:  #FF6382")||(t.style.cssText=s)},i(e){i||(J(()=>{o||(o=ee(t,It,{},!0)),o.run(1)}),i=!0)},o(e){o||(o=ee(t,It,{},!1)),o.run(0),i=!1},d(e){e&&(N(t),o&&o.end())}}}function nn(e){var t,n,a=e.$notifications.currentNotification&&tn(e);return{c(){a&&a.c(),t=x()},m(e,s){a&&a.m(e,s),y(e,t,s),n=!0},p(e,n){n.$notifications.currentNotification?a?(a.p(e,n),a.i(1)):((a=tn(n)).c(),a.i(1),a.m(t.parentNode,t)):a&&(X(),q(()=>{a.d(1),a=null}),a.o(1),B())},i(e){n||(a&&a.i(),n=!0)},o(e){a&&a.o(),n=!1},d(e){a&&a.d(e),e&&N(t)}}}function an(e,t,n){let a;return r(e,me,e=>{n("$notifications",a=e)}),{$notifications:a}}class sn extends se{constructor(e){super(),ae(this,e,an,nn,c,[])}}function on(t){var n;return{c(){(n=j("div")).innerHTML='<a href="https://university.webflow.com/" target="_blank" rel="nofollow" class="svelte-19prbqe">Need support?</a>',n.className="footer svelte-19prbqe"},m(e,t){y(e,n,t)},p:e,i:e,o:e,d(e){e&&N(n)}}}class cn extends se{constructor(e){super(),ae(this,e,null,on,c,[])}}function rn(e){var t,n,a,s,o,i=new Me({props:{path:"/login",component:Ae}}),c=new Me({props:{path:"/configuration",component:Et}}),r=new Me({props:{path:"/settings",component:en}}),l=new sn({}),u=new cn({});return{c(){i.$$.fragment.c(),t=T(),c.$$.fragment.c(),n=T(),r.$$.fragment.c(),a=T(),l.$$.fragment.c(),s=T(),u.$$.fragment.c()},m(e,d){te(i,e,d),y(e,t,d),te(c,e,d),y(e,n,d),te(r,e,d),y(e,a,d),te(l,e,d),y(e,s,d),te(u,e,d),o=!0},p(e,t){var n={};e.LoginPage&&(n.component=Ae),i.$set(n);var a={};e.ConfigurationPage&&(a.component=Et),c.$set(a);var s={};e.UtilsPage&&(s.component=en),r.$set(s)},i(e){o||(i.$$.fragment.i(e),c.$$.fragment.i(e),r.$$.fragment.i(e),l.$$.fragment.i(e),u.$$.fragment.i(e),o=!0)},o(e){i.$$.fragment.o(e),c.$$.fragment.o(e),r.$$.fragment.o(e),l.$$.fragment.o(e),u.$$.fragment.o(e),o=!1},d(e){i.$destroy(e),e&&N(t),c.$destroy(e),e&&N(n),r.$destroy(e),e&&N(a),l.$destroy(e),e&&N(s),u.$destroy(e)}}}const ln=window._wfAjaxData;new class extends se{constructor(e){super(),ae(this,e,null,rn,c,[])}}({target:document.getElementById("webflow-dashboard-root"),data:ln})}();
     1!function(){"use strict";function e(){}const t=e=>e;function n(e,t){for(const n in t)e[n]=t[n];return e}function a(e){return e()}function s(){return Object.create(null)}function o(e){e.forEach(a)}function i(e){return"function"==typeof e}function c(e,t){return e!=e?t==t:e!==t||e&&"object"==typeof e||"function"==typeof e}function r(e,t,n){const a=t.subscribe(n);e.$$.on_destroy.push(a.unsubscribe?()=>a.unsubscribe():a)}function l(e,t,n){if(e){const a=u(e,t,n);return e[0](a)}}function u(e,t,a){return e[1]?n({},n(t.$$scope.ctx,e[1](a?a(t):{}))):t.$$scope.ctx}function d(e,t,a,s){return e[1]?n({},n(t.$$scope.changed||{},e[1](s?s(a):{}))):t.$$scope.changed||{}}const m="undefined"!=typeof window;let L=m?()=>window.performance.now():()=>Date.now(),$=m?requestAnimationFrame:e;const M=new Set;let f,g=!1;function p(){M.forEach(e=>{e[0](L())||(M.delete(e),e[1]())}),(g=M.size>0)&&$(p)}function v(e,t){e.appendChild(t)}function N(e,t,n){e.insertBefore(t,n||null)}function y(e){e.parentNode.removeChild(e)}function j(e,t){for(let n=0;n<e.length;n+=1)e[n]&&e[n].d(t)}function h(e){return document.createElement(e)}function w(e){return document.createTextNode(e)}function C(){return w(" ")}function T(){return w("")}function x(e,t,n,a){return e.addEventListener(t,n,a),()=>e.removeEventListener(t,n,a)}function D(e,t,n){null==n?e.removeAttribute(t):e.setAttribute(t,n)}function S(e,t){t=""+t,e.data!==t&&(e.data=t)}function b(e,t,n){e.style.setProperty(t,n)}function E(e,t){for(let n=0;n<e.options.length;n+=1){const a=e.options[n];if(a.__value===t)return void(a.selected=!0)}}function k(e){const t=e.querySelector(":checked")||e.options[0];return t&&t.__value}let I,z=0,O={};function Q(e,t,n,a,s,o,i,c=0){const r=16.666/a;let l="{\n";for(let e=0;e<=1;e+=r){const a=t+(n-t)*o(e);l+=100*e+`%{${i(a,1-a)}}\n`}const u=l+`100% {${i(n,1-n)}}\n}`,d=`__svelte_${function(e){let t=5381,n=e.length;for(;n--;)t=(t<<5)-t^e.charCodeAt(n);return t>>>0}(u)}_${c}`;if(!O[d]){if(!f){const e=h("style");document.head.appendChild(e),f=e.sheet}O[d]=!0,f.insertRule(`@keyframes ${d} ${u}`,f.cssRules.length)}const m=e.style.animation||"";return e.style.animation=`${m?`${m}, `:""}${d} ${a}ms linear ${s}ms 1 both`,z+=1,d}function _(e,t){e.style.animation=(e.style.animation||"").split(", ").filter(t?e=>e.indexOf(t)<0:e=>-1===e.indexOf("__svelte")).join(", "),t&&!--z&&$(()=>{if(z)return;let e=f.cssRules.length;for(;e--;)f.deleteRule(e);O={}})}function Y(e){I=e}const R=[],A=Promise.resolve();let U=!1;const J=[],P=[],W=[];function G(e){P.push(e)}function H(){const e=new Set;do{for(;R.length;){const e=R.shift();Y(e),F(e.$$)}for(;J.length;)J.shift()();for(;P.length;){const t=P.pop();e.has(t)||(t(),e.add(t))}}while(R.length);for(;W.length;)W.pop()();U=!1}function F(e){e.fragment&&(e.update(e.dirty),o(e.before_render),e.fragment.p(e.dirty,e.ctx),e.dirty=null,e.after_render.forEach(G))}let Z,X;function B(e,t,n){e.dispatchEvent(function(e,t){const n=document.createEvent("CustomEvent");return n.initCustomEvent(e,!1,!1,t),n}(`${t?"intro":"outro"}${n}`))}function q(){X={remaining:0,callbacks:[]}}function V(){X.remaining||o(X.callbacks)}function K(e){X.callbacks.push(e)}function ee(n,a,s,i){let c=a(n,s),r=i?0:1,l=null,u=null,d=null;function m(){d&&_(n,d)}function f(e,t){const n=e.b-r;return t*=Math.abs(n),{a:r,b:e.b,d:n,duration:t,start:e.start,end:e.start+t,group:e.group}}function v(a){const{delay:s=0,duration:i=300,easing:v=t,tick:N=e,css:y}=c,j={start:L()+s,b:a};a||(j.group=X,X.remaining+=1),l?u=j:(y&&(m(),d=Q(n,r,a,i,s,v,y)),a&&N(0,1),l=f(j,i),G(()=>B(n,a,"start")),function(e){let t;g||(g=!0,$(p)),new Promise(n=>{M.add(t=[e,n])})}(e=>{if(u&&e>u.start&&(l=f(u,i),u=null,B(n,l.b,"start"),y&&(m(),d=Q(n,r,l.b,l.duration,0,v,c.css))),l)if(e>=l.end)N(r=l.b,1-r),B(n,l.b,"end"),u||(l.b?m():--l.group.remaining||o(l.group.callbacks)),l=null;else if(e>=l.start){const t=e-l.start;r=l.a+l.d*v(t/l.duration),N(r,1-r)}return!(!l&&!u)}))}return{run(e){"function"==typeof c?(Z||(Z=Promise.resolve()).then(()=>{Z=null}),Z).then(()=>{c=c(),v(e)}):v(e)},end(){m(),l=u=null}}}function te(e,t,n){const{fragment:s,on_mount:c,on_destroy:r,after_render:l}=e.$$;s.m(t,n),G(()=>{const t=c.map(a).filter(i);r?r.push(...t):o(t),e.$$.on_mount=[]}),l.forEach(G)}function ne(e,t){e.$$.dirty||(R.push(e),U||(U=!0,A.then(H)),e.$$.dirty=s()),e.$$.dirty[t]=!0}function ae(t,n,a,i,c,r){const l=I;Y(t);const u=n.props||{},d=t.$$={fragment:null,ctx:null,props:r,update:e,not_equal:c,bound:s(),on_mount:[],on_destroy:[],before_render:[],after_render:[],context:new Map(l?l.$$.context:[]),callbacks:s(),dirty:null};let m=!1;var L;d.ctx=a?a(t,u,(e,n)=>{d.ctx&&c(d.ctx[e],d.ctx[e]=n)&&(d.bound[e]&&d.bound[e](n),m&&ne(t,e))}):u,d.update(),m=!0,o(d.before_render),d.fragment=i(d.ctx),n.target&&(n.hydrate?d.fragment.l((L=n.target,Array.from(L.childNodes))):d.fragment.c(),n.intro&&t.$$.fragment.i&&t.$$.fragment.i(),te(t,n.target,n.anchor),H()),Y(l)}class se{$destroy(){var t,n;n=!0,(t=this).$$&&(o(t.$$.on_destroy),t.$$.fragment.d(n),t.$$.on_destroy=t.$$.fragment=null,t.$$.ctx={}),this.$destroy=e}$on(e,t){const n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}$set(){}}function oe(t,n=e){let a;const s=[];function o(e){if(c(t,e)){if(t=e,!a)return;s.forEach(e=>e[1]()),s.forEach(e=>e[0](t))}}return{set:o,update:function(e){o(e(t))},subscribe:function(i,c=e){const r=[i,c];return s.push(r),1===s.length&&(a=n(o)||e),i(t),()=>{const e=s.indexOf(r);-1!==e&&s.splice(e,1),0===s.length&&a()}}}}function ie(t,n,a){const s=!Array.isArray(t),c=s?[t]:t,r=n.length<2;return{subscribe:oe(a,t=>{let a=!1;const l=[];let u=0,d=e;const m=()=>{if(u)return;d();const a=n(s?l[0]:l,t);r?t(a):d=i(a)?a:e},L=c.map((e,t)=>e.subscribe(e=>{l[t]=e,u&=~(1<<t),a&&m()},()=>{u|=1<<t}));return a=!0,m(),function(){o(L),d()}}).subscribe}}const ce=function(){const{subscribe:e,set:t}=oe({path:"/",params:{}});return{subscribe:e,goTo:(e,n={})=>t({path:e,params:n})}}(),re=e=>ie(ce,t=>t.path===e);function le(e){var t,n,a=e.component;if(a)var s=new a({});return{c(){s&&s.$$.fragment.c(),t=T()},m(e,a){s&&te(s,e,a),N(e,t,a),n=!0},p(e,n){if(a!==(a=n.component)){if(s){q();const e=s;K(()=>{e.$destroy()}),e.$$.fragment.o(1),V()}a?((s=new a({})).$$.fragment.c(),s.$$.fragment.i(1),te(s,t.parentNode,t)):s=null}},i(e){n||(s&&s.$$.fragment.i(e),n=!0)},o(e){s&&s.$$.fragment.o(e),n=!1},d(e){e&&y(t),s&&s.$destroy(e)}}}function ue(e){var t,n,a=e.$isActive&&le(e);return{c(){a&&a.c(),t=T()},m(e,s){a&&a.m(e,s),N(e,t,s),n=!0},p(e,n){n.$isActive?a?(a.p(e,n),a.i(1)):((a=le(n)).c(),a.i(1),a.m(t.parentNode,t)):a&&(q(),K(()=>{a.d(1),a=null}),a.o(1),V())},i(e){n||(a&&a.i(),n=!0)},o(e){a&&a.o(),n=!1},d(e){a&&a.d(e),e&&y(t)}}}function de(e,t,n){let a,{component:s,path:o}=t;const i=re(o);return r(e,i,e=>{n("$isActive",a=e)}),e.$set=(e=>{"component"in e&&n("component",s=e.component),"path"in e&&n("path",o=e.path)}),{component:s,path:o,isActive:i,$isActive:a}}class me extends se{constructor(e){super(),ae(this,e,de,ue,c,["component","path"])}}function Le(e={}){const{action:t,nonce:n,nonceField:a,data:s,method:o,credentials:i,url:c}=e;if(!t)throw new TypeError("Cannot make ajax call without action");if(!n)throw new TypeError("Cannot make ajax call without nonce");if(s&&"object"!=typeof s)throw new TypeError("Data to send must be an object");if(!c&&!window.ajaxurl)throw new TypeError("Cannot make ajax call without url");let r=new FormData;if(r.append("action",t),r.append(a||"security",n),s)for(let e in s)r.append(e,s[e]);return fetch(c||window.ajaxurl,{method:o||"POST",body:r,credentials:i||"same-origin"})}const $e=function(){const{subscribe:e,update:t}=oe({currentNotification:null});return{subscribe:e,addNotification:(e,n="success")=>{t(t=>(t.currentNotification={message:e,type:n},{...t})),setTimeout(()=>{t(e=>(e.currentNotification=null,{...e}))},5e3)}}}(),{hasToken:Me,nonce:fe,pages:ge,collections:pe,site:ve,staticRules:Ne,dynamicRules:ye,error:je,cacheDuration:he}=window._wfAjaxData;ve&&(ve.dashboardUrl=`https://webflow.com/dashboard/sites/${ve.shortName}/settings`),je?(ce.goTo("/login"),$e.addNotification(je,"error")):"true"===Me?ce.goTo("/configuration"):ce.goTo("/login");const we=function(){const{subscribe:e,set:t,update:n}=oe({pages:ge||[],collections:pe||[],site:ve||void 0,staticRules:Ne||[],dynamicRules:ye||[],cacheDuration:he||0});return{subscribe:e,saveToken:async e=>{try{const n=await Le({nonce:fe,data:{token:e},action:"check_wf_token"});if("v2"!=(await n.json()).data.version)return void $e.addNotification("The token you used is invalid, be sure to create a V2 token with cms and site read permissions","error");const a=await Le({nonce:fe,data:{token:e},action:"save_wf_token"}),s=await a.json();s.success||$e.addNotification(s.data.error||"Invalid Token","error");const o=await Le({nonce:fe,action:"get_wf_site_data"});let i=await o.json();if(i.success)t({pages:i.data.pages||[],collections:i.data.collections||[],site:i.data.site,staticRules:i.data.staticRules||[],dynamicRules:i.data.dynamicRules||[]}),$e.addNotification("Token Saved Successfully"),ce.goTo("/configuration");else{let e="Invalid token";Array.isArray(i.data)&&i.data[0].message?e=i.data[0].message:i.data.error&&(e=i.data.error),$e.addNotification(e||"Invalid Token","error")}}catch(e){const t={code:e.code||"500",message:e.message||"Cannot save api token, please try again later"};$e.addNotification(t.message,"error")}},removeToken:async()=>{try{await Le({nonce:fe,action:"remove_wf_token"}),$e.addNotification("Token removed successfully"),window.location.reload()}catch(e){const t={code:e.code||"500",message:e.message||"Cannot remove token, please try again later"};$e.addNotification(t.message,"error")}},removeTokenAndData:async()=>{try{await Le({nonce:fe,action:"remove_wf_token_and_data"}),$e.addNotification("Token removed successfully"),window.location.reload()}catch(e){const t={code:e.code||"500",message:e.message||"Cannot remove token, please try again later"};$e.addNotification(t.message,"error")}},addStaticRule:e=>{n(t=>(t.staticRules.push(e),{...t}))},removeStaticRule:e=>{n(t=>(t.staticRules.splice(e,1),{...t}))},addDynamicRule:e=>{n(t=>(t.dynamicRules.push(e),{...t}))},removeDynamicRule:e=>{n(t=>(t.dynamicRules.splice(e,1),{...t}))},saveStaticRules:async e=>{try{const t=await Le({action:"save_wf_static_rules",nonce:fe,data:{rules:JSON.stringify(e)}}),a=await t.json();if(a.success){const e=a.data;return n(t=>(t.staticRules=e,{...t})),$e.addNotification("Rules saved successfully"),!0}{const e=a.data[0]||{code:"500",message:"Internal Server Error"};return $e.addNotification(e.message,"error"),!1}}catch(e){const t={code:e.code||"500",message:e.message||"Cannot save data please, try again later"};return $e.addNotification(t.message,"error"),!1}},saveDynamicRules:async e=>{try{const t=await Le({action:"save_wf_dynamic_rules",nonce:fe,data:{rules:JSON.stringify(e)}}),a=await t.json();if(a.success){const e=a.data;return n(t=>(t.dynamicRules=e,{...t})),$e.addNotification("Rules saved successfully"),!0}{const e=a.data[0]||{code:"500",message:"Internal Server Error"};return $e.addNotification(e.message,"error"),!1}}catch(e){const t={code:e.code||"500",message:e.message||"Cannot save data please, try again later"};return $e.addNotification(t.message,"error"),!1}},invalidateCache:async()=>{try{const e=await Le({action:"invalidate_wf_cache",nonce:fe}),t=await e.json();if(t.success)return $e.addNotification("Cache invalidated successfully"),!0;{const e=t.data[0]||{code:"500",message:"Internal Server Error"};return $e.addNotification(e.message,"error"),!1}}catch(e){const t={code:e.code||"500",message:e.message||"Cannot save data please, try again later"};return $e.addNotification(t.message,"error"),!1}},changeCache:async e=>{try{const t=await Le({action:"change_wf_cache_duration",nonce:fe,data:{duration:e}}),n=await t.json();if(n.success)return $e.addNotification("Cache settings changed successfully"),!0;{const e=n.data[0]||{code:"500",message:"Internal Server Error"};return $e.addNotification(e.message,"error"),!1}}catch(e){const t={code:e.code||"500",message:e.message||"Cannot save data please, try again later"};return $e.addNotification(t.message,"error"),!1}},preloadCache:async()=>{try{const e=await Le({action:"preload_wf_cache",nonce:fe}),t=await e.json();if(t.success){const e=t.data||0;return $e.addNotification(`Preloaded ${e} ${1==e?"page":"pages"}!`),!0}{const e=t.data[0]||{code:"500",message:"Internal Server Error"};return $e.addNotification(e.message,"error"),!1}}catch(e){const t={code:e.code||"500",message:e.message||"Cannot save data please, try again later"};return $e.addNotification(t.message,"error"),!1}}}}();function Ce(e){var t,n;const a=e.$$slots.default,s=l(a,e,null);return{c(){t=h("div"),s&&s.c(),t.className="svelte-1tca3kp"},l(e){s&&s.l(div_nodes)},m(e,a){N(e,t,a),s&&s.m(t,null),n=!0},p(e,t){s&&s.p&&e.$$scope&&s.p(d(a,t,e,null),u(a,t,null))},i(e){n||(s&&s.i&&s.i(e),n=!0)},o(e){s&&s.o&&s.o(e),n=!1},d(e){e&&y(t),s&&s.d(e)}}}function Te(e,t,n){let{$$slots:a={},$$scope:s}=t;return e.$set=(e=>{"$$scope"in e&&n("$$scope",s=e.$$scope)}),{$$slots:a,$$scope:s}}class xe extends se{constructor(e){super(),ae(this,e,Te,Ce,c,[])}}function De(t){var n;return{c(){D(n=h("input"),"type","submit"),n.value=t.value,n.className="form_submit-button svelte-eb2c7g",D(n,"variation",t.variation),n.disabled=t.disabled},m(e,t){N(e,n,t)},p(e,t){e.value&&(n.value=t.value),e.variation&&D(n,"variation",t.variation),e.disabled&&(n.disabled=t.disabled)},i:e,o:e,d(e){e&&y(n)}}}function Se(e,t,n){let{value:a="Submit",disabled:s=!1,variation:o=null}=t;return e.$set=(e=>{"value"in e&&n("value",a=e.value),"disabled"in e&&n("disabled",s=e.disabled),"variation"in e&&n("variation",o=e.variation)}),{value:a,disabled:s,variation:o}}class be extends se{constructor(e){super(),ae(this,e,Se,De,c,["value","disabled","variation"])}}function Ee(e){var t,n;const a=e.$$slots.default,s=l(a,e,null);return{c(){t=h("label"),s&&s.c(),t.className="field_label svelte-mat9s6",t.htmlFor=e.forHtml},l(e){s&&s.l(label_nodes)},m(e,a){N(e,t,a),s&&s.m(t,null),n=!0},p(e,o){s&&s.p&&e.$$scope&&s.p(d(a,o,e,null),u(a,o,null)),n&&!e.forHtml||(t.htmlFor=o.forHtml)},i(e){n||(s&&s.i&&s.i(e),n=!0)},o(e){s&&s.o&&s.o(e),n=!1},d(e){e&&y(t),s&&s.d(e)}}}function ke(e,t,n){let{forHtml:a=""}=t,{$$slots:s={},$$scope:o}=t;return e.$set=(e=>{"forHtml"in e&&n("forHtml",a=e.forHtml),"$$scope"in e&&n("$$scope",o=e.$$scope)}),{forHtml:a,$$slots:s,$$scope:o}}class Ie extends se{constructor(e){super(),ae(this,e,ke,Ee,c,["forHtml"])}}function ze(t){var n;return{c(){(n=h("div")).innerHTML='<img src="data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgdmlld0JveD0iMCAwIDE2NzUuMiAyMjEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDE2NzUuMiAyMjE7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQoJLnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiMxNDZFRjU7fQ0KCS5zdDF7ZmlsbDojMDgwODA4O30NCgkuc3Qye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6IzA4MDgwODt9DQoJLnN0M3tmaWxsOiMxNDZFRjU7fQ0KPC9zdHlsZT4NCjxnPg0KCTxnPg0KCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMzA1LjEsMy40bC05My41LDE4Mi44aC04Ny44bDM5LjEtNzUuN2gtMS44Yy0zMi4zLDQxLjktODAuNCw2OS41LTE0OS4xLDc1Ljd2LTc0LjdjMCwwLDQzLjktMi42LDY5LjctMjkuNw0KCQkJSDEyLjFWMy40aDc4LjN2NjQuNGwxLjgsMGwzMi02NC40aDU5LjJ2NjRsMS44LDBsMzMuMi02NEgzMDUuMXoiLz4NCgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTgxNC45LDE2NmgyNS4yVjIxLjFoLTI1LjJWMTY2eiIvPg0KCQk8cGF0aCBjbGFzcz0ic3QyIiBkPSJNNjc1LjksMTY0LjVjNS41LDIuMywxMS4xLDMuNCwxNi43LDMuNGM5LjQsMCwxNy43LTIuMywyNS4xLTYuOGM3LjQtNC42LDEzLjEtMTAuOCwxNy4yLTE4LjkNCgkJCWM0LjEtOC4xLDYuMS0xNy4yLDYuMS0yNy40cy0yLjEtMTkuNC02LjMtMjcuNGMtNC4yLTguMS0xMC0xNC4zLTE3LjUtMTguOGMtNy41LTQuNS0xNS45LTYuNy0yNS40LTYuN2MtNiwwLTExLjgsMS4yLTE3LjQsMy41DQoJCQljLTUuNSwyLjMtMTAuMiw1LjctMTMuOSwxMGMtMC4zLDAuMy0wLjYsMC43LTAuOCwxVjIxLjJoLTI1LjNWMTY2aDI1LjFsLTAuMS0xMy41YzAuNywwLjgsMS4zLDEuNiwyLjEsMi4zDQoJCQlDNjY1LjYsMTU4LjksNjcwLjQsMTYyLjEsNjc1LjksMTY0LjV6IE03MDEuNywxNDEuMWMtNC4xLDIuNS04LjgsMy44LTE0LjEsMy44Yy01LjIsMC0xMC0xLjMtMTQuNC0zLjkNCgkJCWMtNC40LTIuNi03LjktNi4zLTEwLjQtMTAuOGMtMi41LTQuNi0zLjgtOS43LTMuOC0xNS41Yy0wLjEtNS44LDEuMi0xMSwzLjctMTUuNWMyLjYtNC42LDYuMS04LjIsMTAuNC0xMC43DQoJCQljNC40LTIuNiw5LjItMy45LDE0LjUtMy44YzUuMy0wLjEsMTAsMS4yLDE0LjEsMy43YzQuMiwyLjUsNy40LDYsOS42LDEwLjZjMi4zLDQuNiwzLjQsOS44LDMuNCwxNS43YzAsNS45LTEuMSwxMS4yLTMuNCwxNS43DQoJCQlDNzA5LjEsMTM0LjksNzA1LjksMTM4LjUsNzAxLjcsMTQxLjF6Ii8+DQoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0zNDEuNywyOS45aDI4LjhsMjUuOCw5NC4ybDI3LjQtOTQuMmgyNGwyOS44LDkyLjNsMjQuOC05Mi4zaDI2LjRsLTM5LDEzNmgtMjQuOWwtMzAuMy05MC4yTDQwNi44LDE2NmgtMjUuMQ0KCQkJTDM0MS43LDI5Ljl6Ii8+DQoJCTxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik01NzEuMywxNjguNGMtMTAsMC4xLTE5LjEtMi4yLTI3LjItNi43Yy04LTQuNi0xNC4zLTEwLjktMTguOS0xOC45Yy00LjYtOC4xLTYuOC0xNy4zLTYuOC0yNy42DQoJCQljMC0xMCwyLjMtMTkuMSw3LTI3LjNjNC43LTguMSwxMS0xNC41LDE5LTE5YzgtNC42LDE2LjktNi44LDI2LjgtNi44YzExLjEsMCwyMC44LDIuNSwyOS4xLDcuNGM4LjQsNC45LDE0LjYsMTEuOSwxOC44LDIxDQoJCQljNC4yLDksNS43LDE5LjMsNC41LDMxaC03OS4yYzAuMiw0LjYsMS40LDguOSwzLjUsMTIuN2MyLjMsNC4yLDUuNiw3LjUsOS44LDkuOGM0LjIsMi4zLDguOSwzLjUsMTQsMy41YzMuOS0wLjEsNy42LTAuNywxMS0yDQoJCQljMy40LTEuNCw2LjMtMy4yLDguNi01LjVjMi40LTIuMyw0LjEtNC45LDUuMS03LjhoMjYuNGMtMS42LDcuMS00LjgsMTMuNC05LjYsMTguOWMtNC44LDUuNS0xMC44LDkuOC0xOC4xLDEyLjgNCgkJCUM1ODcuOSwxNjYuOSw1ODAsMTY4LjQsNTcxLjMsMTY4LjR6IE01NDgsOTUuOWMtMS41LDIuNi0yLjUsNS4zLTMuMSw4LjNoNTIuNWMtMC40LTMuOC0xLjUtNy4yLTMuNS0xMC4zDQoJCQljLTIuMi0zLjYtNS4yLTYuNC05LjEtOC40Yy0zLjgtMi04LjEtMy0xMi45LTNjLTUuMSwwLTkuOCwxLjItMTQsMy41QzU1My44LDg4LjQsNTUwLjUsOTEuNiw1NDgsOTUuOXoiLz4NCgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTc1OS42LDY0LjFjMC04LjMsMS45LTE1LjYsNS42LTIyYzMuOC02LjUsOS0xMS41LDE1LjgtMTUuMWM2LjgtMy42LDE0LjgtNS41LDIzLjktNS42djIyLjUNCgkJCWMtNC4zLDAuMS03LjksMS0xMC45LDIuN2MtMywxLjctNS4yLDQuMS02LjgsNy4zYy0xLjUsMi45LTIuMyw2LjQtMi40LDEwLjNoMTkuNnYyMS4zaC0xOS42VjE2NmgtMjUuMlY4NS41aC0xNi4zVjY0LjFINzU5LjZ6Ii8+DQoJCTxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05MDQuMywxNjguMmMtMTAuMywwLTE5LjUtMi4yLTI3LjYtNi43Yy04LjEtNC42LTE0LjQtMTAuOC0xOS0xOC45Yy00LjYtOC4xLTYuOC0xNy4yLTYuOC0yNy40DQoJCQljMC0xMC4zLDIuMy0xOS41LDYuOC0yNy41YzQuNi04LjEsMTEtMTQuNCwxOS0xOC45YzguMS00LjUsMTcuMy02LjcsMjcuNi02LjdjMTAuNCwwLDE5LjYsMi4yLDI3LjcsNi43DQoJCQljOC4yLDQuNSwxNC42LDEwLjgsMTkuMSwxOC45YzQuNiw4LjEsNi45LDE3LjMsNi45LDI3LjZjLTAuMSwxMC4yLTIuNCwxOS40LTYuOSwyNy40Yy00LjUsOC0xMC44LDE0LjMtMTksMTguOQ0KCQkJQzkyMy45LDE2NS45LDkxNC43LDE2OC4yLDkwNC4zLDE2OC4yeiBNOTA0LjMsMTQ1YzUuNCwwLDEwLjItMS4yLDE0LjQtMy43YzQuMi0yLjUsNy40LTYsOS43LTEwLjVjMi4zLTQuNiwzLjQtOS44LDMuNC0xNS42DQoJCQljMC01LjktMS4xLTExLjItMy40LTE1LjdjLTIuMy00LjYtNS41LTguMS05LjctMTAuNWMtNC4yLTIuNS05LTMuOC0xNC40LTMuOGMtNS40LDAtMTAuMSwxLjMtMTQuMywzLjhjLTQuMSwyLjUtNy4zLDYtOS42LDEwLjUNCgkJCWMtMi4zLDQuNi0zLjQsOS44LTMuMywxNS43YzAsNS45LDEuMSwxMS4xLDMuNCwxNS42YzIuMyw0LjUsNS41LDgsOS42LDEwLjVDODk0LjIsMTQzLjcsODk5LDE0NSw5MDQuMywxNDV6Ii8+DQoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik05ODUuNCw2NC4xaC0yOC4xTDk4Ny43LDE2NmgyNC42bDIwLTY1bDIxLjYsNjVoMjQuMmwzMC41LTEwMS44aC0yNS40bC0xNy4zLDYzLjRsLTE5LjEtNjMuNGgtMjQuNmwtMTksNjQuOA0KCQkJTDk4NS40LDY0LjF6Ii8+DQoJPC9nPg0KCTxnPg0KCQk8cGF0aCBjbGFzcz0ic3QzIiBkPSJNMTE0NC43LDE2Ny42VjMwLjNoNDljMTMuOCwwLDI1LDQuMSwzMy43LDEyLjNjOC42LDguMiwxMywxOC44LDEzLDMxLjdjMCwxMy4xLTQuMywyMy43LTEzLDMyDQoJCQljLTguNiw4LjMtMTkuOCwxMi40LTMzLjUsMTIuNGgtMjcuMnY0OC45SDExNDQuN3ogTTExNjYuNiw5OWgyNS4yYzcuNiwwLDEzLjctMi4zLDE4LjQtNi44YzQuNy00LjUsNy0xMC40LDctMTcuNg0KCQkJYzAuMS03LjItMi4zLTEzLjEtNy0xNy41Yy00LjctNC41LTEwLjktNi43LTE4LjYtNi43aC0yNVY5OXoiLz4NCgkJPHBhdGggY2xhc3M9InN0MyIgZD0iTTEyOTMuMiwxNjkuN2MtMTQuNiwwLTI2LjUtNS0zNS44LTE1LjFjLTkuMy0xMC0xNC0yMi45LTEzLjktMzguNWMwLTEwLjMsMi4xLTE5LjUsNi40LTI3LjYNCgkJCWM0LjMtOC4xLDEwLjItMTQuNSwxNy44LTE5YzcuNi00LjUsMTYuMi02LjgsMjUuOS02LjhjNi44LTAuMSwxMy4zLDEuMywxOS41LDQuMXMxMS4xLDYuNiwxNC45LDExLjRWNjVoMjEuMnYxMDIuNmgtMjEuMQ0KCQkJbDAuMS0xNC4yYy00LjIsNS05LjUsOS0xNS44LDExLjlDMTMwNi4xLDE2OC4yLDEyOTkuNywxNjkuNywxMjkzLjIsMTY5Ljd6IE0xMjczLjksOTEuMWMtNS42LDYuNC04LjQsMTQuNy04LjQsMjUNCgkJCWMwLDEwLjMsMi44LDE4LjcsOC40LDI1YzUuNiw2LjQsMTMsOS42LDIyLjIsOS42YzkuMSwwLDE2LjktMy4yLDIzLjMtOS43YzYuNC02LjUsOS42LTE0LjgsOS43LTI0LjljMC0xMC4xLTMuMi0xOC40LTkuNi0yNC45DQoJCQljLTYuNC02LjUtMTQuMi05LjctMjMuNC05LjdDMTI4Ni45LDgxLjUsMTI3OS41LDg0LjcsMTI3My45LDkxLjF6Ii8+DQoJCTxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik0xNDE4LjcsMjEyLjFjLTEzLjIsMC0yNC41LTMuMy0zNC05LjhjLTkuNS02LjUtMTUuMS0xNC45LTE2LjgtMjVoMjMuOGMxLjcsNS4xLDUuMSw5LjEsMTAsMTIuMQ0KCQkJYzQuOSwzLDEwLjgsNC40LDE3LjYsNC40YzguMSwwLDE0LjUtMi4xLDE5LjEtNi40YzQuNi00LjMsNi45LTEwLjMsNi44LTE4LjF2LTE1LjZjLTQuMiw1LTkuNSw5LTE1LjcsMTEuOA0KCQkJYy02LjIsMi44LTEyLjgsNC4yLTE5LjksNC4yYy05LjQsMC0xNy44LTIuMy0yNS4yLTYuOWMtNy40LTQuNi0xMy4yLTEwLjktMTcuMy0xOS4xYy00LjEtOC4yLTYuMi0xNy40LTYuMi0yNy44DQoJCQljMC0xMC4yLDIuMi0xOS40LDYuNi0yNy42YzQuNC04LjIsMTAuMy0xNC41LDE3LjgtMTguOWM3LjUtNC40LDE1LjgtNi43LDI0LjktNi43YzctMC4xLDEzLjUsMS4zLDE5LjUsNC4yDQoJCQljNiwyLjgsMTEuMSw3LDE1LjMsMTIuNFY2NWgyMXYxMDQuMWMwLDEzLjMtNC4yLDIzLjgtMTIuNywzMS41QzE0NDQuOSwyMDguMywxNDMzLjMsMjEyLjEsMTQxOC43LDIxMi4xeiBNMTM4MywxMTYuMQ0KCQkJYzAsOS44LDMsMTgsOC45LDI0LjhjNS45LDYuNywxMy4xLDEwLjEsMjEuNiwxMC4xYzguOCwwLDE2LjUtMy40LDIyLjktMTAuMmM2LjQtNi44LDkuNy0xNSw5LjctMjQuN3MtMy4yLTE3LjktOS42LTI0LjcNCgkJCWMtNi40LTYuNy0xNC0xMC4xLTIyLjctMTAuMWMtOC42LDAtMTUuOSwzLjMtMjEuOSwxMEMxMzg2LDk4LjEsMTM4MywxMDYuMywxMzgzLDExNi4xeiIvPg0KCQk8cGF0aCBjbGFzcz0ic3QzIiBkPSJNMTUzMS4yLDE3MC4yYy0xMC4xLDAtMTkuMy0yLjItMjcuMy02LjdjLTguMS00LjUtMTQuNC0xMC44LTE5LTE5cy02LjktMTcuNS02LjktMjhjMC03LjUsMS40LTE0LjYsNC4yLTIxLjMNCgkJCWMyLjgtNi43LDYuNi0xMi4zLDExLjMtMTcuMWM0LjctNC43LDEwLjQtOC41LDE2LjktMTEuMmM2LjUtMi43LDEzLjUtNC4xLDIwLjgtNC4xYzE2LjYsMC4xLDI5LjksNS42LDM5LjgsMTYuNg0KCQkJYzkuOSwxMSwxNCwyNS4yLDEyLjQsNDIuNUgxNTAwYzAuNCw4LjgsMy42LDE2LDkuNSwyMS42YzUuOSw1LjYsMTMuMiw4LjQsMjEuOCw4LjNjNy0wLjEsMTMuMS0xLjgsMTguMy01LjENCgkJCWM1LjItMy4zLDguNy03LjcsMTAuNS0xMy4xaDIyLjNjLTIuNiwxMC45LTguNSwxOS44LTE3LjgsMjYuNEMxNTU1LjQsMTY2LjgsMTU0NC4yLDE3MC4yLDE1MzEuMiwxNzAuMnogTTE1MDAuNiwxMDYuMmg2MC41DQoJCQljLTAuNy03LjUtMy45LTEzLjUtOS4zLTE4LjJjLTUuNS00LjctMTIuMi03LTIwLjItNy4xYy03LjcsMC0xNC40LDIuMy0yMC4yLDdDMTUwNS42LDkyLjUsMTUwMiw5OC42LDE1MDAuNiwxMDYuMnoiLz4NCgkJPHBhdGggY2xhc3M9InN0MyIgZD0iTTE2NDYuMSw5NS44Yy0wLjctNC43LTIuNi04LjUtNS43LTExLjRjLTMuMS0yLjktNi44LTQuNC0xMS4xLTQuM2MtMy43LDAuMS02LjgsMS4zLTkuMywzLjcNCgkJCWMtMi41LDIuNC0zLjcsNS4zLTMuNyw4LjhjMCw1LjcsMy44LDkuNiwxMS41LDExLjlsMTQuMSw0YzE3LjQsNC45LDI2LjEsMTUsMjUuOSwzMC4yYy0wLjEsOC44LTMuNSwxNi4xLTEwLjIsMjEuOQ0KCQkJYy02LjcsNS44LTE1LjIsOC42LTI1LjQsOC42Yy0xMS40LTAuMS0yMC45LTMuMS0yOC4zLTkuMWMtNy40LTYtMTEuNi0xNC0xMi43LTIzLjloMjEuMmMwLjksNC44LDMuMSw4LjcsNi42LDExLjYNCgkJCXM3LjksNC40LDEzLjEsNC4zYzQuNC0wLjEsNy45LTEuMSwxMC41LTMuMmMyLjctMi4xLDQtNC44LDMuOS04LjJjLTAuMS02LjMtMy44LTEwLjYtMTAuOS0xMi44bC0xMy41LTMuOQ0KCQkJYy05LjItMi43LTE2LTYuNC0yMC40LTExLjJjLTQuNC00LjgtNi42LTEwLjktNi43LTE4LjJjLTAuMS05LDMuMi0xNi41LDkuOS0yMi41YzYuNy02LjEsMTUuMS05LjEsMjUuNC05LjINCgkJCWMxMC4zLDAsMTguOCwzLDI1LjQsOC45YzYuNiw1LjksMTAuNCwxMy45LDExLjMsMjMuOEgxNjQ2LjF6Ii8+DQoJPC9nPg0KPC9nPg0KPC9zdmc+DQo=\n\t\t\t" alt="logo" class="svelte-pg1ssp">',n.className="svelte-pg1ssp"},m(e,t){N(e,n,t)},p:e,i:e,o:e,d(e){e&&y(n)}}}class Oe extends se{constructor(e){super(),ae(this,e,null,ze,c,[])}}function Qe(e){var t,n,a,s,i,c,r,l,u,d,m,L,$,M=new Oe({}),f=new be({props:{value:e.$loginStore.value,disabled:e.$loginStore.disabled}});return{c(){t=h("div"),M.$$.fragment.c(),n=C(),(a=h("b")).textContent="Congratulations on installing the Webflow Wordpress plugin!",s=C(),(i=h("p")).innerHTML='\n\t\t\t      You can find your site\'s API key by going to the <a href="https://webflow.com/dashboard?utm_source=wpplugin" target="_blank" rel="nofollow" class="svelte-1camdh2">Webflow Dashboard</a>.\n\t\t\t    <br>Be sure to generate a <a href="https://developers.webflow.com/data/reference/site-token?utm_source=iterable&utm_medium=email&utm_campaign=developerdeprecationv1sitetoken" class="svelte-1camdh2">V2 Token</a> with at least Sites and CMS read only permissions.\n\t\t\t    ',c=C(),r=h("form"),l=h("input"),u=C(),f.$$.fragment.c(),d=C(),(m=h("div")).innerHTML='\n\t\t\t      This version of the plugin is not compatible with Webflow Ecommerce. Please contact <a href="https://university.webflow.com/contact" target="_blank" rel="nofollow" class="svelte-1camdh2">Webflow Support</a> for any help with the plugin.\n\t\t\t    ',i.className="svelte-1camdh2",l.className="field-input svelte-1camdh2",D(l,"type","password"),l.name="api_keys",l.autocomplete="off",l.placeholder="Your Api Key...",l.required=!0,r.className="svelte-1camdh2",m.className="warning-notice svelte-1camdh2",t.className="login-wrapper svelte-1camdh2",$=[x(l,"input",e.input_input_handler),x(r,"submit",e.handleSubmit)]},m(o,$){N(o,t,$),te(M,t,null),v(t,n),v(t,a),v(t,s),v(t,i),v(t,c),v(t,r),v(r,l),l.value=e.token,v(r,u),te(f,r,null),v(t,d),v(t,m),L=!0},p(e,t){e.token&&(l.value=t.token);var n={};e.$loginStore&&(n.value=t.$loginStore.value),e.$loginStore&&(n.disabled=t.$loginStore.disabled),f.$set(n)},i(e){L||(M.$$.fragment.i(e),f.$$.fragment.i(e),L=!0)},o(e){M.$$.fragment.o(e),f.$$.fragment.o(e),L=!1},d(e){e&&y(t),M.$destroy(),f.$destroy(),o($)}}}function _e(e){var t,n=new xe({props:{$$slots:{default:[Qe]},$$scope:{ctx:e}}});return{c(){n.$$.fragment.c()},m(e,a){te(n,e,a),t=!0},p(e,t){var a={};(e.$$scope||e.$loginStore||e.token)&&(a.$$scope={changed:e,ctx:t}),n.$set(a)},i(e){t||(n.$$.fragment.i(e),t=!0)},o(e){n.$$.fragment.o(e),t=!1},d(e){n.$destroy(e)}}}function Ye(e,t,n){let a;const s=oe({disabled:!1,value:"Add Webflow API Key"});r(e,s,e=>{n("$loginStore",a=e)});let o="";return{loginStore:s,token:o,handleSubmit:async e=>{e.preventDefault(),s.set({disabled:!0,value:"Saving..."}),await we.saveToken(o),s.set({disabled:!1,value:"Add Webflow API Key"})},$loginStore:a,input_input_handler:function(){o=this.value,n("token",o)}}}class Re extends se{constructor(e){super(),ae(this,e,Ye,_e,c,[])}}function Ae(e){var t,n;const a=e.$$slots.default,s=l(a,e,null);return{c(){t=h("div"),s&&s.c(),t.className="navbar-light svelte-1qxftnk"},l(e){s&&s.l(div_nodes)},m(e,a){N(e,t,a),s&&s.m(t,null),n=!0},p(e,t){s&&s.p&&e.$$scope&&s.p(d(a,t,e,null),u(a,t,null))},i(e){n||(s&&s.i&&s.i(e),n=!0)},o(e){s&&s.o&&s.o(e),n=!1},d(e){e&&y(t),s&&s.d(e)}}}function Ue(e,t,n){let{$$slots:a={},$$scope:s}=t;return e.$set=(e=>{"$$scope"in e&&n("$$scope",s=e.$$scope)}),{$$slots:a,$$scope:s}}class Je extends se{constructor(e){super(),ae(this,e,Ue,Ae,c,[])}}function Pe(t){var n,a,s,o;return{c(){n=h("a"),a=w(t.text),n.href="/",n.className=s=(t.$isActive?"is-active":"")+" svelte-1dx6voi",o=x(n,"click",t.handleClick)},m(e,t){N(e,n,t),v(n,a)},p(e,t){e.text&&S(a,t.text),e.$isActive&&s!==(s=(t.$isActive?"is-active":"")+" svelte-1dx6voi")&&(n.className=s)},i:e,o:e,d(e){e&&y(n),o()}}}function We(e,t,n){let a,{path:s,params:o={},text:i=""}=t;const c=re(s);return r(e,c,e=>{n("$isActive",a=e)}),e.$set=(e=>{"path"in e&&n("path",s=e.path),"params"in e&&n("params",o=e.params),"text"in e&&n("text",i=e.text)}),{path:s,params:o,text:i,handleClick:e=>{e.preventDefault(),ce.goTo(s,o)},isActive:c,$isActive:a}}class Ge extends se{constructor(e){super(),ae(this,e,We,Pe,c,["path","params","text"])}}function He(t){var n,a,s=new Ge({props:{path:"/configuration",text:"Pages"}}),o=new Ge({props:{path:"/settings",text:"Settings"}});return{c(){s.$$.fragment.c(),n=C(),o.$$.fragment.c()},m(e,t){te(s,e,t),N(e,n,t),te(o,e,t),a=!0},p:e,i(e){a||(s.$$.fragment.i(e),o.$$.fragment.i(e),a=!0)},o(e){s.$$.fragment.o(e),o.$$.fragment.o(e),a=!1},d(e){s.$destroy(e),e&&y(n),o.$destroy(e)}}}function Fe(e){var t,n=new Je({props:{$$slots:{default:[He]},$$scope:{ctx:e}}});return{c(){n.$$.fragment.c()},m(e,a){te(n,e,a),t=!0},p(e,t){var a={};e.$$scope&&(a.$$scope={changed:e,ctx:t}),n.$set(a)},i(e){t||(n.$$.fragment.i(e),t=!0)},o(e){n.$$.fragment.o(e),t=!1},d(e){n.$destroy(e)}}}class Ze extends se{constructor(e){super(),ae(this,e,null,Fe,c,[])}}function Xe(e){var t,n,a,s,o,i,c=new Oe({}),r=new Ze({});const m=e.$$slots.default,L=l(m,e,null);return{c(){t=h("div"),c.$$.fragment.c(),n=C(),a=h("div"),r.$$.fragment.c(),s=C(),o=h("div"),L&&L.c(),o.className="main-content svelte-9bdctk",a.className="wrapper svelte-9bdctk",t.className="configuration-container svelte-9bdctk"},l(e){L&&L.l(div0_nodes)},m(e,l){N(e,t,l),te(c,t,null),v(t,n),v(t,a),te(r,a,null),v(a,s),v(a,o),L&&L.m(o,null),i=!0},p(e,t){L&&L.p&&e.$$scope&&L.p(d(m,t,e,null),u(m,t,null))},i(e){i||(c.$$.fragment.i(e),r.$$.fragment.i(e),L&&L.i&&L.i(e),i=!0)},o(e){c.$$.fragment.o(e),r.$$.fragment.o(e),L&&L.o&&L.o(e),i=!1},d(e){e&&y(t),c.$destroy(),r.$destroy(),L&&L.d(e)}}}function Be(e,t,n){let{$$slots:a={},$$scope:s}=t;return e.$set=(e=>{"$$scope"in e&&n("$$scope",s=e.$$scope)}),{$$slots:a,$$scope:s}}class qe extends se{constructor(e){super(),ae(this,e,Be,Xe,c,[])}}function Ve(e,t,n){const a=Object.create(e);return a.page=t[n],a}function Ke(e,t,n){const a=Object.create(e);return a.staticRule=t[n],a.each_value=t,a.index=n,a}function et(e,t,n){const a=Object.create(e);return a.page=t[n],a}function tt(e){var t;return{c(){t=w("WordPress Path")},m(e,n){N(e,t,n)},d(e){e&&y(t)}}}function nt(e){var t;return{c(){t=w("Webflow Page")},m(e,n){N(e,t,n)},d(e){e&&y(t)}}}function at(e){var t,n,a=e.page.substr(1).replace("index.html","Home Page");return{c(){t=h("option"),n=w(a),t.__value=e.page,t.value=t.__value},m(e,a){N(e,t,a),v(t,n)},p(e,n){t.value=t.__value},d(e){e&&y(t)}}}function st(t){var n;return{c(){(n=h("div")).innerHTML='<p class="svelte-14gykfj">No rules added</p>',n.className="no-pages-added svelte-14gykfj"},m(e,t){N(e,n,t)},p:e,i:e,o:e,d(e){e&&y(n)}}}function ot(e){for(var t,n,a,s,o,i,c,r,l,u=new Ie({props:{$$slots:{default:[it]},$$scope:{ctx:e}}}),d=new Ie({props:{$$slots:{default:[ct]},$$scope:{ctx:e}}}),m=e.$store.staticRules,L=[],$=0;$<m.length;$+=1)L[$]=lt(Ke(e,m,$));return{c(){t=h("div"),n=h("div"),u.$$.fragment.c(),a=C(),s=h("div"),d.$$.fragment.c(),o=C(),(i=h("div")).innerHTML='<button disabled class="button add">+</button>',c=C(),r=h("div");for(var e=0;e<L.length;e+=1)L[e].c();b(i,"visibility","hidden"),t.className="grid grid-with-actions fields-headers svelte-14gykfj",r.className="fields-wrapper svelte-14gykfj"},m(e,m){N(e,t,m),v(t,n),te(u,n,null),v(t,a),v(t,s),te(d,s,null),v(t,o),v(t,i),N(e,c,m),N(e,r,m);for(var $=0;$<L.length;$+=1)L[$].m(r,null);l=!0},p(e,t){var n={};e.$$scope&&(n.$$scope={changed:e,ctx:t}),u.$set(n);var a={};if(e.$$scope&&(a.$$scope={changed:e,ctx:t}),d.$set(a),e.$store||e.pages||e.handleInput){m=t.$store.staticRules;for(var s=0;s<m.length;s+=1){const n=Ke(t,m,s);L[s]?L[s].p(e,n):(L[s]=lt(n),L[s].c(),L[s].m(r,null))}for(;s<L.length;s+=1)L[s].d(1);L.length=m.length}},i(e){l||(u.$$.fragment.i(e),d.$$.fragment.i(e),l=!0)},o(e){u.$$.fragment.o(e),d.$$.fragment.o(e),l=!1},d(e){e&&y(t),u.$destroy(),d.$destroy(),e&&(y(c),y(r)),j(L,e)}}}function it(e){var t;return{c(){t=w("WordPress Path")},m(e,n){N(e,t,n)},d(e){e&&y(t)}}}function ct(e){var t;return{c(){t=w("Webflow Page")},m(e,n){N(e,t,n)},d(e){e&&y(t)}}}function rt(e){var t,n,a=e.page.substr(1).replace("index.html","Home Page");return{c(){t=h("option"),n=w(a),t.__value=e.page,t.value=t.__value},m(e,a){N(e,t,a),v(t,n)},p(e,n){t.value=t.__value},d(e){e&&y(t)}}}function lt(e){var t,n,a,s,i,c,r,l,u,d,m;function L(){e.input_input_handler_1.call(s,e)}for(var $=e.pages,M=[],f=0;f<$.length;f+=1)M[f]=rt(Ve(e,$,f));function g(){e.select_change_handler_1.call(r,e)}function p(){return e.click_handler(e)}return{c(){t=h("div"),n=h("div"),a=h("div"),s=h("input"),i=C(),c=h("div"),r=h("select");for(var o=0;o<M.length;o+=1)M[o].c();l=C(),(u=h("a")).textContent="X",d=C(),s.className="field-input",D(s,"type","text"),s.readOnly=!0,s.disabled=!0,void 0===e.staticRule[1]&&G(g),r.className="field-select",r.disabled=!0,u.className="button remove",n.className="grid grid-with-actions",t.className="input-wrapper",m=[x(s,"input",L),x(s,"input",e.handleInput),x(r,"change",g),x(u,"click",p)]},m(o,m){N(o,t,m),v(t,n),v(n,a),v(a,s),s.value=e.staticRule[0],v(n,i),v(n,c),v(c,r);for(var L=0;L<M.length;L+=1)M[L].m(r,null);E(r,e.staticRule[1]),v(n,l),v(n,u),v(t,d)},p(t,n){if(e=n,t.$store&&s.value!==e.staticRule[0]&&(s.value=e.staticRule[0]),t.pages){$=e.pages;for(var a=0;a<$.length;a+=1){const n=Ve(e,$,a);M[a]?M[a].p(t,n):(M[a]=rt(n),M[a].c(),M[a].m(r,null))}for(;a<M.length;a+=1)M[a].d(1);M.length=$.length}t.$store&&E(r,e.staticRule[1])},d(e){e&&y(t),j(M,e),o(m)}}}function ut(e){for(var t,n,a,s,i,c,r,l,u,d,m,L,$,M,f,g,p,T,S,k,I,z,O,Q,_,Y,R,A,U,J,P,W,H,F,Z,X,B,ee,ne=new Ie({props:{$$slots:{default:[tt]},$$scope:{ctx:e}}}),ae=new Ie({props:{$$slots:{default:[nt]},$$scope:{ctx:e}}}),se=e.pages,oe=[],ie=0;ie<se.length;ie+=1)oe[ie]=at(et(e,se,ie));var ce=[ot,st],re=[];function le(e){return e.$store.staticRules.length?0:1}return Z=le(e),X=re[Z]=ce[Z](e),{c(){t=h("div"),n=h("div"),(a=h("div")).innerHTML='<h3 class="svelte-14gykfj">Static Pages</h3>',s=C(),i=h("div"),(c=h("p")).textContent="Create a new redirect",r=C(),(l=h("p")).textContent="Create redirects to serve a made-in-Webflow page in place of a WordPress Page",u=C(),d=h("div"),m=h("div"),ne.$$.fragment.c(),L=C(),$=h("div"),ae.$$.fragment.c(),M=C(),(f=h("div")).innerHTML='<button disabled class="button add">+</button>',g=C(),p=h("div"),T=h("form"),S=h("div"),k=h("input"),I=C(),(z=h("small")).textContent="Path must start with / and be valid URLs",O=C(),Q=h("div"),_=h("select");for(var o=0;o<oe.length;o+=1)oe[o].c();Y=C(),R=h("button"),A=w("+"),J=C(),P=h("div"),(W=h("p")).textContent="Rules",H=C(),F=h("form"),X.c(),a.className="headers svelte-14gykfj",c.className="section-description svelte-14gykfj",l.className="description-subtitle",b(f,"visibility","hidden"),d.className="grid grid-with-actions ",k.dataset.add="true",k.className="field-input",D(k,"type","text"),k.required=!0,k.placeholder="/path",z.className="error-message",void 0===e.staticRule[1]&&G(()=>e.select_change_handler.call(_)),_.className="field-select",R.type="submit",R.disabled=U=!e.canAdd,R.className="button add",T.className="grid grid-with-actions",p.className="input-wrapper",i.className="form-wrapper new-page svelte-14gykfj",b(n,"display","flex"),b(n,"flex-direction","column"),b(n,"justify-content","space-evenly"),W.className="section-description svelte-14gykfj",F.className="configuration-form svelte-14gykfj",P.className="added-pages svelte-14gykfj",t.className="wrapper",ee=[x(k,"input",e.input_input_handler),x(k,"input",e.handleInput),x(_,"change",e.select_change_handler),x(R,"click",e.addStaticRule),x(T,"submit",e.addStaticRule),x(F,"submit",e.handleSubmit)]},m(o,y){N(o,t,y),v(t,n),v(n,a),v(n,s),v(n,i),v(i,c),v(i,r),v(i,l),v(i,u),v(i,d),v(d,m),te(ne,m,null),v(d,L),v(d,$),te(ae,$,null),v(d,M),v(d,f),v(i,g),v(i,p),v(p,T),v(T,S),v(S,k),k.value=e.staticRule[0],v(S,I),v(S,z),v(T,O),v(T,Q),v(Q,_);for(var j=0;j<oe.length;j+=1)oe[j].m(_,null);E(_,e.staticRule[1]),v(T,Y),v(T,R),v(R,A),v(t,J),v(t,P),v(P,W),v(P,H),v(P,F),re[Z].m(F,null),B=!0},p(e,t){var n={};e.$$scope&&(n.$$scope={changed:e,ctx:t}),ne.$set(n);var a={};if(e.$$scope&&(a.$$scope={changed:e,ctx:t}),ae.$set(a),e.staticRule&&k.value!==t.staticRule[0]&&(k.value=t.staticRule[0]),e.pages){se=t.pages;for(var s=0;s<se.length;s+=1){const n=et(t,se,s);oe[s]?oe[s].p(e,n):(oe[s]=at(n),oe[s].c(),oe[s].m(_,null))}for(;s<oe.length;s+=1)oe[s].d(1);oe.length=se.length}e.staticRule&&E(_,t.staticRule[1]),B&&!e.canAdd||U===(U=!t.canAdd)||(R.disabled=U);var o=Z;(Z=le(t))===o?re[Z].p(e,t):(q(),K(()=>{re[o].d(1),re[o]=null}),X.o(1),V(),(X=re[Z])||(X=re[Z]=ce[Z](t)).c(),X.i(1),X.m(F,null))},i(e){B||(ne.$$.fragment.i(e),ae.$$.fragment.i(e),X&&X.i(),B=!0)},o(e){ne.$$.fragment.o(e),ae.$$.fragment.o(e),X&&X.o(),B=!1},d(e){e&&y(t),ne.$destroy(),ae.$destroy(),j(oe,e),re[Z].d(),o(ee)}}}function dt(e,t,n){let a;r(e,we,e=>{n("$store",a=e)});a.staticRules.length;let s=["",""],o=!1;const i=e=>{we.removeStaticRule(e),we.saveStaticRules(a.staticRules)},c=a.pages.filter(e=>"/404"!==e&&"/401"!==e);return{staticRule:s,canAdd:o,handleSubmit:async e=>{e.preventDefault(),await we.saveStaticRules(a.staticRules)},addStaticRule:e=>{e.preventDefault(),document.activeElement.blur(),we.addStaticRule(s),n("staticRule",s=["",""]),n("canAdd",o=!1),we.saveStaticRules(a.staticRules)},removeStaticRule:i,handleInput:({target:e})=>{let t=e.value,a=e.getAttribute("data-add");e.value=encodeURI(decodeURI(t));const s=(t=e.value).match(/^(\.?){2}(\/[a-zA-Z0-9_\-]+)+\/?$/g);s&&s[0]===t||"/"===t?(e.setCustomValidity(""),a&&n("canAdd",o=!0)):(e.setCustomValidity("Invalid field."),a&&n("canAdd",o=!1))},pages:c,$store:a,input_input_handler:function(){s[0]=this.value,n("staticRule",s),n("pages",c)},select_change_handler:function(){s[1]=k(this),n("staticRule",s),n("pages",c)},input_input_handler_1:function({staticRule:e,each_value:t,index:a}){t[a][0]=this.value,n("pages",c)},select_change_handler_1:function({staticRule:e,each_value:t,index:a}){t[a][1]=k(this),n("pages",c)},click_handler:function({index:e}){return i(e)}}}class mt extends se{constructor(e){super(),ae(this,e,dt,ut,c,[])}}function Lt(e,t,n){const a=Object.create(e);return a.collection=t[n],a}function $t(e,t,n){const a=Object.create(e);return a.dynamicRule=t[n],a.each_value=t,a.index=n,a}function Mt(e,t,n){const a=Object.create(e);return a.collection=t[n],a}function ft(t){var n;return{c(){(n=h("div")).innerHTML='<p class="svelte-13j5yht">No collections</p>',n.className="no-collections svelte-13j5yht"},m(e,t){N(e,n,t)},p:e,i:e,o:e,d(e){e&&y(n)}}}function gt(e){for(var t,n,a,s,i,c,r,l,u,d,m,L,$,M,f,g,p,T,S,k,I,z,O=new Ie({props:{$$slots:{default:[pt]},$$scope:{ctx:e}}}),Q=new Ie({props:{$$slots:{default:[vt]},$$scope:{ctx:e}}}),_=e.$store.collections,Y=[],R=0;R<_.length;R+=1)Y[R]=Nt(Mt(e,_,R));return{c(){t=h("div"),n=h("div"),O.$$.fragment.c(),a=C(),s=h("div"),Q.$$.fragment.c(),i=C(),(c=h("div")).innerHTML='<button disabled class="button add">+</button>',r=C(),l=h("div"),u=h("form"),d=h("div"),m=h("input"),L=C(),($=h("small")).textContent="Path must start with / and be valid URLs and end with /*",M=C(),f=h("div"),g=h("select");for(var o=0;o<Y.length;o+=1)Y[o].c();p=C(),T=h("button"),S=w("+"),b(c,"visibility","hidden"),t.className="grid grid-with-actions",m.dataset.add="true",m.className="field-input",D(m,"type","text"),m.required=!0,m.placeholder="/path/*",$.className="error-message",void 0===e.dynamicRule[1]&&G(()=>e.select_change_handler.call(g)),g.className="field-select",T.type="submit",T.disabled=k=!e.canAdd,T.className="button add",u.className="grid grid-with-actions",l.className="input-wrapper",z=[x(m,"input",e.input_input_handler),x(m,"input",e.handleInput),x(g,"change",e.select_change_handler),x(T,"click",e.addDynamicRule),x(u,"submit",e.addDynamicRule)]},m(o,y){N(o,t,y),v(t,n),te(O,n,null),v(t,a),v(t,s),te(Q,s,null),v(t,i),v(t,c),N(o,r,y),N(o,l,y),v(l,u),v(u,d),v(d,m),m.value=e.dynamicRule[0],v(d,L),v(d,$),v(u,M),v(u,f),v(f,g);for(var j=0;j<Y.length;j+=1)Y[j].m(g,null);E(g,e.dynamicRule[1]),v(u,p),v(u,T),v(T,S),I=!0},p(e,t){var n={};e.$$scope&&(n.$$scope={changed:e,ctx:t}),O.$set(n);var a={};if(e.$$scope&&(a.$$scope={changed:e,ctx:t}),Q.$set(a),e.dynamicRule&&m.value!==t.dynamicRule[0]&&(m.value=t.dynamicRule[0]),e.$store){_=t.$store.collections;for(var s=0;s<_.length;s+=1){const n=Mt(t,_,s);Y[s]?Y[s].p(e,n):(Y[s]=Nt(n),Y[s].c(),Y[s].m(g,null))}for(;s<Y.length;s+=1)Y[s].d(1);Y.length=_.length}e.dynamicRule&&E(g,t.dynamicRule[1]),I&&!e.canAdd||k===(k=!t.canAdd)||(T.disabled=k)},i(e){I||(O.$$.fragment.i(e),Q.$$.fragment.i(e),I=!0)},o(e){O.$$.fragment.o(e),Q.$$.fragment.o(e),I=!1},d(e){e&&y(t),O.$destroy(),Q.$destroy(),e&&(y(r),y(l)),j(Y,e),o(z)}}}function pt(e){var t;return{c(){t=w("WordPress Path")},m(e,n){N(e,t,n)},d(e){e&&y(t)}}}function vt(e){var t;return{c(){t=w("Webflow Page")},m(e,n){N(e,t,n)},d(e){e&&y(t)}}}function Nt(e){var t,n,a,s,o,i=e.collection.slug;return{c(){t=h("option"),n=w("/"),a=w(i),s=w("/*"),t.__value=o="/"+e.collection.slug+"/",t.value=t.__value},m(e,o){N(e,t,o),v(t,n),v(t,a),v(t,s)},p(e,n){e.$store&&i!==(i=n.collection.slug)&&S(a,i),e.$store&&o!==(o="/"+n.collection.slug+"/")&&(t.__value=o),t.value=t.__value},d(e){e&&y(t)}}}function yt(t){var n;return{c(){(n=h("div")).innerHTML='<p class="svelte-13j5yht">No rules added</p>',n.className="no-collections svelte-13j5yht"},m(e,t){N(e,n,t)},p:e,i:e,o:e,d(e){e&&y(n)}}}function jt(e){for(var t,n,a,s,o,i,c,r,l,u=new Ie({props:{$$slots:{default:[ht]},$$scope:{ctx:e}}}),d=new Ie({props:{$$slots:{default:[wt]},$$scope:{ctx:e}}}),m=e.$store.dynamicRules,L=[],$=0;$<m.length;$+=1)L[$]=Tt($t(e,m,$));return{c(){t=h("div"),n=h("div"),u.$$.fragment.c(),a=C(),s=h("div"),d.$$.fragment.c(),o=C(),(i=h("div")).innerHTML='<button disabled class="button add">+</button>',c=C(),r=h("div");for(var e=0;e<L.length;e+=1)L[e].c();b(i,"visibility","hidden"),t.className="grid grid-with-actions fields-headers svelte-13j5yht",r.className="fields-wrapper svelte-13j5yht"},m(e,m){N(e,t,m),v(t,n),te(u,n,null),v(t,a),v(t,s),te(d,s,null),v(t,o),v(t,i),N(e,c,m),N(e,r,m);for(var $=0;$<L.length;$+=1)L[$].m(r,null);l=!0},p(e,t){var n={};e.$$scope&&(n.$$scope={changed:e,ctx:t}),u.$set(n);var a={};if(e.$$scope&&(a.$$scope={changed:e,ctx:t}),d.$set(a),e.$store||e.handleInput){m=t.$store.dynamicRules;for(var s=0;s<m.length;s+=1){const n=$t(t,m,s);L[s]?L[s].p(e,n):(L[s]=Tt(n),L[s].c(),L[s].m(r,null))}for(;s<L.length;s+=1)L[s].d(1);L.length=m.length}},i(e){l||(u.$$.fragment.i(e),d.$$.fragment.i(e),l=!0)},o(e){u.$$.fragment.o(e),d.$$.fragment.o(e),l=!1},d(e){e&&y(t),u.$destroy(),d.$destroy(),e&&(y(c),y(r)),j(L,e)}}}function ht(e){var t;return{c(){t=w("WordPress Path")},m(e,n){N(e,t,n)},d(e){e&&y(t)}}}function wt(e){var t;return{c(){t=w("Webflow Page")},m(e,n){N(e,t,n)},d(e){e&&y(t)}}}function Ct(e){var t,n,a,s,o,i=e.collection.slug;return{c(){t=h("option"),n=w("/"),a=w(i),s=w("/*"),t.__value=o="/"+e.collection.slug+"/",t.value=t.__value},m(e,o){N(e,t,o),v(t,n),v(t,a),v(t,s)},p(e,n){e.$store&&i!==(i=n.collection.slug)&&S(a,i),e.$store&&o!==(o="/"+n.collection.slug+"/")&&(t.__value=o),t.value=t.__value},d(e){e&&y(t)}}}function Tt(e){var t,n,a,s,i,c,r,l,u,d,m;function L(){e.input_input_handler_1.call(s,e)}for(var $=e.$store.collections,M=[],f=0;f<$.length;f+=1)M[f]=Ct(Lt(e,$,f));function g(){e.select_change_handler_1.call(r,e)}function p(){return e.click_handler(e)}return{c(){t=h("div"),n=h("div"),a=h("div"),s=h("input"),i=C(),c=h("div"),r=h("select");for(var o=0;o<M.length;o+=1)M[o].c();l=C(),(u=h("a")).textContent="X",d=C(),s.className="field-input",D(s,"type","text"),s.required=!0,s.disabled=!0,s.readOnly=!0,void 0===e.dynamicRule[1]&&G(g),r.className="field-select",r.disabled=!0,u.className="button remove",n.className="grid grid-with-actions",t.className="input-wrapper",m=[x(s,"input",L),x(s,"input",e.handleInput),x(r,"change",g),x(u,"click",p)]},m(o,m){N(o,t,m),v(t,n),v(n,a),v(a,s),s.value=e.dynamicRule[0],v(n,i),v(n,c),v(c,r);for(var L=0;L<M.length;L+=1)M[L].m(r,null);E(r,e.dynamicRule[1]),v(n,l),v(n,u),v(t,d)},p(t,n){if(e=n,t.$store&&s.value!==e.dynamicRule[0]&&(s.value=e.dynamicRule[0]),t.$store){$=e.$store.collections;for(var a=0;a<$.length;a+=1){const n=Lt(e,$,a);M[a]?M[a].p(t,n):(M[a]=Ct(n),M[a].c(),M[a].m(r,null))}for(;a<M.length;a+=1)M[a].d(1);M.length=$.length}t.$store&&E(r,e.dynamicRule[1])},d(e){e&&y(t),j(M,e),o(m)}}}function xt(e){var t,n,a,s,o,i,c,r,l,u,d,m,L,$,M,f,g,p,j=[gt,ft],w=[];function T(e){return e.$store.collections.length>0?0:1}r=T(e),l=w[r]=j[r](e);var D=[jt,yt],S=[];function E(e){return e.$store.dynamicRules.length?0:1}return M=E(e),f=S[M]=D[M](e),{c(){t=h("div"),n=h("div"),(a=h("div")).innerHTML='<h3 class="svelte-13j5yht">Collection Pages</h3>',s=C(),o=h("div"),(i=h("p")).textContent="Create a new Rule",c=C(),l.c(),u=C(),d=h("div"),(m=h("p")).textContent="Rules",L=C(),$=h("form"),f.c(),a.className="headers svelte-13j5yht",i.className="section-description svelte-13j5yht",o.className="form-wrapper new-page svelte-13j5yht",b(n,"display","flex"),b(n,"flex-direction","column"),b(n,"justify-content","space-evenly"),m.className="section-description svelte-13j5yht",$.className="configuration-form svelte-13j5yht",d.className="added-pages svelte-13j5yht",t.className="wrapper",p=x($,"submit",e.handleSubmit)},m(e,l){N(e,t,l),v(t,n),v(n,a),v(n,s),v(n,o),v(o,i),v(o,c),w[r].m(o,null),v(t,u),v(t,d),v(d,m),v(d,L),v(d,$),S[M].m($,null),g=!0},p(e,t){var n=r;(r=T(t))===n?w[r].p(e,t):(q(),K(()=>{w[n].d(1),w[n]=null}),l.o(1),V(),(l=w[r])||(l=w[r]=j[r](t)).c(),l.i(1),l.m(o,null));var a=M;(M=E(t))===a?S[M].p(e,t):(q(),K(()=>{S[a].d(1),S[a]=null}),f.o(1),V(),(f=S[M])||(f=S[M]=D[M](t)).c(),f.i(1),f.m($,null))},i(e){g||(l&&l.i(),f&&f.i(),g=!0)},o(e){l&&l.o(),f&&f.o(),g=!1},d(e){e&&y(t),w[r].d(),S[M].d(),p()}}}function Dt(e,t,n){let a;r(e,we,e=>{n("$store",a=e)});a.dynamicRules.length,a.collections[0];let s=["",""];a.collections.length&&n("dynamicRule",s=["",`/${a.collections[0].slug}/`]);let o=!1;const i=e=>{we.removeDynamicRule(e),we.saveDynamicRules(a.dynamicRules)};return{dynamicRule:s,canAdd:o,handleSubmit:async e=>{e.preventDefault(),await we.saveDynamicRules(a.dynamicRules)},addDynamicRule:e=>{n("canAdd",o=!1),e.preventDefault(),document.activeElement.blur(),s&&s[0]?(we.addDynamicRule(s),n("dynamicRule",s=["",""]),we.saveDynamicRules(a.dynamicRules)):n("canAdd",o=!1)},removeDynamicRule:i,handleInput:e=>{let t=e.target.value;e.target.value=encodeURI(decodeURI(t));let a=e.target.getAttribute("data-add");const s=(t=e.target.value).match(/\/.*?\/\*/g);s&&s[0]===t?(e.target.setCustomValidity(""),a&&n("canAdd",o=!0)):(e.target.setCustomValidity("Invalid field."),a&&n("canAdd",o=!1))},$store:a,input_input_handler:function(){s[0]=this.value,n("dynamicRule",s)},select_change_handler:function(){s[1]=k(this),n("dynamicRule",s)},input_input_handler_1:function({dynamicRule:e,each_value:t,index:n}){t[n][0]=this.value},select_change_handler_1:function({dynamicRule:e,each_value:t,index:n}){t[n][1]=k(this)},click_handler:function({index:e}){return i(e)}}}class St extends se{constructor(e){super(),ae(this,e,Dt,xt,c,[])}}function bt(e){var t,n,a=new mt({}),s=new St({});return{c(){a.$$.fragment.c(),t=C(),s.$$.fragment.c()},m(e,o){te(a,e,o),N(e,t,o),te(s,e,o),n=!0},i(e){n||(a.$$.fragment.i(e),s.$$.fragment.i(e),n=!0)},o(e){a.$$.fragment.o(e),s.$$.fragment.o(e),n=!1},d(e){a.$destroy(e),e&&y(t),s.$destroy(e)}}}function Et(e){var t,n=new qe({props:{$$slots:{default:[bt]},$$scope:{ctx:e}}});return{c(){n.$$.fragment.c()},m(e,a){te(n,e,a),t=!0},p(e,t){var a={};e.$$scope&&(a.$$scope={changed:e,ctx:t}),n.$set(a)},i(e){t||(n.$$.fragment.i(e),t=!0)},o(e){n.$$.fragment.o(e),t=!1},d(e){n.$destroy(e)}}}class kt extends se{constructor(e){super(),ae(this,e,null,Et,c,[])}}function It(e,{delay:t=0,duration:n=400}){const a=+getComputedStyle(e).opacity;return{delay:t,duration:n,css:e=>`opacity: ${e*a}`}}function zt(t){var n,a,s,i,c,r,l,u,d,m,L,$,M,f,g,p,j;return{c(){n=h("div"),a=h("div"),s=h("div"),(i=h("div")).textContent="Do you want to remove all the Webflow Pages?",c=C(),(r=h("a")).textContent="X",l=C(),u=h("div"),(d=h("p")).textContent="Are you sure you want to remove all your Webflow Settings?",m=C(),L=h("div"),($=h("button")).textContent="Cancel",M=C(),(f=h("button")).textContent="Confirm",r.className="svelte-qi2scw",s.className="modal-header svelte-qi2scw",$.className="modal-button grey svelte-qi2scw",f.className="modal-button red svelte-qi2scw",L.className="modal-actions svelte-qi2scw",u.className="modal-content svelte-qi2scw",a.className="modal svelte-qi2scw",n.className="modal-wrapper svelte-qi2scw",j=[x(r,"click",t.closeModal),x($,"click",t.closeModal),x(f,"click",t.acceptModal)]},m(e,t){N(e,n,t),v(n,a),v(a,s),v(s,i),v(s,c),v(s,r),v(a,l),v(a,u),v(u,d),v(u,m),v(u,L),v(L,$),v(L,M),v(L,f),p=!0},p:e,i(e){p||(G(()=>{g||(g=ee(a,It,{},!0)),g.run(1)}),p=!0)},o(e){g||(g=ee(a,It,{},!1)),g.run(0),p=!1},d(e){e&&(y(n),g&&g.end()),o(j)}}}function Ot(e){var t,n,a,s,o,i,c,r,l,u=new be({props:{value:e.$removeTokenStore.value,disabled:e.$removeTokenStore.disabled,variation:"red"}}),d=e.$modalStore.open&&zt(e);return{c(){(t=h("h4")).textContent="Remove Website",n=C(),(a=h("p")).textContent="Disconnect your Webflow project from your WordPress site.",s=C(),o=h("form"),u.$$.fragment.c(),i=C(),d&&d.c(),c=T(),a.className="description-subtitle",l=x(o,"submit",e.handleRemoveToken)},m(e,l){N(e,t,l),N(e,n,l),N(e,a,l),N(e,s,l),N(e,o,l),te(u,o,null),N(e,i,l),d&&d.m(e,l),N(e,c,l),r=!0},p(e,t){var n={};e.$removeTokenStore&&(n.value=t.$removeTokenStore.value),e.$removeTokenStore&&(n.disabled=t.$removeTokenStore.disabled),u.$set(n),t.$modalStore.open?d?(d.p(e,t),d.i(1)):((d=zt(t)).c(),d.i(1),d.m(c.parentNode,c)):d&&(q(),K(()=>{d.d(1),d=null}),d.o(1),V())},i(e){r||(u.$$.fragment.i(e),d&&d.i(),r=!0)},o(e){u.$$.fragment.o(e),d&&d.o(),r=!1},d(e){e&&(y(t),y(n),y(a),y(s),y(o)),u.$destroy(),e&&y(i),d&&d.d(e),e&&y(c),l()}}}function Qt(e,t,n){let a,s;const o=oe({disabled:!1,value:"Remove site"});r(e,o,e=>{n("$removeTokenStore",a=e)});const i=oe({open:!1});r(e,i,e=>{n("$modalStore",s=e)});const c=()=>new Promise(e=>{i.set({open:!0}),document.body.addEventListener("webflow-modal-remove-token",t=>{i.set({open:!1}),e(t.detail)},{once:!0})});return{removeTokenStore:o,modalStore:i,handleRemoveToken:async e=>{e.preventDefault(),await c()&&(o.set({disabled:!0,value:"Wait..."}),await we.removeToken(),o.set({disabled:!1,value:"Remove site"}))},closeModal:e=>{e.preventDefault(),document.body.dispatchEvent(new CustomEvent("webflow-modal-remove-token",{detail:!1}))},acceptModal:e=>{e.preventDefault(),document.body.dispatchEvent(new CustomEvent("webflow-modal-remove-token",{detail:!0}))},$removeTokenStore:a,$modalStore:s}}class _t extends se{constructor(e){super(),ae(this,e,Qt,Ot,c,[])}}function Yt(e){var t,n,a,s,o,i,c,r=new be({props:{value:e.$invalidateCacheStore.value,disabled:e.$invalidateCacheStore.disabled,variation:"black"}});return{c(){(t=h("h4")).textContent="Invalidate Cache",n=C(),(a=h("p")).textContent="Deletes your WordPress site's cache, which can be helpful with debugging.",s=C(),o=h("form"),r.$$.fragment.c(),a.className="description-subtitle",c=x(o,"submit",e.handleInvalidateCache)},m(e,c){N(e,t,c),N(e,n,c),N(e,a,c),N(e,s,c),N(e,o,c),te(r,o,null),i=!0},p(e,t){var n={};e.$invalidateCacheStore&&(n.value=t.$invalidateCacheStore.value),e.$invalidateCacheStore&&(n.disabled=t.$invalidateCacheStore.disabled),r.$set(n)},i(e){i||(r.$$.fragment.i(e),i=!0)},o(e){r.$$.fragment.o(e),i=!1},d(e){e&&(y(t),y(n),y(a),y(s),y(o)),r.$destroy(),c()}}}function Rt(e,t,n){let a;const s=oe({disabled:!1,value:"Invalidate Cache"});r(e,s,e=>{n("$invalidateCacheStore",a=e)});return{invalidateCacheStore:s,handleInvalidateCache:async e=>{e.preventDefault(),s.set({disabled:!0,value:"Wait..."}),await we.invalidateCache(),s.set({disabled:!1,value:"Invalidate Cache"})},$invalidateCacheStore:a}}class At extends se{constructor(e){super(),ae(this,e,Rt,Yt,c,[])}}function Ut(e){var t,n,a,s,o,i,c,r=new be({props:{value:e.$preloadCacheStore.value,disabled:e.$preloadCacheStore.disabled,variation:"black"}});return{c(){(t=h("h4")).textContent="Preload static page cache",n=C(),(a=h("p")).textContent="Preload your static page cache to help pages load faster.",s=C(),o=h("form"),r.$$.fragment.c(),a.className="description-subtitle",c=x(o,"submit",e.handlePreloadCache)},m(e,c){N(e,t,c),N(e,n,c),N(e,a,c),N(e,s,c),N(e,o,c),te(r,o,null),i=!0},p(e,t){var n={};e.$preloadCacheStore&&(n.value=t.$preloadCacheStore.value),e.$preloadCacheStore&&(n.disabled=t.$preloadCacheStore.disabled),r.$set(n)},i(e){i||(r.$$.fragment.i(e),i=!0)},o(e){r.$$.fragment.o(e),i=!1},d(e){e&&(y(t),y(n),y(a),y(s),y(o)),r.$destroy(),c()}}}function Jt(e,t,n){let a;const s=oe({disabled:!1,value:"Preload Cache"});r(e,s,e=>{n("$preloadCacheStore",a=e)});return{preloadCacheStore:s,handlePreloadCache:async e=>{e.preventDefault(),s.set({disabled:!0,value:"Wait..."}),await we.preloadCache(),s.set({disabled:!1,value:"Preload Cache"})},$preloadCacheStore:a}}class Pt extends se{constructor(e){super(),ae(this,e,Jt,Ut,c,[])}}function Wt(e,t,n){const a=Object.create(e);return a.option=t[n],a}function Gt(e){var t,n,a=e.option.name;return{c(){t=h("option"),n=w(a),t.__value=e.option.value,t.value=t.__value},m(e,a){N(e,t,a),v(t,n)},p(e,n){t.value=t.__value},d(e){e&&y(t)}}}function Ht(e){for(var t,n,a,s,i,c,r,l,u,d=e.options,m=[],L=0;L<d.length;L+=1)m[L]=Gt(Wt(e,d,L));var $=new be({props:{value:e.$localStore.value,disabled:e.$localStore.disabled,variation:"small"}});return{c(){(t=h("h4")).textContent="Cache Duration",n=C(),(a=h("p")).textContent="Define how long your site caches your Webflow pages. Cached pages load faster.",s=C(),i=h("form"),c=h("select");for(var o=0;o<m.length;o+=1)m[o].c();r=C(),$.$$.fragment.c(),a.className="description-subtitle",void 0===e.val&&G(()=>e.select_change_handler.call(c)),c.className="field-select svelte-t3nmi4",i.className="svelte-t3nmi4",u=[x(c,"change",e.select_change_handler),x(i,"submit",e.handleSubmit)]},m(o,u){N(o,t,u),N(o,n,u),N(o,a,u),N(o,s,u),N(o,i,u),v(i,c);for(var d=0;d<m.length;d+=1)m[d].m(c,null);E(c,e.val),v(i,r),te($,i,null),l=!0},p(e,t){if(e.options){d=t.options;for(var n=0;n<d.length;n+=1){const a=Wt(t,d,n);m[n]?m[n].p(e,a):(m[n]=Gt(a),m[n].c(),m[n].m(c,null))}for(;n<m.length;n+=1)m[n].d(1);m.length=d.length}e.val&&E(c,t.val);var a={};e.$localStore&&(a.value=t.$localStore.value),e.$localStore&&(a.disabled=t.$localStore.disabled),$.$set(a)},i(e){l||($.$$.fragment.i(e),l=!0)},o(e){$.$$.fragment.o(e),l=!1},d(e){e&&(y(t),y(n),y(a),y(s),y(i)),j(m,e),$.$destroy(),o(u)}}}function Ft(e,t,n){let a,s;r(e,we,e=>{n("$store",a=e)});const o=oe({disabled:!1,value:"Save"});r(e,o,e=>{n("$localStore",s=e)});let i=a.cacheDuration;const c=[{value:"0",name:"As long as possible"},{value:"60",name:"1 minute"},{value:"300",name:"5 minutes"},{value:"900",name:"15 minutes"},{value:"3600",name:"1 hour"},{value:"86400",name:"1 day"}];return{localStore:o,val:i,options:c,handleSubmit:async e=>{e.preventDefault(),o.set({disabled:!0,value:"Wait..."}),await we.changeCache(i),o.set({disabled:!1,value:"Save"})},$localStore:s,select_change_handler:function(){i=k(this),n("val",i),n("options",c)}}}class Zt extends se{constructor(e){super(),ae(this,e,Ft,Ht,c,[])}}function Xt(t){var n,a,s,o,i,c,r,l,u=t.$store.site.name;return{c(){n=h("div"),a=h("a"),s=h("img"),i=C(),c=h("h3"),r=w(u),s.src=o=t.$store.site.previewUrl,s.alt="site preview",s.className="svelte-s2dgog",a.href=l=t.$store.site.dashboardUrl,a.target="_blank",a.className="svelte-s2dgog"},m(e,t){N(e,n,t),v(n,a),v(a,s),v(a,i),v(a,c),v(c,r)},p(e,t){e.$store&&o!==(o=t.$store.site.previewUrl)&&(s.src=o),e.$store&&u!==(u=t.$store.site.name)&&S(r,u),e.$store&&l!==(l=t.$store.site.dashboardUrl)&&(a.href=l)},i:e,o:e,d(e){e&&y(n)}}}function Bt(e,t,n){let a;return r(e,we,e=>{n("$store",a=e)}),{$store:a}}class qt extends se{constructor(e){super(),ae(this,e,Bt,Xt,c,[])}}function Vt(t){var n,a,s,i,c,r,l,u,d,m,L,$,M,f,g,p,j;return{c(){n=h("div"),a=h("div"),s=h("div"),(i=h("div")).textContent="Do you want to remove all the Webflow Pages?",c=C(),(r=h("a")).textContent="X",l=C(),u=h("div"),(d=h("p")).textContent="Are you sure you want to remove all your Webflow Settings?",m=C(),L=h("div"),($=h("button")).textContent="Cancel",M=C(),(f=h("button")).textContent="Confirm",r.className="svelte-qi2scw",s.className="modal-header svelte-qi2scw",$.className="modal-button grey svelte-qi2scw",f.className="modal-button red svelte-qi2scw",L.className="modal-actions svelte-qi2scw",u.className="modal-content svelte-qi2scw",a.className="modal svelte-qi2scw",n.className="modal-wrapper svelte-qi2scw",j=[x(r,"click",t.closeModal),x($,"click",t.closeModal),x(f,"click",t.acceptModal)]},m(e,t){N(e,n,t),v(n,a),v(a,s),v(s,i),v(s,c),v(s,r),v(a,l),v(a,u),v(u,d),v(u,m),v(u,L),v(L,$),v(L,M),v(L,f),p=!0},p:e,i(e){p||(G(()=>{g||(g=ee(a,It,{},!0)),g.run(1)}),p=!0)},o(e){g||(g=ee(a,It,{},!1)),g.run(0),p=!1},d(e){e&&(y(n),g&&g.end()),o(j)}}}function Kt(e){var t,n,a,s,o,i,c,r,l,u=new be({props:{value:e.$removeTokenStore.value,disabled:e.$removeTokenStore.disabled,variation:"red"}}),d=e.$modalStore.open&&Vt(e);return{c(){(t=h("h4")).textContent="Remove Website and Data",n=C(),(a=h("p")).textContent="Disconnect your Webflow project from your WordPress site and remove saved pages settings.",s=C(),o=h("form"),u.$$.fragment.c(),i=C(),d&&d.c(),c=T(),a.className="description-subtitle",l=x(o,"submit",e.handleRemoveToken)},m(e,l){N(e,t,l),N(e,n,l),N(e,a,l),N(e,s,l),N(e,o,l),te(u,o,null),N(e,i,l),d&&d.m(e,l),N(e,c,l),r=!0},p(e,t){var n={};e.$removeTokenStore&&(n.value=t.$removeTokenStore.value),e.$removeTokenStore&&(n.disabled=t.$removeTokenStore.disabled),u.$set(n),t.$modalStore.open?d?(d.p(e,t),d.i(1)):((d=Vt(t)).c(),d.i(1),d.m(c.parentNode,c)):d&&(q(),K(()=>{d.d(1),d=null}),d.o(1),V())},i(e){r||(u.$$.fragment.i(e),d&&d.i(),r=!0)},o(e){u.$$.fragment.o(e),d&&d.o(),r=!1},d(e){e&&(y(t),y(n),y(a),y(s),y(o)),u.$destroy(),e&&y(i),d&&d.d(e),e&&y(c),l()}}}function en(e,t,n){let a,s;const o=oe({disabled:!1,value:"Remove site and data"});r(e,o,e=>{n("$removeTokenStore",a=e)});const i=oe({open:!1});r(e,i,e=>{n("$modalStore",s=e)});const c=()=>new Promise(e=>{i.set({open:!0}),document.body.addEventListener("webflow-modal-remove-token-data",t=>{i.set({open:!1}),e(t.detail)},{once:!0})});return{removeTokenStore:o,modalStore:i,handleRemoveToken:async e=>{e.preventDefault(),await c()&&(o.set({disabled:!0,value:"Wait..."}),await we.removeTokenAndData(),o.set({disabled:!1,value:"Remove site and data"}))},closeModal:e=>{e.preventDefault(),document.body.dispatchEvent(new CustomEvent("webflow-modal-remove-token-data",{detail:!1}))},acceptModal:e=>{e.preventDefault(),document.body.dispatchEvent(new CustomEvent("webflow-modal-remove-token-data",{detail:!0}))},$removeTokenStore:a,$modalStore:s}}class tn extends se{constructor(e){super(),ae(this,e,en,Kt,c,[])}}function nn(e){var t,n,a,s,o,i,c,r,l,u,d,m,L,$,M,f,g,p,j=new Zt({}),w=new At({}),T=new Pt({}),x=new _t({}),D=new tn({}),S=new qt({});return{c(){t=h("div"),(n=h("p")).innerHTML="These advanced settings control how your site loads your Webflow pages. <br>For the most part, you shouldn't need to mess with them.",a=C(),j.$$.fragment.c(),s=C(),o=h("hr"),i=C(),w.$$.fragment.c(),c=C(),r=h("hr"),l=C(),T.$$.fragment.c(),u=C(),d=h("hr"),m=C(),x.$$.fragment.c(),L=C(),$=h("hr"),M=C(),D.$$.fragment.c(),f=C(),g=h("div"),S.$$.fragment.c(),n.className="svelte-13sw1fy",o.className="svelte-13sw1fy",r.className="svelte-13sw1fy",d.className="svelte-13sw1fy",$.className="svelte-13sw1fy",t.className="actions-container svelte-13sw1fy",g.className="site-container svelte-13sw1fy"},m(e,y){N(e,t,y),v(t,n),v(t,a),te(j,t,null),v(t,s),v(t,o),v(t,i),te(w,t,null),v(t,c),v(t,r),v(t,l),te(T,t,null),v(t,u),v(t,d),v(t,m),te(x,t,null),v(t,L),v(t,$),v(t,M),te(D,t,null),N(e,f,y),N(e,g,y),te(S,g,null),p=!0},i(e){p||(j.$$.fragment.i(e),w.$$.fragment.i(e),T.$$.fragment.i(e),x.$$.fragment.i(e),D.$$.fragment.i(e),S.$$.fragment.i(e),p=!0)},o(e){j.$$.fragment.o(e),w.$$.fragment.o(e),T.$$.fragment.o(e),x.$$.fragment.o(e),D.$$.fragment.o(e),S.$$.fragment.o(e),p=!1},d(e){e&&y(t),j.$destroy(),w.$destroy(),T.$destroy(),x.$destroy(),D.$destroy(),e&&(y(f),y(g)),S.$destroy()}}}function an(e){var t,n=new qe({props:{$$slots:{default:[nn]},$$scope:{ctx:e}}});return{c(){n.$$.fragment.c()},m(e,a){te(n,e,a),t=!0},p(e,t){var a={};e.$$scope&&(a.$$scope={changed:e,ctx:t}),n.$set(a)},i(e){t||(n.$$.fragment.i(e),t=!0)},o(e){n.$$.fragment.o(e),t=!1},d(e){n.$destroy(e)}}}class sn extends se{constructor(e){super(),ae(this,e,null,an,c,[])}}function on(e){var t,n,a,s,o,i,c=e.$notifications.currentNotification.message;return{c(){t=h("div"),n=h("p"),a=w(c),n.className="svelte-19kmp7p",t.style.cssText=s="success"==e.$notifications.currentNotification.type?"background-color: #38D996":"background-color:  #FF6382",t.className="svelte-19kmp7p"},m(e,s){N(e,t,s),v(t,n),v(n,a),i=!0},p(e,n){i&&!e.$notifications||c===(c=n.$notifications.currentNotification.message)||S(a,c),i&&!e.$notifications||s===(s="success"==n.$notifications.currentNotification.type?"background-color: #38D996":"background-color:  #FF6382")||(t.style.cssText=s)},i(e){i||(G(()=>{o||(o=ee(t,It,{},!0)),o.run(1)}),i=!0)},o(e){o||(o=ee(t,It,{},!1)),o.run(0),i=!1},d(e){e&&(y(t),o&&o.end())}}}function cn(e){var t,n,a=e.$notifications.currentNotification&&on(e);return{c(){a&&a.c(),t=T()},m(e,s){a&&a.m(e,s),N(e,t,s),n=!0},p(e,n){n.$notifications.currentNotification?a?(a.p(e,n),a.i(1)):((a=on(n)).c(),a.i(1),a.m(t.parentNode,t)):a&&(q(),K(()=>{a.d(1),a=null}),a.o(1),V())},i(e){n||(a&&a.i(),n=!0)},o(e){a&&a.o(),n=!1},d(e){a&&a.d(e),e&&y(t)}}}function rn(e,t,n){let a;return r(e,$e,e=>{n("$notifications",a=e)}),{$notifications:a}}class ln extends se{constructor(e){super(),ae(this,e,rn,cn,c,[])}}function un(t){var n;return{c(){(n=h("div")).innerHTML='<a href="https://university.webflow.com/" target="_blank" rel="nofollow" class="svelte-fqtlda">Need support?</a>',n.className="footer svelte-fqtlda"},m(e,t){N(e,n,t)},p:e,i:e,o:e,d(e){e&&y(n)}}}class dn extends se{constructor(e){super(),ae(this,e,null,un,c,[])}}function mn(e){var t,n,a,s,o,i=new me({props:{path:"/login",component:Re}}),c=new me({props:{path:"/configuration",component:kt}}),r=new me({props:{path:"/settings",component:sn}}),l=new ln({}),u=new dn({});return{c(){i.$$.fragment.c(),t=C(),c.$$.fragment.c(),n=C(),r.$$.fragment.c(),a=C(),l.$$.fragment.c(),s=C(),u.$$.fragment.c()},m(e,d){te(i,e,d),N(e,t,d),te(c,e,d),N(e,n,d),te(r,e,d),N(e,a,d),te(l,e,d),N(e,s,d),te(u,e,d),o=!0},p(e,t){var n={};e.LoginPage&&(n.component=Re),i.$set(n);var a={};e.ConfigurationPage&&(a.component=kt),c.$set(a);var s={};e.UtilsPage&&(s.component=sn),r.$set(s)},i(e){o||(i.$$.fragment.i(e),c.$$.fragment.i(e),r.$$.fragment.i(e),l.$$.fragment.i(e),u.$$.fragment.i(e),o=!0)},o(e){i.$$.fragment.o(e),c.$$.fragment.o(e),r.$$.fragment.o(e),l.$$.fragment.o(e),u.$$.fragment.o(e),o=!1},d(e){i.$destroy(e),e&&y(t),c.$destroy(e),e&&y(n),r.$destroy(e),e&&y(a),l.$destroy(e),e&&y(s),u.$destroy(e)}}}const Ln=window._wfAjaxData;new class extends se{constructor(e){super(),ae(this,e,null,mn,c,[])}}({target:document.getElementById("webflow-dashboard-root"),data:Ln})}();
    22//# sourceMappingURL=bundle.js.map
  • webflow-pages/trunk/externals/dashboard/public/bundle.js.map

    r2494376 r3153929  
    1 {"version":3,"file":"bundle.js","sources":["../node_modules/svelte/internal.mjs","../node_modules/svelte/store.mjs","../src/store/router.js","../src/components/Route.svelte","../src/utils/ajax.js","../src/store/notifications.js","../src/store/wfData.js","../src/components/Submit.svelte","../src/components/Label.svelte","../src/pages/Login.svelte","../src/components/Link.svelte","../src/components/Navigation.svelte","../src/components/StaticRules.svelte","../src/components/CollectionRules.svelte","../node_modules/svelte/transition.mjs","../src/components/RemoveTokenAction.svelte","../src/components/InvalidateCacheAction.svelte","../src/components/PreloadCacheAction.svelte","../src/components/ChangeCacheAction.svelte","../src/components/Site.svelte","../src/components/Notifications.svelte","../src/App.svelte","../src/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n    for (const k in src)\n        tar[k] = src[k];\n    return tar;\n}\nfunction is_promise(value) {\n    return value && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n    element.__svelte_meta = {\n        loc: { file, line, column, char }\n    };\n}\nfunction run(fn) {\n    return fn();\n}\nfunction blank_object() {\n    return Object.create(null);\n}\nfunction run_all(fns) {\n    fns.forEach(run);\n}\nfunction is_function(thing) {\n    return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n    return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nfunction not_equal(a, b) {\n    return a != a ? b == b : a !== b;\n}\nfunction validate_store(store, name) {\n    if (!store || typeof store.subscribe !== 'function') {\n        throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n    }\n}\nfunction subscribe(component, store, callback) {\n    const unsub = store.subscribe(callback);\n    component.$$.on_destroy.push(unsub.unsubscribe\n        ? () => unsub.unsubscribe()\n        : unsub);\n}\nfunction create_slot(definition, ctx, fn) {\n    if (definition) {\n        const slot_ctx = get_slot_context(definition, ctx, fn);\n        return definition[0](slot_ctx);\n    }\n}\nfunction get_slot_context(definition, ctx, fn) {\n    return definition[1]\n        ? assign({}, assign(ctx.$$scope.ctx, definition[1](fn ? fn(ctx) : {})))\n        : ctx.$$scope.ctx;\n}\nfunction get_slot_changes(definition, ctx, changed, fn) {\n    return definition[1]\n        ? assign({}, assign(ctx.$$scope.changed || {}, definition[1](fn ? fn(changed) : {})))\n        : ctx.$$scope.changed || {};\n}\nfunction exclude_internal_props(props) {\n    const result = {};\n    for (const k in props)\n        if (k[0] !== '$')\n            result[k] = props[k];\n    return result;\n}\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n    ? () => window.performance.now()\n    : () => Date.now();\nlet raf = is_client ? requestAnimationFrame : noop;\n// used internally for testing\nfunction set_now(fn) {\n    now = fn;\n}\nfunction set_raf(fn) {\n    raf = fn;\n}\n\nconst tasks = new Set();\nlet running = false;\nfunction run_tasks() {\n    tasks.forEach(task => {\n        if (!task[0](now())) {\n            tasks.delete(task);\n            task[1]();\n        }\n    });\n    running = tasks.size > 0;\n    if (running)\n        raf(run_tasks);\n}\nfunction clear_loops() {\n    // for testing...\n    tasks.forEach(task => tasks.delete(task));\n    running = false;\n}\nfunction loop(fn) {\n    let task;\n    if (!running) {\n        running = true;\n        raf(run_tasks);\n    }\n    return {\n        promise: new Promise(fulfil => {\n            tasks.add(task = [fn, fulfil]);\n        }),\n        abort() {\n            tasks.delete(task);\n        }\n    };\n}\n\nfunction append(target, node) {\n    target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n    target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n    node.parentNode.removeChild(node);\n}\nfunction detach_between(before, after) {\n    while (before.nextSibling && before.nextSibling !== after) {\n        before.parentNode.removeChild(before.nextSibling);\n    }\n}\nfunction detach_before(after) {\n    while (after.previousSibling) {\n        after.parentNode.removeChild(after.previousSibling);\n    }\n}\nfunction detach_after(before) {\n    while (before.nextSibling) {\n        before.parentNode.removeChild(before.nextSibling);\n    }\n}\nfunction destroy_each(iterations, detaching) {\n    for (let i = 0; i < iterations.length; i += 1) {\n        if (iterations[i])\n            iterations[i].d(detaching);\n    }\n}\nfunction element(name) {\n    return document.createElement(name);\n}\nfunction object_without_properties(obj, exclude) {\n    const target = {};\n    for (const k in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, k)\n            // @ts-ignore\n            && exclude.indexOf(k) === -1) {\n            // @ts-ignore\n            target[k] = obj[k];\n        }\n    }\n    return target;\n}\nfunction svg_element(name) {\n    return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n    return document.createTextNode(data);\n}\nfunction space() {\n    return text(' ');\n}\nfunction empty() {\n    return text('');\n}\nfunction listen(node, event, handler, options) {\n    node.addEventListener(event, handler, options);\n    return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n    return function (event) {\n        event.preventDefault();\n        // @ts-ignore\n        return fn.call(this, event);\n    };\n}\nfunction stop_propagation(fn) {\n    return function (event) {\n        event.stopPropagation();\n        // @ts-ignore\n        return fn.call(this, event);\n    };\n}\nfunction attr(node, attribute, value) {\n    if (value == null)\n        node.removeAttribute(attribute);\n    else\n        node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n    for (const key in attributes) {\n        if (key === 'style') {\n            node.style.cssText = attributes[key];\n        }\n        else if (key in node) {\n            node[key] = attributes[key];\n        }\n        else {\n            attr(node, key, attributes[key]);\n        }\n    }\n}\nfunction set_custom_element_data(node, prop, value) {\n    if (prop in node) {\n        node[prop] = value;\n    }\n    else {\n        attr(node, prop, value);\n    }\n}\nfunction xlink_attr(node, attribute, value) {\n    node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group) {\n    const value = [];\n    for (let i = 0; i < group.length; i += 1) {\n        if (group[i].checked)\n            value.push(group[i].__value);\n    }\n    return value;\n}\nfunction to_number(value) {\n    return value === '' ? undefined : +value;\n}\nfunction time_ranges_to_array(ranges) {\n    const array = [];\n    for (let i = 0; i < ranges.length; i += 1) {\n        array.push({ start: ranges.start(i), end: ranges.end(i) });\n    }\n    return array;\n}\nfunction children(element) {\n    return Array.from(element.childNodes);\n}\nfunction claim_element(nodes, name, attributes, svg) {\n    for (let i = 0; i < nodes.length; i += 1) {\n        const node = nodes[i];\n        if (node.nodeName === name) {\n            for (let j = 0; j < node.attributes.length; j += 1) {\n                const attribute = node.attributes[j];\n                if (!attributes[attribute.name])\n                    node.removeAttribute(attribute.name);\n            }\n            return nodes.splice(i, 1)[0]; // TODO strip unwanted attributes\n        }\n    }\n    return svg ? svg_element(name) : element(name);\n}\nfunction claim_text(nodes, data) {\n    for (let i = 0; i < nodes.length; i += 1) {\n        const node = nodes[i];\n        if (node.nodeType === 3) {\n            node.data = data;\n            return nodes.splice(i, 1)[0];\n        }\n    }\n    return text(data);\n}\nfunction set_data(text, data) {\n    data = '' + data;\n    if (text.data !== data)\n        text.data = data;\n}\nfunction set_input_type(input, type) {\n    try {\n        input.type = type;\n    }\n    catch (e) {\n        // do nothing\n    }\n}\nfunction set_style(node, key, value) {\n    node.style.setProperty(key, value);\n}\nfunction select_option(select, value) {\n    for (let i = 0; i < select.options.length; i += 1) {\n        const option = select.options[i];\n        if (option.__value === value) {\n            option.selected = true;\n            return;\n        }\n    }\n}\nfunction select_options(select, value) {\n    for (let i = 0; i < select.options.length; i += 1) {\n        const option = select.options[i];\n        option.selected = ~value.indexOf(option.__value);\n    }\n}\nfunction select_value(select) {\n    const selected_option = select.querySelector(':checked') || select.options[0];\n    return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n    return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\nfunction add_resize_listener(element, fn) {\n    if (getComputedStyle(element).position === 'static') {\n        element.style.position = 'relative';\n    }\n    const object = document.createElement('object');\n    object.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;');\n    object.type = 'text/html';\n    let win;\n    object.onload = () => {\n        win = object.contentDocument.defaultView;\n        win.addEventListener('resize', fn);\n    };\n    if (/Trident/.test(navigator.userAgent)) {\n        element.appendChild(object);\n        object.data = 'about:blank';\n    }\n    else {\n        object.data = 'about:blank';\n        element.appendChild(object);\n    }\n    return {\n        cancel: () => {\n            win && win.removeEventListener && win.removeEventListener('resize', fn);\n            element.removeChild(object);\n        }\n    };\n}\nfunction toggle_class(element, name, toggle) {\n    element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail) {\n    const e = document.createEvent('CustomEvent');\n    e.initCustomEvent(type, false, false, detail);\n    return e;\n}\n\nlet stylesheet;\nlet active = 0;\nlet current_rules = {};\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n    let hash = 5381;\n    let i = str.length;\n    while (i--)\n        hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n    return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n    const step = 16.666 / duration;\n    let keyframes = '{\\n';\n    for (let p = 0; p <= 1; p += step) {\n        const t = a + (b - a) * ease(p);\n        keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n    }\n    const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n    const name = `__svelte_${hash(rule)}_${uid}`;\n    if (!current_rules[name]) {\n        if (!stylesheet) {\n            const style = element('style');\n            document.head.appendChild(style);\n            stylesheet = style.sheet;\n        }\n        current_rules[name] = true;\n        stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n    }\n    const animation = node.style.animation || '';\n    node.style.animation = `${animation ? `${animation}, ` : ``}${name} ${duration}ms linear ${delay}ms 1 both`;\n    active += 1;\n    return name;\n}\nfunction delete_rule(node, name) {\n    node.style.animation = (node.style.animation || '')\n        .split(', ')\n        .filter(name\n        ? anim => anim.indexOf(name) < 0 // remove specific animation\n        : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n    )\n        .join(', ');\n    if (name && !--active)\n        clear_rules();\n}\nfunction clear_rules() {\n    raf(() => {\n        if (active)\n            return;\n        let i = stylesheet.cssRules.length;\n        while (i--)\n            stylesheet.deleteRule(i);\n        current_rules = {};\n    });\n}\n\nfunction create_animation(node, from, fn, params) {\n    if (!from)\n        return noop;\n    const to = node.getBoundingClientRect();\n    if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n        return noop;\n    const { delay = 0, duration = 300, easing = identity, start: start_time = now() + delay, end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n    let running = true;\n    let started = false;\n    let name;\n    function start() {\n        if (css) {\n            name = create_rule(node, 0, 1, duration, delay, easing, css);\n        }\n        if (!delay) {\n            started = true;\n        }\n    }\n    function stop() {\n        if (css)\n            delete_rule(node, name);\n        running = false;\n    }\n    loop(now$$1 => {\n        if (!started && now$$1 >= start_time) {\n            started = true;\n        }\n        if (started && now$$1 >= end) {\n            tick(1, 0);\n            stop();\n        }\n        if (!running) {\n            return false;\n        }\n        if (started) {\n            const p = now$$1 - start_time;\n            const t = 0 + 1 * easing(p / duration);\n            tick(t, 1 - t);\n        }\n        return true;\n    });\n    start();\n    tick(0, 1);\n    return stop;\n}\nfunction fix_position(node) {\n    const style = getComputedStyle(node);\n    if (style.position !== 'absolute' && style.position !== 'fixed') {\n        const { width, height } = style;\n        const a = node.getBoundingClientRect();\n        node.style.position = 'absolute';\n        node.style.width = width;\n        node.style.height = height;\n        const b = node.getBoundingClientRect();\n        if (a.left !== b.left || a.top !== b.top) {\n            const style = getComputedStyle(node);\n            const transform = style.transform === 'none' ? '' : style.transform;\n            node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n        }\n    }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n    current_component = component;\n}\nfunction get_current_component() {\n    if (!current_component)\n        throw new Error(`Function called outside component initialization`);\n    return current_component;\n}\nfunction beforeUpdate(fn) {\n    get_current_component().$$.before_render.push(fn);\n}\nfunction onMount(fn) {\n    get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n    get_current_component().$$.after_render.push(fn);\n}\nfunction onDestroy(fn) {\n    get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n    const component = current_component;\n    return (type, detail) => {\n        const callbacks = component.$$.callbacks[type];\n        if (callbacks) {\n            // TODO are there situations where events could be dispatched\n            // in a server (non-DOM) environment?\n            const event = custom_event(type, detail);\n            callbacks.slice().forEach(fn => {\n                fn.call(component, event);\n            });\n        }\n    };\n}\nfunction setContext(key, context) {\n    get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n    return get_current_component().$$.context.get(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n    const callbacks = component.$$.callbacks[event.type];\n    if (callbacks) {\n        callbacks.slice().forEach(fn => fn(event));\n    }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nfunction schedule_update() {\n    if (!update_scheduled) {\n        update_scheduled = true;\n        resolved_promise.then(flush);\n    }\n}\nfunction tick() {\n    schedule_update();\n    return resolved_promise;\n}\nfunction add_binding_callback(fn) {\n    binding_callbacks.push(fn);\n}\nfunction add_render_callback(fn) {\n    render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n    flush_callbacks.push(fn);\n}\nfunction flush() {\n    const seen_callbacks = new Set();\n    do {\n        // first, call beforeUpdate functions\n        // and update components\n        while (dirty_components.length) {\n            const component = dirty_components.shift();\n            set_current_component(component);\n            update(component.$$);\n        }\n        while (binding_callbacks.length)\n            binding_callbacks.shift()();\n        // then, once components are updated, call\n        // afterUpdate functions. This may cause\n        // subsequent updates...\n        while (render_callbacks.length) {\n            const callback = render_callbacks.pop();\n            if (!seen_callbacks.has(callback)) {\n                callback();\n                // ...so guard against infinite loops\n                seen_callbacks.add(callback);\n            }\n        }\n    } while (dirty_components.length);\n    while (flush_callbacks.length) {\n        flush_callbacks.pop()();\n    }\n    update_scheduled = false;\n}\nfunction update($$) {\n    if ($$.fragment) {\n        $$.update($$.dirty);\n        run_all($$.before_render);\n        $$.fragment.p($$.dirty, $$.ctx);\n        $$.dirty = null;\n        $$.after_render.forEach(add_render_callback);\n    }\n}\n\nlet promise;\nfunction wait() {\n    if (!promise) {\n        promise = Promise.resolve();\n        promise.then(() => {\n            promise = null;\n        });\n    }\n    return promise;\n}\nfunction dispatch(node, direction, kind) {\n    node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nlet outros;\nfunction group_outros() {\n    outros = {\n        remaining: 0,\n        callbacks: []\n    };\n}\nfunction check_outros() {\n    if (!outros.remaining) {\n        run_all(outros.callbacks);\n    }\n}\nfunction on_outro(callback) {\n    outros.callbacks.push(callback);\n}\nfunction create_in_transition(node, fn, params) {\n    let config = fn(node, params);\n    let running = false;\n    let animation_name;\n    let task;\n    let uid = 0;\n    function cleanup() {\n        if (animation_name)\n            delete_rule(node, animation_name);\n    }\n    function go() {\n        const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n        if (css)\n            animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n        tick$$1(0, 1);\n        const start_time = now() + delay;\n        const end_time = start_time + duration;\n        if (task)\n            task.abort();\n        running = true;\n        task = loop(now$$1 => {\n            if (running) {\n                if (now$$1 >= end_time) {\n                    tick$$1(1, 0);\n                    cleanup();\n                    return running = false;\n                }\n                if (now$$1 >= start_time) {\n                    const t = easing((now$$1 - start_time) / duration);\n                    tick$$1(t, 1 - t);\n                }\n            }\n            return running;\n        });\n    }\n    let started = false;\n    return {\n        start() {\n            if (started)\n                return;\n            delete_rule(node);\n            if (typeof config === 'function') {\n                config = config();\n                wait().then(go);\n            }\n            else {\n                go();\n            }\n        },\n        invalidate() {\n            started = false;\n        },\n        end() {\n            if (running) {\n                cleanup();\n                running = false;\n            }\n        }\n    };\n}\nfunction create_out_transition(node, fn, params) {\n    let config = fn(node, params);\n    let running = true;\n    let animation_name;\n    const group = outros;\n    group.remaining += 1;\n    function go() {\n        const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n        if (css)\n            animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n        const start_time = now() + delay;\n        const end_time = start_time + duration;\n        loop(now$$1 => {\n            if (running) {\n                if (now$$1 >= end_time) {\n                    tick$$1(0, 1);\n                    if (!--group.remaining) {\n                        // this will result in `end()` being called,\n                        // so we don't need to clean up here\n                        run_all(group.callbacks);\n                    }\n                    return false;\n                }\n                if (now$$1 >= start_time) {\n                    const t = easing((now$$1 - start_time) / duration);\n                    tick$$1(1 - t, t);\n                }\n            }\n            return running;\n        });\n    }\n    if (typeof config === 'function') {\n        wait().then(() => {\n            config = config();\n            go();\n        });\n    }\n    else {\n        go();\n    }\n    return {\n        end(reset) {\n            if (reset && config.tick) {\n                config.tick(1, 0);\n            }\n            if (running) {\n                if (animation_name)\n                    delete_rule(node, animation_name);\n                running = false;\n            }\n        }\n    };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n    let config = fn(node, params);\n    let t = intro ? 0 : 1;\n    let running_program = null;\n    let pending_program = null;\n    let animation_name = null;\n    function clear_animation() {\n        if (animation_name)\n            delete_rule(node, animation_name);\n    }\n    function init(program, duration) {\n        const d = program.b - t;\n        duration *= Math.abs(d);\n        return {\n            a: t,\n            b: program.b,\n            d,\n            duration,\n            start: program.start,\n            end: program.start + duration,\n            group: program.group\n        };\n    }\n    function go(b) {\n        const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n        const program = {\n            start: now() + delay,\n            b\n        };\n        if (!b) {\n            // @ts-ignore todo: improve typings\n            program.group = outros;\n            outros.remaining += 1;\n        }\n        if (running_program) {\n            pending_program = program;\n        }\n        else {\n            // if this is an intro, and there's a delay, we need to do\n            // an initial tick and/or apply CSS animation immediately\n            if (css) {\n                clear_animation();\n                animation_name = create_rule(node, t, b, duration, delay, easing, css);\n            }\n            if (b)\n                tick$$1(0, 1);\n            running_program = init(program, duration);\n            add_render_callback(() => dispatch(node, b, 'start'));\n            loop(now$$1 => {\n                if (pending_program && now$$1 > pending_program.start) {\n                    running_program = init(pending_program, duration);\n                    pending_program = null;\n                    dispatch(node, running_program.b, 'start');\n                    if (css) {\n                        clear_animation();\n                        animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n                    }\n                }\n                if (running_program) {\n                    if (now$$1 >= running_program.end) {\n                        tick$$1(t = running_program.b, 1 - t);\n                        dispatch(node, running_program.b, 'end');\n                        if (!pending_program) {\n                            // we're done\n                            if (running_program.b) {\n                                // intro — we can tidy up immediately\n                                clear_animation();\n                            }\n                            else {\n                                // outro — needs to be coordinated\n                                if (!--running_program.group.remaining)\n                                    run_all(running_program.group.callbacks);\n                            }\n                        }\n                        running_program = null;\n                    }\n                    else if (now$$1 >= running_program.start) {\n                        const p = now$$1 - running_program.start;\n                        t = running_program.a + running_program.d * easing(p / running_program.duration);\n                        tick$$1(t, 1 - t);\n                    }\n                }\n                return !!(running_program || pending_program);\n            });\n        }\n    }\n    return {\n        run(b) {\n            if (typeof config === 'function') {\n                wait().then(() => {\n                    config = config();\n                    go(b);\n                });\n            }\n            else {\n                go(b);\n            }\n        },\n        end() {\n            clear_animation();\n            running_program = pending_program = null;\n        }\n    };\n}\n\nfunction handle_promise(promise, info) {\n    const token = info.token = {};\n    function update(type, index, key, value) {\n        if (info.token !== token)\n            return;\n        info.resolved = key && { [key]: value };\n        const child_ctx = assign(assign({}, info.ctx), info.resolved);\n        const block = type && (info.current = type)(child_ctx);\n        if (info.block) {\n            if (info.blocks) {\n                info.blocks.forEach((block, i) => {\n                    if (i !== index && block) {\n                        group_outros();\n                        on_outro(() => {\n                            block.d(1);\n                            info.blocks[i] = null;\n                        });\n                        block.o(1);\n                        check_outros();\n                    }\n                });\n            }\n            else {\n                info.block.d(1);\n            }\n            block.c();\n            if (block.i)\n                block.i(1);\n            block.m(info.mount(), info.anchor);\n            flush();\n        }\n        info.block = block;\n        if (info.blocks)\n            info.blocks[index] = block;\n    }\n    if (is_promise(promise)) {\n        promise.then(value => {\n            update(info.then, 1, info.value, value);\n        }, error => {\n            update(info.catch, 2, info.error, error);\n        });\n        // if we previously had a then/catch block, destroy it\n        if (info.current !== info.pending) {\n            update(info.pending, 0);\n            return true;\n        }\n    }\n    else {\n        if (info.current !== info.then) {\n            update(info.then, 1, info.value, promise);\n            return true;\n        }\n        info.resolved = { [info.value]: promise };\n    }\n}\n\nfunction destroy_block(block, lookup) {\n    block.d(1);\n    lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n    on_outro(() => {\n        destroy_block(block, lookup);\n    });\n    block.o(1);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n    block.f();\n    outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, changed, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n    let o = old_blocks.length;\n    let n = list.length;\n    let i = o;\n    const old_indexes = {};\n    while (i--)\n        old_indexes[old_blocks[i].key] = i;\n    const new_blocks = [];\n    const new_lookup = new Map();\n    const deltas = new Map();\n    i = n;\n    while (i--) {\n        const child_ctx = get_context(ctx, list, i);\n        const key = get_key(child_ctx);\n        let block = lookup.get(key);\n        if (!block) {\n            block = create_each_block(key, child_ctx);\n            block.c();\n        }\n        else if (dynamic) {\n            block.p(changed, child_ctx);\n        }\n        new_lookup.set(key, new_blocks[i] = block);\n        if (key in old_indexes)\n            deltas.set(key, Math.abs(i - old_indexes[key]));\n    }\n    const will_move = new Set();\n    const did_move = new Set();\n    function insert(block) {\n        if (block.i)\n            block.i(1);\n        block.m(node, next);\n        lookup.set(block.key, block);\n        next = block.first;\n        n--;\n    }\n    while (o && n) {\n        const new_block = new_blocks[n - 1];\n        const old_block = old_blocks[o - 1];\n        const new_key = new_block.key;\n        const old_key = old_block.key;\n        if (new_block === old_block) {\n            // do nothing\n            next = new_block.first;\n            o--;\n            n--;\n        }\n        else if (!new_lookup.has(old_key)) {\n            // remove old block\n            destroy(old_block, lookup);\n            o--;\n        }\n        else if (!lookup.has(new_key) || will_move.has(new_key)) {\n            insert(new_block);\n        }\n        else if (did_move.has(old_key)) {\n            o--;\n        }\n        else if (deltas.get(new_key) > deltas.get(old_key)) {\n            did_move.add(new_key);\n            insert(new_block);\n        }\n        else {\n            will_move.add(old_key);\n            o--;\n        }\n    }\n    while (o--) {\n        const old_block = old_blocks[o];\n        if (!new_lookup.has(old_block.key))\n            destroy(old_block, lookup);\n    }\n    while (n)\n        insert(new_blocks[n - 1]);\n    return new_blocks;\n}\nfunction measure(blocks) {\n    const rects = {};\n    let i = blocks.length;\n    while (i--)\n        rects[blocks[i].key] = blocks[i].node.getBoundingClientRect();\n    return rects;\n}\n\nfunction get_spread_update(levels, updates) {\n    const update = {};\n    const to_null_out = {};\n    const accounted_for = { $$scope: 1 };\n    let i = levels.length;\n    while (i--) {\n        const o = levels[i];\n        const n = updates[i];\n        if (n) {\n            for (const key in o) {\n                if (!(key in n))\n                    to_null_out[key] = 1;\n            }\n            for (const key in n) {\n                if (!accounted_for[key]) {\n                    update[key] = n[key];\n                    accounted_for[key] = 1;\n                }\n            }\n            levels[i] = n;\n        }\n        else {\n            for (const key in o) {\n                accounted_for[key] = 1;\n            }\n        }\n    }\n    for (const key in to_null_out) {\n        if (!(key in update))\n            update[key] = undefined;\n    }\n    return update;\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args) {\n    const attributes = Object.assign({}, ...args);\n    let str = '';\n    Object.keys(attributes).forEach(name => {\n        if (invalid_attribute_name_character.test(name))\n            return;\n        const value = attributes[name];\n        if (value === undefined)\n            return;\n        if (value === true)\n            str += \" \" + name;\n        const escaped = String(value)\n            .replace(/\"/g, '&#34;')\n            .replace(/'/g, '&#39;');\n        str += \" \" + name + \"=\" + JSON.stringify(escaped);\n    });\n    return str;\n}\nconst escaped = {\n    '\"': '&quot;',\n    \"'\": '&#39;',\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;'\n};\nfunction escape(html) {\n    return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction each(items, fn) {\n    let str = '';\n    for (let i = 0; i < items.length; i += 1) {\n        str += fn(items[i], i);\n    }\n    return str;\n}\nconst missing_component = {\n    $$render: () => ''\n};\nfunction validate_component(component, name) {\n    if (!component || !component.$$render) {\n        if (name === 'svelte:component')\n            name += ' this={...}';\n        throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n    }\n    return component;\n}\nfunction debug(file, line, column, values) {\n    console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n    console.log(values); // eslint-disable-line no-console\n    return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n    function $$render(result, props, bindings, slots) {\n        const parent_component = current_component;\n        const $$ = {\n            on_destroy,\n            context: new Map(parent_component ? parent_component.$$.context : []),\n            // these will be immediately discarded\n            on_mount: [],\n            before_render: [],\n            after_render: [],\n            callbacks: blank_object()\n        };\n        set_current_component({ $$ });\n        const html = fn(result, props, bindings, slots);\n        set_current_component(parent_component);\n        return html;\n    }\n    return {\n        render: (props = {}, options = {}) => {\n            on_destroy = [];\n            const result = { head: '', css: new Set() };\n            const html = $$render(result, props, {}, options);\n            run_all(on_destroy);\n            return {\n                html,\n                css: {\n                    code: Array.from(result.css).map(css => css.code).join('\\n'),\n                    map: null // TODO\n                },\n                head: result.head\n            };\n        },\n        $$render\n    };\n}\nfunction get_store_value(store) {\n    let value;\n    store.subscribe(_ => value = _)();\n    return value;\n}\n\nfunction bind(component, name, callback) {\n    if (component.$$.props.indexOf(name) === -1)\n        return;\n    component.$$.bound[name] = callback;\n    callback(component.$$.ctx[name]);\n}\nfunction mount_component(component, target, anchor) {\n    const { fragment, on_mount, on_destroy, after_render } = component.$$;\n    fragment.m(target, anchor);\n    // onMount happens after the initial afterUpdate. Because\n    // afterUpdate callbacks happen in reverse order (inner first)\n    // we schedule onMount callbacks before afterUpdate callbacks\n    add_render_callback(() => {\n        const new_on_destroy = on_mount.map(run).filter(is_function);\n        if (on_destroy) {\n            on_destroy.push(...new_on_destroy);\n        }\n        else {\n            // Edge case - component was destroyed immediately,\n            // most likely as a result of a binding initialising\n            run_all(new_on_destroy);\n        }\n        component.$$.on_mount = [];\n    });\n    after_render.forEach(add_render_callback);\n}\nfunction destroy(component, detaching) {\n    if (component.$$) {\n        run_all(component.$$.on_destroy);\n        component.$$.fragment.d(detaching);\n        // TODO null out other refs, including component.$$ (but need to\n        // preserve final state?)\n        component.$$.on_destroy = component.$$.fragment = null;\n        component.$$.ctx = {};\n    }\n}\nfunction make_dirty(component, key) {\n    if (!component.$$.dirty) {\n        dirty_components.push(component);\n        schedule_update();\n        component.$$.dirty = blank_object();\n    }\n    component.$$.dirty[key] = true;\n}\nfunction init(component, options, instance, create_fragment, not_equal$$1, prop_names) {\n    const parent_component = current_component;\n    set_current_component(component);\n    const props = options.props || {};\n    const $$ = component.$$ = {\n        fragment: null,\n        ctx: null,\n        // state\n        props: prop_names,\n        update: noop,\n        not_equal: not_equal$$1,\n        bound: blank_object(),\n        // lifecycle\n        on_mount: [],\n        on_destroy: [],\n        before_render: [],\n        after_render: [],\n        context: new Map(parent_component ? parent_component.$$.context : []),\n        // everything else\n        callbacks: blank_object(),\n        dirty: null\n    };\n    let ready = false;\n    $$.ctx = instance\n        ? instance(component, props, (key, value) => {\n            if ($$.ctx && not_equal$$1($$.ctx[key], $$.ctx[key] = value)) {\n                if ($$.bound[key])\n                    $$.bound[key](value);\n                if (ready)\n                    make_dirty(component, key);\n            }\n        })\n        : props;\n    $$.update();\n    ready = true;\n    run_all($$.before_render);\n    $$.fragment = create_fragment($$.ctx);\n    if (options.target) {\n        if (options.hydrate) {\n            $$.fragment.l(children(options.target));\n        }\n        else {\n            $$.fragment.c();\n        }\n        if (options.intro && component.$$.fragment.i)\n            component.$$.fragment.i();\n        mount_component(component, options.target, options.anchor);\n        flush();\n    }\n    set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement !== 'undefined') {\n    SvelteElement = class extends HTMLElement {\n        constructor() {\n            super();\n            this.attachShadow({ mode: 'open' });\n        }\n        connectedCallback() {\n            // @ts-ignore todo: improve typings\n            for (const key in this.$$.slotted) {\n                // @ts-ignore todo: improve typings\n                this.appendChild(this.$$.slotted[key]);\n            }\n        }\n        attributeChangedCallback(attr$$1, oldValue, newValue) {\n            this[attr$$1] = newValue;\n        }\n        $destroy() {\n            destroy(this, true);\n            this.$destroy = noop;\n        }\n        $on(type, callback) {\n            // TODO should this delegate to addEventListener?\n            const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n            callbacks.push(callback);\n            return () => {\n                const index = callbacks.indexOf(callback);\n                if (index !== -1)\n                    callbacks.splice(index, 1);\n            };\n        }\n        $set() {\n            // overridden by instance, if it has props\n        }\n    };\n}\nclass SvelteComponent {\n    $destroy() {\n        destroy(this, true);\n        this.$destroy = noop;\n    }\n    $on(type, callback) {\n        const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n        callbacks.push(callback);\n        return () => {\n            const index = callbacks.indexOf(callback);\n            if (index !== -1)\n                callbacks.splice(index, 1);\n        };\n    }\n    $set() {\n        // overridden by instance, if it has props\n    }\n}\nclass SvelteComponentDev extends SvelteComponent {\n    constructor(options) {\n        if (!options || (!options.target && !options.$$inline)) {\n            throw new Error(`'target' is a required option`);\n        }\n        super();\n    }\n    $destroy() {\n        super.$destroy();\n        this.$destroy = () => {\n            console.warn(`Component was already destroyed`); // eslint-disable-line no-console\n        };\n    }\n}\n\nexport { create_animation, fix_position, handle_promise, append, insert, detach, detach_between, detach_before, detach_after, destroy_each, element, object_without_properties, svg_element, text, space, empty, listen, prevent_default, stop_propagation, attr, set_attributes, set_custom_element_data, xlink_attr, get_binding_group_value, to_number, time_ranges_to_array, children, claim_element, claim_text, set_data, set_input_type, set_style, select_option, select_options, select_value, select_multiple_value, add_resize_listener, toggle_class, custom_event, destroy_block, outro_and_destroy_block, fix_and_outro_and_destroy_block, update_keyed_each, measure, current_component, set_current_component, beforeUpdate, onMount, afterUpdate, onDestroy, createEventDispatcher, setContext, getContext, bubble, clear_loops, loop, dirty_components, intros, schedule_update, tick, add_binding_callback, add_render_callback, add_flush_callback, flush, get_spread_update, invalid_attribute_name_character, spread, escaped, escape, each, missing_component, validate_component, debug, create_ssr_component, get_store_value, group_outros, check_outros, on_outro, create_in_transition, create_out_transition, create_bidirectional_transition, noop, identity, assign, is_promise, add_location, run, blank_object, run_all, is_function, safe_not_equal, not_equal, validate_store, subscribe, create_slot, get_slot_context, get_slot_changes, exclude_internal_props, now, raf, set_now, set_raf, bind, mount_component, init, SvelteElement, SvelteComponent, SvelteComponentDev };\n","import { noop, safe_not_equal, run_all, is_function } from './internal';\n\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n    return {\n        subscribe: writable(value, start).subscribe,\n    };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n    let stop;\n    const subscribers = [];\n    function set(new_value) {\n        if (safe_not_equal(value, new_value)) {\n            value = new_value;\n            if (!stop) {\n                return; // not ready\n            }\n            subscribers.forEach((s) => s[1]());\n            subscribers.forEach((s) => s[0](value));\n        }\n    }\n    function update(fn) {\n        set(fn(value));\n    }\n    function subscribe(run, invalidate = noop) {\n        const subscriber = [run, invalidate];\n        subscribers.push(subscriber);\n        if (subscribers.length === 1) {\n            stop = start(set) || noop;\n        }\n        run(value);\n        return () => {\n            const index = subscribers.indexOf(subscriber);\n            if (index !== -1) {\n                subscribers.splice(index, 1);\n            }\n            if (subscribers.length === 0) {\n                stop();\n            }\n        };\n    }\n    return { set, update, subscribe };\n}\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n * @param {Stores} stores input stores\n * @param {function(Stores=, function(*)=):*}fn function callback that aggregates the values\n * @param {*=}initial_value when used asynchronously\n */\nfunction derived(stores, fn, initial_value) {\n    const single = !Array.isArray(stores);\n    const stores_array = single\n        ? [stores]\n        : stores;\n    const auto = fn.length < 2;\n    return readable(initial_value, (set) => {\n        let inited = false;\n        const values = [];\n        let pending = 0;\n        let cleanup = noop;\n        const sync = () => {\n            if (pending) {\n                return;\n            }\n            cleanup();\n            const result = fn(single ? values[0] : values, set);\n            if (auto) {\n                set(result);\n            }\n            else {\n                cleanup = is_function(result) ? result : noop;\n            }\n        };\n        const unsubscribers = stores_array.map((store, i) => store.subscribe((value) => {\n            values[i] = value;\n            pending &= ~(1 << i);\n            if (inited) {\n                sync();\n            }\n        }, () => {\n            pending |= (1 << i);\n        }));\n        inited = true;\n        sync();\n        return function stop() {\n            run_all(unsubscribers);\n            cleanup();\n        };\n    });\n}\n/**\n * Get the current value from a store by subscribing and immediately unsubscribing.\n * @param store readable\n */\nfunction get(store) {\n    let value;\n    store.subscribe((_) => value = _)();\n    return value;\n}\n\nexport { readable, writable, derived, get };\n","/**\n *  These store is rensposible of handling the \"fake routing\" of the application,\n *  its a routing without browser history\n *\n */\nimport { writable, derived } from 'svelte/store';\n\nfunction createRouterStore() {\n  const { subscribe, set } = writable({\n    path: '/',\n    params: {}\n  });\n\n  return {\n    subscribe,\n    // Go To the defined path with the defined params\n    goTo: (path, params = {}) => set({ path, params })\n  };\n}\n\nexport const router = createRouterStore();\n\nexport const isCurrentPath = path =>\n  derived(router, $router => $router.path === path);\n","<script>\n    import {isCurrentPath} from '../store/router';\n    \n    export let component;\n    export let path;\n\n    const isActive = isCurrentPath(path);\n</script>\n\n<!-- Shows only the Active Component -->\n{#if $isActive}\n<svelte:component this={component} />\n{/if}","/**\n * Performs an Ajax Call\n *\n * @param {*} options\n * \n * @returns a fetch call\n */\nexport function ajaxCall(options = {}) {\n  const {\n    action,\n    nonce,\n    nonceField,\n    data,\n    method,\n    credentials,\n    url\n  } = options;\n\n  if (!action) {\n    throw new TypeError('Cannot make ajax call without action');\n  }\n  if (!nonce) {\n    throw new TypeError('Cannot make ajax call without nonce');\n  }\n  \n  if (data && typeof data !== 'object') {\n    throw new TypeError('Data to send must be an object');\n  }\n\n  // WordPress automatically defines ajaxurl since WordPress 2.8\n  if (!url && !window.ajaxurl) {\n    throw new TypeError('Cannot make ajax call without url');\n  }\n\n  let formData = new FormData();\n  formData.append('action', action);\n  formData.append(nonceField || 'security', nonce);\n\n  if (data) {\n    // appends data as form encoded\n    for (let key in data) {\n      formData.append(key, data[key]);\n    }\n  }\n\n  return fetch(url || window.ajaxurl, {\n    method: method || 'POST',\n    body: formData,\n    credentials: credentials || 'same-origin'\n  });\n}\n","import { writable } from 'svelte/store';\n\nfunction createNotificationStore() {\n    const { subscribe, update } = writable({\n        currentNotification: null\n      });\n    \n      return {\n        subscribe,\n        // Go To the defined path with the defined params\n        addNotification: (message, type = \"success\") => {\n            update( data => {\n                data.currentNotification = {message, type};\n                return {...data}\n            });\n            setTimeout(() => {\n                update( data => {\n                    data.currentNotification = null;\n                    return {...data}\n                })\n            }, 5000)\n        }\n      };\n}\n\nexport const notifications = createNotificationStore();\n","/**\n *\n * This store handles webflow data and makes api calls\n *\n */\nimport { writable } from 'svelte/store';\nimport { router } from './router';\nimport { ajaxCall } from '../utils/ajax';\nimport { notifications } from '../store/notifications';\n\nconst {\n  hasToken,\n  nonce,\n  pages,\n  collections,\n  site,\n  staticRules,\n  dynamicRules,\n  error,\n  cacheDuration\n} = window._wfAjaxData;\n\nif (site) {\n  site.dashboardUrl = `https://webflow.com/dashboard/sites/${site.shortName}/settings`\n}\n\nif (error) {\n    router.goTo('/login');\n    notifications.addNotification(error, \"error\");\n} else {\n  if (hasToken === 'true') {\n    router.goTo('/configuration');\n  } else {\n    router.goTo('/login');\n  }\n}\n\nfunction createWfDataStore() {\n  const { subscribe, set, update } = writable({\n    pages: pages || [],\n    collections: collections || [],\n    site: site || undefined,\n    staticRules: staticRules || [],\n    dynamicRules: dynamicRules || [],\n    cacheDuration: cacheDuration || 0\n  });\n\n  return {\n    subscribe,\n    // Go To the defined path with the defined params\n    saveToken: async token => {\n      try {\n        await ajaxCall({\n          nonce,\n          data: {\n            token\n          },\n          action: 'save_wf_token'\n        });\n\n        const call = await ajaxCall({\n          nonce,\n          action: 'get_wf_site_data'\n        });\n\n        let res = await call.json();\n        if (res.success) {\n          // set data\n          set({\n            pages: res.data.pages || [],\n            collections: res.data.collections || [],\n            site: res.data.site,\n            dynamicRules: [],\n            staticRules: []\n          });\n          notifications.addNotification('Token Saved Successfully');\n          // switch page\n          router.goTo('/configuration');\n        } else {\n          // invalid token prob\n          const error = res.data[0] || {\n            code: '401',\n            message: 'Invalid Token'\n          };\n          notifications.addNotification(error.message, 'error');\n        }\n      } catch (e) {\n        // should be an issue with server\n        const error = {\n          code: e.code || '500',\n          message: e.message || 'Cannot save api token, please try again later'\n        };\n        notifications.addNotification(error.message, 'error');\n      }\n    },\n    removeToken: async () => {\n      try {\n        await ajaxCall({\n          nonce,\n          action: 'remove_wf_token'\n        });\n        notifications.addNotification('Token removed successfully');\n        window.location.reload();\n        \n      } catch (e) {\n        const error = {\n          code: e.code || '500',\n          message: e.message || 'Cannot remove token, please try again later'\n        };\n        notifications.addNotification(error.message, 'error');\n      }\n    },\n    addStaticRule: (rule) => {\n      update(data => {\n        data.staticRules.push(rule);\n        return {\n          ...data\n        };\n      });\n    },\n    removeStaticRule: index => {\n      update(data => {\n        data.staticRules.splice(index, 1);\n        return {\n          ...data\n        };\n      });\n    },\n    addDynamicRule: (rule) => {\n      update(data => {\n        data.dynamicRules.push(rule); // [`/${slug}/*`, `/${slug}/`]\n        return {\n          ...data\n        };\n      });\n    },\n    removeDynamicRule: index => {\n      update(data => {\n        data.dynamicRules.splice(index, 1);\n        return {\n          ...data\n        };\n      });\n    },\n    saveStaticRules: async rules => {\n      try {\n        const call = await ajaxCall({\n          action: 'save_wf_static_rules',\n          nonce,\n          data: {\n            rules: JSON.stringify(rules)\n          }\n        });\n\n        const res = await call.json();\n        if (res.success) {\n          const staticRules = res.data;\n          update(n => {\n            n.staticRules = staticRules;\n            return {\n              ...n\n            };\n          });\n          notifications.addNotification(`Rules saved successfully`);\n          return true;\n        } else {\n          const error = res.data[0] || {\n            code: '500',\n            message: 'Internal Server Error'\n          };\n          notifications.addNotification(error.message, 'error');\n          return false;\n        }\n      } catch (e) {\n        const error = {\n          code: e.code || '500',\n          message: e.message || 'Cannot save data please, try again later'\n        };\n        notifications.addNotification(error.message, 'error');\n        return false;\n      }\n    },\n    saveDynamicRules: async rules => {\n      try {\n        const call = await ajaxCall({\n          action: 'save_wf_dynamic_rules',\n          nonce,\n          data: {\n            rules: JSON.stringify(rules)\n          }\n        });\n\n        const res = await call.json();\n        if (res.success) {\n          const dynamicRules = res.data;\n          update(n => {\n            n.dynamicRules = dynamicRules;\n            return {\n              ...n\n            };\n          });\n          notifications.addNotification(`Rules saved successfully`);\n          return true;\n        } else {\n          const error = res.data[0] || {\n            code: '500',\n            message: 'Internal Server Error'\n          };\n          notifications.addNotification(error.message, 'error');\n          return false;\n        }\n      } catch (e) {\n        const error = {\n          code: e.code || '500',\n          message: e.message || 'Cannot save data please, try again later'\n        };\n        notifications.addNotification(error.message, 'error');\n        return false;\n      }\n    },\n    invalidateCache: async () => {\n      try {\n        const call = await ajaxCall({\n          action: 'invalidate_wf_cache',\n          nonce\n        });\n        const res = await call.json();\n        if (res.success) {\n          notifications.addNotification(`Cache invalidated successfully`);\n          return true;\n        } else {\n          const error = res.data[0] || {\n            code: '500',\n            message: 'Internal Server Error'\n          };\n          notifications.addNotification(error.message, 'error');\n          return false;\n        }\n      } catch (e) {\n        const error = {\n          code: e.code || '500',\n          message: e.message || 'Cannot save data please, try again later'\n        };\n        notifications.addNotification(error.message, 'error');\n        return false;\n      }\n    },\n    changeCache: async (duration) => {\n      try {\n        const call = await ajaxCall({\n          action: 'change_wf_cache_duration',\n          nonce,\n          data: {\n            duration\n          }\n        });\n        const res = await call.json();\n        if (res.success) {\n          notifications.addNotification(`Cache settings changed successfully`);\n          return true;\n        } else {\n          const error = res.data[0] || {\n            code: '500',\n            message: 'Internal Server Error'\n          };\n          notifications.addNotification(error.message, 'error');\n          return false;\n        }\n      } catch (e) {\n        const error = {\n          code: e.code || '500',\n          message: e.message || 'Cannot save data please, try again later'\n        };\n        notifications.addNotification(error.message, 'error');\n        return false;\n      }\n    },\n    preloadCache: async () => {\n      try {\n        const call = await ajaxCall({\n          action: 'preload_wf_cache',\n          nonce\n        });\n        const res = await call.json();\n        if (res.success) {\n          const pages = res.data || 0;\n          notifications.addNotification(\n            `Preloaded ${pages} ${pages == 1 ? 'page' : 'pages'}!`\n          );\n          return true;\n        } else {\n          const error = res.data[0] || {\n            code: '500',\n            message: 'Internal Server Error'\n          };\n          notifications.addNotification(error.message, 'error');\n          return false;\n        }\n      } catch (e) {\n        const error = {\n          code: e.code || '500',\n          message: e.message || 'Cannot save data please, try again later'\n        };\n        notifications.addNotification(error.message, 'error');\n        return false;\n      }\n    }\n  };\n}\n\nexport const store = createWfDataStore();\n","<script>\n  export let value = \"Submit\";\n  export let disabled = false;\n  export let variation = null;\n</script>\n\n<style>\n  input[type=\"submit\"] {\n    -webkit-appearance: button;\n  }\n\n  input[type=\"submit\"] {\n    display: inline-block;\n    padding: 9px 15px;\n    color: white;\n    border: 0;\n    line-height: inherit;\n    text-decoration: none;\n    cursor: pointer;\n    border-radius: 4px;\n  }\n\n  .form_submit-button {\n    width: 100%;\n    height: 50px;\n    padding-right: 28px;\n    padding-left: 28px;\n    background-color: #4353ff;\n    font-weight: 500;\n  }\n\n  .form_submit-button:hover {\n    background-color: #3545ee;\n  }\n  .form_submit-button:disabled {\n    opacity: 0.7;\n    cursor: not-allowed;\n  }\n  .form_submit-button[variation=\"small\"] {\n    width: 150px;\n    height: auto;\n  }\n\n  .form_submit-button[variation=\"black\"] {\n    width: auto;\n    height: auto;\n    padding-right: 28px;\n    padding-left: 28px;\n    background-color: #333;\n    font-weight: 500;\n  }\n\n  .form_submit-button[variation=\"black\"]:hover {\n    background-color: #000;\n  }\n\n  .form_submit-button[variation=\"red\"] {\n    width: auto;\n    height: auto;\n    padding-right: 28px;\n    padding-left: 28px;\n    background-color: #ff6382;\n    font-weight: 500;\n  }\n\n  .form_submit-button[variation=\"red\"]:hover {\n    background-color: #ff6382;\n  }\n\n  .form_submit-button[variation=\"grey\"] {\n    width: auto;\n    height: auto;\n    padding-right: 28px;\n    padding-left: 28px;\n    background-color: #d2d4d5;\n    font-weight: 500;\n  }\n\n  .form_submit-button[variation=\"grey\"]:hover {\n    background-color: #d2d4d5;\n  }\n</style>\n\n<input\n  type=\"submit\"\n  {value}\n  class=\"form_submit-button\"\n  {variation}\n  {disabled} />\n","<script>\n  export let forHtml = \"\";\n</script>\n\n<style>\n  .field_label {\n    margin-top: 6px;\n    margin-bottom: 6px;\n    color: #999999;\n    font-size: 12px;\n    line-height: 18px;\n    font-weight: bold;\n    display: block;\n  }\n</style>\n\n<label class=\"field_label\" for={forHtml}>\n  <slot />\n</label>\n","<script>\n  import { store } from \"../store/wfData\";\n  import Container from \"../components/Container.svelte\";\n\n  import Submit from \"../components/Submit.svelte\";\n  import Label from \"../components/Label.svelte\";\n  import { writable } from \"svelte/store\";\n  import Logo from \"../components/Logo.svelte\";\n\n  const loginStore = writable({\n    disabled: false,\n    value: \"Add Webflow API Key\"\n  });\n\n  let token = \"\";\n\n  const handleSubmit = async e => {\n    e.preventDefault();\n    loginStore.set({ disabled: true, value: \"Saving...\" });\n    await store.saveToken(token);\n    loginStore.set({ disabled: false, value: \"Add Webflow API Key\" });\n  };\n</script>\n\n<style>\n  .login-wrapper {\n    background-color: white;\n    padding: 40px;\n    border-radius: 4px;\n    border: 1px solid #f7f7f7;\n    width: 450px;\n    text-align: center;\n  }\n  form {\n    max-width: 500px;\n    margin: auto;\n  }\n  p {\n    text-align: center;\n    margin: 0;\n    margin-bottom: 30px;\n    font-size: 14px;\n  }\n  a {\n    color: black;\n    text-align: center;\n    outline: 0;\n    box-shadow: none;\n  }\n  input.field-input {\n    margin-bottom: 10px;\n    background-color: #f7f8f9;\n  }\n\n  .warning-notice {\n    background-color: #f7f8f9;\n    padding: 20px;\n    border-radius: 4px;\n    margin-top: 20px;\n  }\n</style>\n\n<Container>\n  <div class=\"login-wrapper\">\n    <Logo />\n    <b>Congratulations on installing the Webflow Wordpress plugin!</b>\n    <p>\n      You can find your site's API key by going to the <a href=\"https://webflow.com/dashboard?utm_source=wpplugin\" target=\"_blank\" rel=\"nofollow\">Webflow Dashboard</a>, then your site's settings\n    </p>\n    <form on:submit={handleSubmit}>\n\n      <input\n        class=\"field-input\"\n        bind:value={token}\n        type=\"password\"\n        name=\"api_keys\"\n        autocomplete=\"off\"\n        placeholder=\"Your Api Key...\"\n        required />\n      <Submit value={$loginStore.value} disabled={$loginStore.disabled} />\n    </form>\n\n    <div class=\"warning-notice\">\n      This version of the plugin is not compatible with Webflow Ecommerce. Please contact <a href=\"https://university.webflow.com/contact\" target=\"_blank\" rel=\"nofollow\">Webflow Support</a> for any help with the plugin.\n    </div>\n  </div>\n</Container>\n","<script>\n  import { router } from \"../store/router\";\n  import { isCurrentPath } from \"../store/router\";\n\n  export let path;\n  export let params = {};\n\n  export let text = \"\";\n\n  const handleClick = e => {\n    e.preventDefault();\n    router.goTo(path, params);\n  };\n\n  const isActive = isCurrentPath(path);\n \n</script>\n\n<style>\n  a {\n    height: 36px;\n    margin-bottom: 0px;\n    margin-right: 10px;\n    padding-left: 10px;\n    padding-right: 10px;\n    -webkit-box-flex: 0;\n    -webkit-flex: 0 0 auto;\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    -webkit-transition: color 200ms ease-in-out;\n    transition: color 200ms ease-in-out;\n    color: #888;\n    font-size: 15px;\n    line-height: 37px;\n    font-weight: 500;\n    text-decoration: none;\n    border-bottom: 2px solid transparent;\n  }\n  a:hover {\n    color: #000;\n  }\n  a.is-active {\n    color: #000;\n    border-bottom: 2px solid #000;\n  }\n  a:focus {\n    outline: none;\n    box-shadow: none;\n  }\n</style>\n\n<a href=\"/\" on:click={handleClick} class={$isActive ? 'is-active' : ''}>\n  {text}\n</a>\n"," <script>\n import Navbar from './Navbar.svelte';\n import Link from './Link.svelte';\n </script>\n \n <Navbar>\n    <Link path=\"/configuration\" text={\"Pages\"}></Link>\n    <Link path=\"/settings\" text={\"Settings\"}></Link>\n </Navbar>","<script>\n  import { store } from \"../store/wfData\";\n  import Submit from \"./Submit.svelte\";\n  import Label from \"./Label.svelte\";\n  import { writable } from \"svelte/store\";\n  import { onMount } from \"svelte\";\n\n  const hasItems = $store.staticRules.length > 0;\n\n  let staticRule = [\"\", \"\"];\n\n  let canAdd = false;\n\n\n  const handleSubmit = async e => {\n    e.preventDefault();\n   \n    await store.saveStaticRules($store.staticRules);\n    \n  };\n\n  const addStaticRule = e => {\n    e.preventDefault();\n    document.activeElement.blur();\n    store.addStaticRule(staticRule);\n    staticRule = [\"\", \"\"];\n    canAdd = false;\n    store.saveStaticRules($store.staticRules);\n  };\n\n  const removeStaticRule = index => {\n    store.removeStaticRule(index);\n    store.saveStaticRules($store.staticRules);\n  };\n\n  const handleInput = ({ target }) => {\n    let value = target.value;\n    let isAdd = target.getAttribute(\"data-add\");\n    target.value = encodeURI(decodeURI(value)); // little sanitification\n    value = target.value;\n    const match = value.match(/^(\\.?){2}(\\/[a-zA-Z0-9_\\-]+)+\\/?$/g);\n    if (match && match[0] === value || value === \"/\") {\n      target.setCustomValidity(\"\");\n      if (isAdd) {\n        canAdd = true;\n      }\n    } else {\n      target.setCustomValidity(\"Invalid field.\");\n      if (isAdd) {\n        canAdd = false;\n      }\n    }\n  };\n\n  const pages = $store.pages.filter( page => page !== '/404' && page !== '/401' );\n</script>\n\n<style>\n  \n  .headers h3 {\n    margin: 0;\n    height: 10%;\n    margin-bottom: 6px;\n  }\n  .form-wrapper {\n    display: flex;\n    flex-direction: column;\n    height: auto;\n    padding: 0px 10px;\n    border-radius: 4px;\n    margin-bottom: 10px;\n  }\n\n  .form-wrapper.new-page {\n    background-color: #f7f8f9;\n  }\n\n  form.configuration-form {\n    border-radius: 4px;\n    height: calc(100% - 32px);\n    width: 100%;\n    display: inline-flex;\n\n    flex-direction: column;\n  }\n\n  .section-description {\n    font-size: 12px;\n    font-weight: bold;\n  }\n  .no-pages-added {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    flex: 1;\n    width: 100%;\n    background-color: #f7f7f7;\n    border: 1px solid #f7f7f7;\n  }\n  .no-pages-added p {\n    font-size: 14px;\n    font-weight: 700;\n  }\n  .added-pages {\n    flex: 1;\n    display: inline-flex;\n    flex-direction: column;\n  }\n  .added-pages .fields-wrapper, .added-pages .fields-headers{\n    padding: 0 10px;\n    background-color: #f7f8f9;\n  }\n</style>\n\n<div class=\"wrapper\">\n  <div style=\"display: flex; flex-direction: column; justify-content: space-evenly;\">\n    <div class=\"headers\">\n      <h3>Static Pages</h3>\n    \n    </div>\n    <div class=\"form-wrapper new-page\">\n    <p class=\"section-description\">Create a new redirect</p>\n      <p class=\"description-subtitle\">Create redirects to serve a made-in-Webflow page in place of a WordPress Page</p>\n      <div class=\"grid grid-with-actions \">\n        <div>\n          <Label>WordPress Path</Label>\n        </div>\n        <div>\n          <Label>Webflow Page</Label>\n        </div>\n        <div style=\"visibility:hidden\">\n          <button disabled class=\"button add\">+</button>\n        </div>\n      </div>\n      <div class=\"input-wrapper\">\n\n        <form on:submit={addStaticRule} class=\"grid grid-with-actions\">\n          <div>\n            <input\n              data-add=\"true\"\n              class=\"field-input\"\n              type=\"text\"\n              bind:value={staticRule[0]}\n              required\n              placeholder=\"/path\"\n              on:input={handleInput} />\n            <small class=\"error-message\">\n              Path must start with / and be valid URLs\n            </small>\n          </div>\n          <div>\n\n            <select bind:value={staticRule[1]} class=\"field-select\">\n              {#each pages as page}\n                <option value={page}>\n                   {page.substr(1).replace('index.html', 'Home Page')}\n                </option>\n              {/each}\n            </select>\n          </div>\n\n          <button\n            type=\"submit\"\n            disabled={!canAdd}\n            class=\"button add\"\n            on:click={addStaticRule}>\n            +\n          </button>\n        </form>\n\n      </div>\n\n    </div>\n  </div>\n  <div class=\"added-pages\">\n    <p class=\"section-description\">Rules</p>\n    <form on:submit={handleSubmit} class=\"configuration-form\">\n      {#if $store.staticRules.length}\n        <div class=\"grid grid-with-actions fields-headers\">\n          <div>\n            <Label>WordPress Path</Label>\n          </div>\n          <div>\n            <Label>Webflow Page</Label>\n          </div>\n          <div style=\"visibility:hidden\">\n            <button disabled class=\"button add\">+</button>\n          </div>\n        </div>\n        <div class=\"fields-wrapper\">\n          {#each $store.staticRules as staticRule, index}\n            <div class=\"input-wrapper\">\n              <div class=\"grid grid-with-actions\">\n                <div>\n                  <input\n                    class=\"field-input\"\n                    type=\"text\"\n                    bind:value={staticRule[0]}\n                    readonly\n                    disabled\n                    on:input={handleInput} />\n                </div>\n                <div>\n                  <select bind:value={staticRule[1]} class=\"field-select\" disabled>\n                    {#each pages as page}\n                      <option value={page}>\n                         {page.substr(1).replace('index.html', 'Home Page')}\n                      </option>\n                    {/each}\n                  </select>\n                </div>\n                <a\n                  class=\"button remove\"\n                  on:click={() => removeStaticRule(index)}>\n                  X\n                </a>\n\n              </div>\n            </div>\n          {/each}\n        </div>\n      {:else}\n        <div class=\"no-pages-added\">\n          <p>No rules added</p>\n        </div>\n      {/if}\n    </form>\n  </div>\n</div>\n","<script>\n  import { store } from \"../store/wfData\";\n  import Submit from \"./Submit.svelte\";\n  import Label from \"./Label.svelte\";\n  import { writable } from \"svelte/store\";\n\n  const hasItems = $store.dynamicRules.length > 0;\n\n  const firstCollection = $store.collections[0];\n\n  let dynamicRule = [\"\", \"\"];\n  if ($store.collections.length) {\n    dynamicRule = [``, `/${$store.collections[0].slug}/`];\n  }\n\n  let canAdd = false;\n\n  const handleSubmit = async e => {\n    e.preventDefault();\n\n    await store.saveDynamicRules($store.dynamicRules);\n  };\n\n  const addDynamicRule = e => {\n    canAdd = false;\n    e.preventDefault();\n    document.activeElement.blur();\n    if (!dynamicRule || !dynamicRule[0]) {\n      canAdd = false;\n      return;\n    }\n    store.addDynamicRule(dynamicRule);\n    dynamicRule = [``, ``];\n    store.saveDynamicRules($store.dynamicRules);\n  };\n\n  const removeDynamicRule = index => {\n    store.removeDynamicRule(index);\n    store.saveDynamicRules($store.dynamicRules);\n  };\n\n  const handleInput = e => {\n    let value = e.target.value;\n    e.target.value = encodeURI(decodeURI(value)); // little sanitification\n    let isAdd = e.target.getAttribute(\"data-add\");\n    value = e.target.value;\n    const match = value.match(/\\/.*?\\/\\*/g);\n    if (match && match[0] === value) {\n      e.target.setCustomValidity(\"\");\n      if (isAdd) {\n        canAdd = true;\n      }\n    } else {\n      e.target.setCustomValidity(\"Invalid field.\");\n      if (isAdd) {\n        canAdd = false;\n      }\n    }\n  };\n</script>\n\n<style>\n  \n  .headers h3 {\n    margin: 0;\n    height: 10%;\n     margin-bottom: 6px;\n  }\n  .form-wrapper {\n    display: flex;\n    flex-direction: column;\n    height: auto;\n    padding: 0px 10px;\n    border-radius: 4px;\n    margin-bottom: 10px;\n  }\n\n  .form-wrapper.new-page {\n    background-color: #f7f8f9;\n  }\n\n  form.configuration-form {\n    border-radius: 4px;\n    height: calc(100% - 32px);\n    width: 100%;\n    display: inline-flex;\n\n    flex-direction: column;\n  }\n  \n  .section-description {\n    font-size: 12px;\n    font-weight: bold;\n  }\n  .no-collections {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    flex: 1;\n    width: 100%;\n    background-color: #f7f7f7;\n    border: 1px solid #f7f7f7;\n    min-height: 90px;\n  }\n  .no-collections p {\n    font-size: 14px;\n    font-weight: 700;\n  }\n  .added-pages {\n    flex: 1;\n    display: inline-flex;\n    flex-direction: column;\n  }\n  .added-pages .fields-wrapper,\n  .added-pages .fields-headers {\n    padding: 0 10px;\n    background-color: #f7f8f9;\n  }\n\n  :global(.fields-wrapper) {\n    flex: 1;\n    overflow: auto;\n    max-height: calc(50px * 5);\n  }\ne\n:global(.fields-wrapper::-webkit-scrollbar){\n\twidth: 3px;\n\tbackground-color: #F5F5F5;\n}\n\n:global(.fields-wrapper::-webkit-scrollbar-thumb){\n\tbackground-color: #a1a1a1;\n}\n</style>\n\n<div class=\"wrapper\">\n  <div\n    style=\"display: flex; flex-direction: column; justify-content: space-evenly;\">\n    <div class=\"headers\">\n      <h3>Collection Pages</h3>\n    </div>\n    <div class=\"form-wrapper new-page\">\n      <p class=\"section-description\">Create a new Rule</p>\n      {#if $store.collections.length > 0}\n        <div class=\"grid grid-with-actions\">\n          <div>\n            <Label>WordPress Path</Label>\n          </div>\n          <div>\n            <Label>Webflow Page</Label>\n          </div>\n          <div style=\"visibility:hidden\">\n            <button disabled class=\"button add\">+</button>\n          </div>\n        </div>\n        <div class=\"input-wrapper\">\n          <form on:submit={addDynamicRule} class=\"grid grid-with-actions\">\n\n            <div>\n\n              <input\n                data-add=\"true\"\n                class=\"field-input\"\n                type=\"text\"\n                bind:value={dynamicRule[0]}\n                required\n                placeholder=\"/path/*\"\n                on:input={handleInput} />\n              <small class=\"error-message\">\n                Path must start with / and be valid URLs and end with /*\n              </small>\n            </div>\n            <div>\n\n              <select bind:value={dynamicRule[1]} class=\"field-select\">\n                {#each $store.collections as collection}\n                  <option value={'/' + collection.slug + '/'}>\n                    /{collection.slug}/*\n                  </option>\n                {/each}\n              </select>\n            </div>\n\n            <button\n              type=\"submit\"\n              disabled={!canAdd}\n              class=\"button add\"\n              on:click={addDynamicRule}>\n              +\n            </button>\n          </form>\n        </div>\n      {:else}\n        <div class=\"no-collections\">\n          <p>No collections</p>\n        </div>\n      {/if}\n    </div>\n  </div>\n  <div class=\"added-pages\">\n    <p class=\"section-description\">Rules</p>\n    <form on:submit={handleSubmit} class=\"configuration-form\">\n      {#if $store.dynamicRules.length}\n        <div class=\"grid grid-with-actions fields-headers\">\n          <div>\n            <Label>WordPress Path</Label>\n          </div>\n          <div>\n            <Label>Webflow Page</Label>\n          </div>\n          <div style=\"visibility:hidden\">\n            <button disabled class=\"button add\">+</button>\n          </div>\n        </div>\n        <div class=\"fields-wrapper\">\n          {#each $store.dynamicRules as dynamicRule, index}\n            <div class=\"input-wrapper\">\n              <div class=\"grid grid-with-actions\">\n                <div>\n                  <input\n                    class=\"field-input\"\n                    type=\"text\"\n                    bind:value={dynamicRule[0]}\n                    required\n                    disabled\n                    on:input={handleInput}\n                    readonly />\n\n                </div>\n                <div>\n                  <select\n                    bind:value={dynamicRule[1]}\n                    class=\"field-select\"\n                    disabled>\n                    {#each $store.collections as collection}\n                      <option value={'/' + collection.slug + '/'}>\n                        /{collection.slug}/*\n                      </option>\n                    {/each}\n                  </select>\n                </div>\n\n                <a\n                  class=\"button remove\"\n                  on:click={() => removeDynamicRule(index)}>\n                  X\n                </a>\n\n              </div>\n            </div>\n          {/each}\n        </div>\n      {:else}\n        <div class=\"no-collections\">\n          <p>No rules added</p>\n        </div>\n      {/if}\n    </form>\n  </div>\n\n</div>\n","import { cubicOut, cubicInOut } from './easing';\nimport { is_function, assign } from './internal';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n            t[p[i]] = s[p[i]];\r\n    return t;\r\n}\n\nfunction fade(node, { delay = 0, duration = 400 }) {\n    const o = +getComputedStyle(node).opacity;\n    return {\n        delay,\n        duration,\n        css: t => `opacity: ${t * o}`\n    };\n}\nfunction fly(node, { delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 }) {\n    const style = getComputedStyle(node);\n    const target_opacity = +style.opacity;\n    const transform = style.transform === 'none' ? '' : style.transform;\n    const od = target_opacity * (1 - opacity);\n    return {\n        delay,\n        duration,\n        easing,\n        css: (t, u) => `\n\t\t\ttransform: ${transform} translate(${(1 - t) * x}px, ${(1 - t) * y}px);\n\t\t\topacity: ${target_opacity - (od * u)}`\n    };\n}\nfunction slide(node, { delay = 0, duration = 400, easing = cubicOut }) {\n    const style = getComputedStyle(node);\n    const opacity = +style.opacity;\n    const height = parseFloat(style.height);\n    const padding_top = parseFloat(style.paddingTop);\n    const padding_bottom = parseFloat(style.paddingBottom);\n    const margin_top = parseFloat(style.marginTop);\n    const margin_bottom = parseFloat(style.marginBottom);\n    const border_top_width = parseFloat(style.borderTopWidth);\n    const border_bottom_width = parseFloat(style.borderBottomWidth);\n    return {\n        delay,\n        duration,\n        easing,\n        css: t => `overflow: hidden;` +\n            `opacity: ${Math.min(t * 20, 1) * opacity};` +\n            `height: ${t * height}px;` +\n            `padding-top: ${t * padding_top}px;` +\n            `padding-bottom: ${t * padding_bottom}px;` +\n            `margin-top: ${t * margin_top}px;` +\n            `margin-bottom: ${t * margin_bottom}px;` +\n            `border-top-width: ${t * border_top_width}px;` +\n            `border-bottom-width: ${t * border_bottom_width}px;`\n    };\n}\nfunction scale(node, { delay = 0, duration = 400, easing = cubicOut, start = 0, opacity = 0 }) {\n    const style = getComputedStyle(node);\n    const target_opacity = +style.opacity;\n    const transform = style.transform === 'none' ? '' : style.transform;\n    const sd = 1 - start;\n    const od = target_opacity * (1 - opacity);\n    return {\n        delay,\n        duration,\n        easing,\n        css: (t, u) => `\n\t\t\ttransform: ${transform} scale(${1 - (sd * u)});\n\t\t\topacity: ${target_opacity - (od * u)}\n\t\t`\n    };\n}\nfunction draw(node, { delay = 0, speed, duration, easing = cubicInOut }) {\n    const len = node.getTotalLength();\n    if (duration === undefined) {\n        if (speed === undefined) {\n            duration = 800;\n        }\n        else {\n            duration = len / speed;\n        }\n    }\n    else if (typeof duration === 'function') {\n        duration = duration(len);\n    }\n    return {\n        delay,\n        duration,\n        easing,\n        css: (t, u) => `stroke-dasharray: ${t * len} ${u * len}`\n    };\n}\nfunction crossfade(_a) {\n    var { fallback } = _a, defaults = __rest(_a, [\"fallback\"]);\n    const to_receive = new Map();\n    const to_send = new Map();\n    function crossfade(from, node, params) {\n        const { delay = 0, duration = d => Math.sqrt(d) * 30, easing = cubicOut } = assign(assign({}, defaults), params);\n        const to = node.getBoundingClientRect();\n        const dx = from.left - to.left;\n        const dy = from.top - to.top;\n        const d = Math.sqrt(dx * dx + dy * dy);\n        const style = getComputedStyle(node);\n        const transform = style.transform === 'none' ? '' : style.transform;\n        const opacity = +style.opacity;\n        return {\n            delay,\n            duration: is_function(duration) ? duration(d) : duration,\n            easing,\n            css: (t, u) => `\n\t\t\t\topacity: ${t * opacity};\n\t\t\t\ttransform: ${transform} translate(${u * dx}px,${u * dy}px);\n\t\t\t`\n        };\n    }\n    function transition(items, counterparts, intro) {\n        return (node, params) => {\n            items.set(params.key, {\n                rect: node.getBoundingClientRect()\n            });\n            return () => {\n                if (counterparts.has(params.key)) {\n                    const { rect } = counterparts.get(params.key);\n                    counterparts.delete(params.key);\n                    return crossfade(rect, node, params);\n                }\n                // if the node is disappearing altogether\n                // (i.e. wasn't claimed by the other list)\n                // then we need to supply an outro\n                items.delete(params.key);\n                return fallback && fallback(node, params, intro);\n            };\n        };\n    }\n    return [\n        transition(to_send, to_receive, false),\n        transition(to_receive, to_send, true)\n    ];\n}\n\nexport { fade, fly, slide, scale, draw, crossfade };\n","<script>\n  import { store } from \"../store/wfData\";\n  import { writable } from \"svelte/store\";\n  import Submit from \"./Submit.svelte\";\n  import { fade } from 'svelte/transition';\n\n  const removeTokenStore = writable({\n    disabled: false,\n    value: \"Reset\"\n  });\n\n  const modalStore = writable({\n    open: false\n  })\n\n  const handleRemoveToken = async e => {\n    e.preventDefault();\n    const res = await modalResponse();\n    if (!res) {\n      return;\n    }\n    removeTokenStore.set({ disabled: true, value: \"Wait...\" });\n    await store.removeToken();\n    removeTokenStore.set({ disabled: false, value: \"Reset\" });\n  };\n\n\n\n  const closeModal = e => {\n    e.preventDefault();\n    document.body.dispatchEvent(new CustomEvent('webflow-modal-remove-token', {detail: false}));\n  }\n\n  const acceptModal = e => {\n    e.preventDefault();\n    document.body.dispatchEvent(new CustomEvent('webflow-modal-remove-token', {detail: true}));\n  }\n\n  const modalResponse = () => {\n    return new Promise( res => {\n      modalStore.set({open: true});\n      document.body.addEventListener('webflow-modal-remove-token', e => {\n        modalStore.set({open: false})\n        res(e.detail);\n      }, {once: true});\n    })\n  }\n\n</script>\n\n<style>\n  .modal-wrapper {\n    position: fixed;\n    top: 0;\n    left: 0;\n    background-color: rgba(0, 0, 0, 0.7);\n    z-index: 99999999;\n    width: 100vw;\n    height: 100vh;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n  }\n  .modal {\n    background-color: white;\n    height: 30vh;\n    width: 30vw;\n    display: grid;\n    grid-template-rows: auto 1fr;\n  }\n  .modal-header {\n    display: flex;\n    padding: 20px 15px;\n    justify-content: space-between;\n    font-weight: 700;\n    font-size: 16px;\n    border-bottom: 1px solid #f7f7f7;\n  }\n  .modal-header a {\n    color: black;\n    text-decoration: none;\n  }\n  .modal-content {\n    background-color: #f5f5f5;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    align-items: center;\n  }\n  .modal-button {\n    display: inline-block;\n    padding: 9px 15px;\n    color: white;\n    border: 0;\n    line-height: inherit;\n    text-decoration: none;\n    cursor: pointer;\n    border-radius: 4px;\n  }\n  .modal-button.red {\n    width: auto;\n    height: auto;\n    padding-right: 28px;\n    padding-left: 28px;\n    background-color: #FF6382;\n    font-weight: 500;\n  }\n\n  .modal-button.red:hover {\n    background-color: #FF6382;\n  }\n\n  .modal-button.grey{\n    width: auto;\n    height: auto;\n    padding-right: 28px;\n    padding-left: 28px;\n    background-color: #d2d4d5;\n    font-weight: 500;\n  }\n\n  .modal-button.grey:hover {\n    background-color: #d2d4d5;\n  }\n</style>\n\n<h4>Remove Website</h4>\n<p class=\"description-subtitle\">Disconnect your Webflow project from your WordPress site.</p>\n<form on:submit={handleRemoveToken}>\n  <Submit\n    value={$removeTokenStore.value}\n    disabled={$removeTokenStore.disabled}\n    variation=\"red\" />\n</form>\n\n{#if $modalStore.open}\n<div class=\"modal-wrapper\">\n  <div class=\"modal\" transition:fade>\n    <div class=\"modal-header\">\n      <div>Do you want to remove all the Webflow Pages?</div>\n      <a on:click={closeModal}>X</a>\n    </div>\n    <div class=\"modal-content\">\n    <p>Are you sure you want to remove all your Webflow Settings?</p>\n        <div class=\"modal-actions\">\n          <button class=\"modal-button grey\" on:click={closeModal}>Cancel</button>\n          <button class=\"modal-button red\" on:click={acceptModal}>Confirm</button>\n        </div>\n    </div>\n  </div>\n</div>\n{/if}","<script>\n  import { store } from \"../store/wfData\";\n  import { writable } from \"svelte/store\";\n  import Submit from \"./Submit.svelte\";\n\n  const invalidateCacheStore = writable({\n    disabled: false,\n    value: \"Invalidate Cache\"\n  });\n\n  const handleInvalidateCache = async e => {\n    e.preventDefault();\n    invalidateCacheStore.set({ disabled: true, value: \"Wait...\" });\n    await store.invalidateCache();\n    invalidateCacheStore.set({ disabled: false, value: \"Invalidate Cache\" });\n  };\n</script>\n\n<h4>Invalidate Cache</h4>\n<p class=\"description-subtitle\">Deletes your WordPress site's cache, which can be helpful with debugging.</p>\n<form on:submit={handleInvalidateCache}>\n  <Submit\n    value={$invalidateCacheStore.value}\n    disabled={$invalidateCacheStore.disabled} variation=\"black\"/>\n</form>\n","<script>\n  import { store } from \"../store/wfData\";\n  import { writable } from \"svelte/store\";\n  import Submit from \"./Submit.svelte\";\n\n  const preloadCacheStore = writable({\n    disabled: false,\n    value: \"Preload Cache\"\n  });\n\n  const handlePreloadCache = async e => {\n    e.preventDefault();\n    preloadCacheStore.set({ disabled: true, value: \"Wait...\" });\n    await store.preloadCache();\n    preloadCacheStore.set({ disabled: false, value: \"Preload Cache\" });\n  };\n</script>\n\n<h4>Preload static page cache</h4>\n<p class=\"description-subtitle\">Preload your static page cache to help pages load faster.</p>\n<form on:submit={handlePreloadCache}>\n  <Submit\n    value={$preloadCacheStore.value}\n    disabled={$preloadCacheStore.disabled} variation=\"black\"/>\n</form>\n","<script>\n  import { store } from \"../store/wfData\";\n  import { writable } from \"svelte/store\";\n  import Submit from \"./Submit.svelte\";\n\n  const localStore = writable({\n    disabled: false,\n    value: \"Save\"\n  });\n\n  let val = $store.cacheDuration;\n\n  const options = [\n    {\n      value: \"0\",\n      name: \"As long as possible\"\n    },\n    {\n      value: \"60\",\n      name: \"1 minute\"\n    },\n    {\n      value: 60 * 5 + \"\",\n      name: \"5 minutes\"\n    },\n    {\n      value: 60 * 15 + \"\",\n      name: \"15 minutes\"\n    },\n    {\n      value: 60 * 60 + \"\",\n      name: \"1 hour\"\n    },\n    {\n      value: 60 * 60 * 24 + \"\",\n      name: \"1 day\"\n    }\n  ];\n\n  const handleSubmit = async e => {\n    e.preventDefault();\n    localStore.set({ disabled: true, value: \"Wait...\" });\n    await store.changeCache(val);\n    localStore.set({ disabled: false, value: \"Save\" });\n  };\n</script>\n<style>\nform {\ndisplay: grid;\n    grid-gap: 8px;\n    justify-content: center;\n    align-items: center;\n    grid-template-columns: 1fr 1fr;\n}\nselect {\n  background-color: #f7f8f9;\n}\n\n</style>\n<h4>Cache Duration</h4>\n<p class=\"description-subtitle\">Define how long your site caches your Webflow pages. Cached pages load faster.</p>\n<form on:submit={handleSubmit} >\n  <select class=\"field-select\" bind:value={val}>\n    {#each options as option}\n      <option value={option.value}> {option.name} </option>\n    {/each}\n  </select>\n  <Submit\n    value={$localStore.value}\n    disabled={$localStore.disabled}\n    variation=\"small\"\n   />\n</form>\n","<script>\n  import {store} from '../store/wfData';\n\n</script>\n\n<style>\n  img {\n    max-width: 100%;\n    height: auto;\n  }\n  a {box-shadow: none}\n</style>\n\n<div>\n  <a href={$store.site.dashboardUrl} target=\"_blank\">\n    <img src={$store.site.previewUrl} alt=\"site preview\" />\n    <h3>{$store.site.name}</h3>\n  </a>\n</div>\n","<script>\n    import {notifications} from '../store/notifications';\n    import { fade } from 'svelte/transition';\n   \n</script>\n<style>\ndiv {\n    position: fixed;\n    bottom: 40px;\n    left: 55%;\n    padding: 8px 100px;\n    transform: translateX(-50%);\n}\np {\n    margin: 0;\n    color: white;\n    font-size: 14px;\n    text-align: center;\n}\n</style>\n{#if $notifications.currentNotification}\n<div transition:fade style={$notifications.currentNotification.type == \"success\" ? \"background-color: #38D996\" : \"background-color:  #FF6382\"}>\n    <p>{$notifications.currentNotification.message}</p>\n</div>\n{/if}","<script>\n\timport Route from './components/Route.svelte';\n\timport LoginPage from './pages/Login.svelte';\n\timport ConfigurationPage from './pages/Configuration.svelte';\n\timport UtilsPage from './pages/Utils.svelte';\n\timport Notifications from './components/Notifications.svelte';\n\timport {store} from './store/wfData';\n\timport Footer from './components/Footer.svelte';\n\n</script>\n<!-- \"Routes\" of the dashboard -->\n<Route path=\"/login\" component={LoginPage}></Route>\n<Route path=\"/configuration\" component={ConfigurationPage}></Route>\n<Route path=\"/settings\" component={UtilsPage}></Route>\n\n<Notifications></Notifications>\n<Footer></Footer>\n\n<style>\n:global(#wpcontent) {\n\tpadding-left: 0;\n}\n:global(#webflow-dashboard-root) {\n\theight: 100%;\n\tdisplay: flex;\n\tmin-height: calc(100vh - 32px - 65px); /* 32 px is the admin bar , 65 px is the padding bottom*/\n}\n</style>","import App from './App.svelte';\n\n\n\tconst data = window._wfAjaxData;\n\tnew App({\n\t\ttarget: document.getElementById(\"webflow-dashboard-root\"), // inits app\n\t\tdata\n\t});\n"],"names":["noop","identity","x","assign","tar","src","k","run","fn","blank_object","Object","create","run_all","fns","forEach","is_function","thing","safe_not_equal","a","b","subscribe","component","store","callback","unsub","$$","on_destroy","push","unsubscribe","create_slot","definition","ctx","slot_ctx","get_slot_context","$$scope","get_slot_changes","changed","is_client","window","now","performance","Date","raf","requestAnimationFrame","tasks","Set","stylesheet","running","run_tasks","task","delete","size","append","target","node","appendChild","insert","anchor","insertBefore","detach","parentNode","removeChild","destroy_each","iterations","detaching","i","length","d","element","name","document","createElement","text","data","createTextNode","space","empty","listen","event","handler","options","addEventListener","removeEventListener","attr","attribute","value","removeAttribute","setAttribute","set_data","set_style","key","style","setProperty","select_option","select","option","__value","selected","select_value","selected_option","querySelector","current_component","active","current_rules","create_rule","duration","delay","ease","uid","step","keyframes","p","t","rule","str","hash","charCodeAt","head","sheet","insertRule","cssRules","animation","delete_rule","split","filter","anim","indexOf","join","deleteRule","set_current_component","dirty_components","resolved_promise","Promise","resolve","update_scheduled","binding_callbacks","render_callbacks","flush_callbacks","add_render_callback","flush","seen_callbacks","shift","update","pop","has","add","fragment","dirty","before_render","after_render","promise","outros","dispatch","direction","kind","dispatchEvent","type","detail","e","createEvent","initCustomEvent","custom_event","group_outros","remaining","callbacks","check_outros","on_outro","create_bidirectional_transition","params","intro","config","running_program","pending_program","animation_name","clear_animation","init","program","Math","abs","start","end","group","go","easing","tick","tick$$1","css","fulfil","loop","now$$1","[object Object]","then","mount_component","on_mount","m","new_on_destroy","map","make_dirty","instance","create_fragment","not_equal$$1","prop_names","parent_component","props","not_equal","bound","context","Map","ready","hydrate","l","Array","from","childNodes","c","SvelteComponent","this","$destroy","index","splice","writable","stop","subscribers","set","new_value","s","invalidate","subscriber","derived","stores","initial_value","single","isArray","stores_array","auto","inited","values","pending","cleanup","sync","result","unsubscribers","router","path","goTo","createRouterStore","isCurrentPath","$router","$isActive","isActive","ajaxCall","action","nonce","nonceField","method","credentials","url","TypeError","ajaxurl","formData","FormData","fetch","body","notifications","currentNotification","addNotification","message","setTimeout","createNotificationStore","hasToken","pages","collections","site","staticRules","dynamicRules","error","cacheDuration","_wfAjaxData","dashboardUrl","shortName","undefined","saveToken","async","token","call","res","json","success","code","removeToken","location","reload","addStaticRule","removeStaticRule","addDynamicRule","removeDynamicRule","saveStaticRules","rules","JSON","stringify","n","saveDynamicRules","invalidateCache","changeCache","preloadCache","createWfDataStore","variation","disabled","forHtml","$loginStore","handleSubmit","loginStore","preventDefault","handleClick","page","substr","replace","$store","staticRule","handleInput","click_handler","canAdd","activeElement","blur","isAdd","getAttribute","encodeURI","decodeURI","match","setCustomValidity","dynamicRule","collection","slug","fade","o","getComputedStyle","opacity","closeModal","acceptModal","$removeTokenStore","$modalStore","handleRemoveToken","open","removeTokenStore","modalStore","modalResponse","once","CustomEvent","$invalidateCacheStore","handleInvalidateCache","invalidateCacheStore","$preloadCacheStore","handlePreloadCache","preloadCacheStore","$localStore","val","localStore","previewUrl","$notifications","LoginPage","ConfigurationPage","UtilsPage","getElementById"],"mappings":"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"}
     1{"version":3,"file":"bundle.js","sources":["../node_modules/svelte/internal.mjs","../node_modules/svelte/store.mjs","../src/store/router.js","../src/components/Route.svelte","../src/utils/ajax.js","../src/store/notifications.js","../src/store/wfData.js","../src/components/Submit.svelte","../src/components/Label.svelte","../src/pages/Login.svelte","../src/components/Link.svelte","../src/components/Navigation.svelte","../src/components/StaticRules.svelte","../src/components/CollectionRules.svelte","../node_modules/svelte/transition.mjs","../src/components/RemoveTokenAction.svelte","../src/components/InvalidateCacheAction.svelte","../src/components/PreloadCacheAction.svelte","../src/components/ChangeCacheAction.svelte","../src/components/Site.svelte","../src/components/RemoveTokenAndDataAction.svelte","../src/components/Notifications.svelte","../src/App.svelte","../src/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n    for (const k in src)\n        tar[k] = src[k];\n    return tar;\n}\nfunction is_promise(value) {\n    return value && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n    element.__svelte_meta = {\n        loc: { file, line, column, char }\n    };\n}\nfunction run(fn) {\n    return fn();\n}\nfunction blank_object() {\n    return Object.create(null);\n}\nfunction run_all(fns) {\n    fns.forEach(run);\n}\nfunction is_function(thing) {\n    return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n    return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nfunction not_equal(a, b) {\n    return a != a ? b == b : a !== b;\n}\nfunction validate_store(store, name) {\n    if (!store || typeof store.subscribe !== 'function') {\n        throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n    }\n}\nfunction subscribe(component, store, callback) {\n    const unsub = store.subscribe(callback);\n    component.$$.on_destroy.push(unsub.unsubscribe\n        ? () => unsub.unsubscribe()\n        : unsub);\n}\nfunction create_slot(definition, ctx, fn) {\n    if (definition) {\n        const slot_ctx = get_slot_context(definition, ctx, fn);\n        return definition[0](slot_ctx);\n    }\n}\nfunction get_slot_context(definition, ctx, fn) {\n    return definition[1]\n        ? assign({}, assign(ctx.$$scope.ctx, definition[1](fn ? fn(ctx) : {})))\n        : ctx.$$scope.ctx;\n}\nfunction get_slot_changes(definition, ctx, changed, fn) {\n    return definition[1]\n        ? assign({}, assign(ctx.$$scope.changed || {}, definition[1](fn ? fn(changed) : {})))\n        : ctx.$$scope.changed || {};\n}\nfunction exclude_internal_props(props) {\n    const result = {};\n    for (const k in props)\n        if (k[0] !== '$')\n            result[k] = props[k];\n    return result;\n}\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n    ? () => window.performance.now()\n    : () => Date.now();\nlet raf = is_client ? requestAnimationFrame : noop;\n// used internally for testing\nfunction set_now(fn) {\n    now = fn;\n}\nfunction set_raf(fn) {\n    raf = fn;\n}\n\nconst tasks = new Set();\nlet running = false;\nfunction run_tasks() {\n    tasks.forEach(task => {\n        if (!task[0](now())) {\n            tasks.delete(task);\n            task[1]();\n        }\n    });\n    running = tasks.size > 0;\n    if (running)\n        raf(run_tasks);\n}\nfunction clear_loops() {\n    // for testing...\n    tasks.forEach(task => tasks.delete(task));\n    running = false;\n}\nfunction loop(fn) {\n    let task;\n    if (!running) {\n        running = true;\n        raf(run_tasks);\n    }\n    return {\n        promise: new Promise(fulfil => {\n            tasks.add(task = [fn, fulfil]);\n        }),\n        abort() {\n            tasks.delete(task);\n        }\n    };\n}\n\nfunction append(target, node) {\n    target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n    target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n    node.parentNode.removeChild(node);\n}\nfunction detach_between(before, after) {\n    while (before.nextSibling && before.nextSibling !== after) {\n        before.parentNode.removeChild(before.nextSibling);\n    }\n}\nfunction detach_before(after) {\n    while (after.previousSibling) {\n        after.parentNode.removeChild(after.previousSibling);\n    }\n}\nfunction detach_after(before) {\n    while (before.nextSibling) {\n        before.parentNode.removeChild(before.nextSibling);\n    }\n}\nfunction destroy_each(iterations, detaching) {\n    for (let i = 0; i < iterations.length; i += 1) {\n        if (iterations[i])\n            iterations[i].d(detaching);\n    }\n}\nfunction element(name) {\n    return document.createElement(name);\n}\nfunction object_without_properties(obj, exclude) {\n    const target = {};\n    for (const k in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, k)\n            // @ts-ignore\n            && exclude.indexOf(k) === -1) {\n            // @ts-ignore\n            target[k] = obj[k];\n        }\n    }\n    return target;\n}\nfunction svg_element(name) {\n    return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n    return document.createTextNode(data);\n}\nfunction space() {\n    return text(' ');\n}\nfunction empty() {\n    return text('');\n}\nfunction listen(node, event, handler, options) {\n    node.addEventListener(event, handler, options);\n    return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n    return function (event) {\n        event.preventDefault();\n        // @ts-ignore\n        return fn.call(this, event);\n    };\n}\nfunction stop_propagation(fn) {\n    return function (event) {\n        event.stopPropagation();\n        // @ts-ignore\n        return fn.call(this, event);\n    };\n}\nfunction attr(node, attribute, value) {\n    if (value == null)\n        node.removeAttribute(attribute);\n    else\n        node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n    for (const key in attributes) {\n        if (key === 'style') {\n            node.style.cssText = attributes[key];\n        }\n        else if (key in node) {\n            node[key] = attributes[key];\n        }\n        else {\n            attr(node, key, attributes[key]);\n        }\n    }\n}\nfunction set_custom_element_data(node, prop, value) {\n    if (prop in node) {\n        node[prop] = value;\n    }\n    else {\n        attr(node, prop, value);\n    }\n}\nfunction xlink_attr(node, attribute, value) {\n    node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group) {\n    const value = [];\n    for (let i = 0; i < group.length; i += 1) {\n        if (group[i].checked)\n            value.push(group[i].__value);\n    }\n    return value;\n}\nfunction to_number(value) {\n    return value === '' ? undefined : +value;\n}\nfunction time_ranges_to_array(ranges) {\n    const array = [];\n    for (let i = 0; i < ranges.length; i += 1) {\n        array.push({ start: ranges.start(i), end: ranges.end(i) });\n    }\n    return array;\n}\nfunction children(element) {\n    return Array.from(element.childNodes);\n}\nfunction claim_element(nodes, name, attributes, svg) {\n    for (let i = 0; i < nodes.length; i += 1) {\n        const node = nodes[i];\n        if (node.nodeName === name) {\n            for (let j = 0; j < node.attributes.length; j += 1) {\n                const attribute = node.attributes[j];\n                if (!attributes[attribute.name])\n                    node.removeAttribute(attribute.name);\n            }\n            return nodes.splice(i, 1)[0]; // TODO strip unwanted attributes\n        }\n    }\n    return svg ? svg_element(name) : element(name);\n}\nfunction claim_text(nodes, data) {\n    for (let i = 0; i < nodes.length; i += 1) {\n        const node = nodes[i];\n        if (node.nodeType === 3) {\n            node.data = data;\n            return nodes.splice(i, 1)[0];\n        }\n    }\n    return text(data);\n}\nfunction set_data(text, data) {\n    data = '' + data;\n    if (text.data !== data)\n        text.data = data;\n}\nfunction set_input_type(input, type) {\n    try {\n        input.type = type;\n    }\n    catch (e) {\n        // do nothing\n    }\n}\nfunction set_style(node, key, value) {\n    node.style.setProperty(key, value);\n}\nfunction select_option(select, value) {\n    for (let i = 0; i < select.options.length; i += 1) {\n        const option = select.options[i];\n        if (option.__value === value) {\n            option.selected = true;\n            return;\n        }\n    }\n}\nfunction select_options(select, value) {\n    for (let i = 0; i < select.options.length; i += 1) {\n        const option = select.options[i];\n        option.selected = ~value.indexOf(option.__value);\n    }\n}\nfunction select_value(select) {\n    const selected_option = select.querySelector(':checked') || select.options[0];\n    return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n    return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\nfunction add_resize_listener(element, fn) {\n    if (getComputedStyle(element).position === 'static') {\n        element.style.position = 'relative';\n    }\n    const object = document.createElement('object');\n    object.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;');\n    object.type = 'text/html';\n    let win;\n    object.onload = () => {\n        win = object.contentDocument.defaultView;\n        win.addEventListener('resize', fn);\n    };\n    if (/Trident/.test(navigator.userAgent)) {\n        element.appendChild(object);\n        object.data = 'about:blank';\n    }\n    else {\n        object.data = 'about:blank';\n        element.appendChild(object);\n    }\n    return {\n        cancel: () => {\n            win && win.removeEventListener && win.removeEventListener('resize', fn);\n            element.removeChild(object);\n        }\n    };\n}\nfunction toggle_class(element, name, toggle) {\n    element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail) {\n    const e = document.createEvent('CustomEvent');\n    e.initCustomEvent(type, false, false, detail);\n    return e;\n}\n\nlet stylesheet;\nlet active = 0;\nlet current_rules = {};\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n    let hash = 5381;\n    let i = str.length;\n    while (i--)\n        hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n    return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n    const step = 16.666 / duration;\n    let keyframes = '{\\n';\n    for (let p = 0; p <= 1; p += step) {\n        const t = a + (b - a) * ease(p);\n        keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n    }\n    const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n    const name = `__svelte_${hash(rule)}_${uid}`;\n    if (!current_rules[name]) {\n        if (!stylesheet) {\n            const style = element('style');\n            document.head.appendChild(style);\n            stylesheet = style.sheet;\n        }\n        current_rules[name] = true;\n        stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n    }\n    const animation = node.style.animation || '';\n    node.style.animation = `${animation ? `${animation}, ` : ``}${name} ${duration}ms linear ${delay}ms 1 both`;\n    active += 1;\n    return name;\n}\nfunction delete_rule(node, name) {\n    node.style.animation = (node.style.animation || '')\n        .split(', ')\n        .filter(name\n        ? anim => anim.indexOf(name) < 0 // remove specific animation\n        : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n    )\n        .join(', ');\n    if (name && !--active)\n        clear_rules();\n}\nfunction clear_rules() {\n    raf(() => {\n        if (active)\n            return;\n        let i = stylesheet.cssRules.length;\n        while (i--)\n            stylesheet.deleteRule(i);\n        current_rules = {};\n    });\n}\n\nfunction create_animation(node, from, fn, params) {\n    if (!from)\n        return noop;\n    const to = node.getBoundingClientRect();\n    if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n        return noop;\n    const { delay = 0, duration = 300, easing = identity, start: start_time = now() + delay, end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n    let running = true;\n    let started = false;\n    let name;\n    function start() {\n        if (css) {\n            name = create_rule(node, 0, 1, duration, delay, easing, css);\n        }\n        if (!delay) {\n            started = true;\n        }\n    }\n    function stop() {\n        if (css)\n            delete_rule(node, name);\n        running = false;\n    }\n    loop(now$$1 => {\n        if (!started && now$$1 >= start_time) {\n            started = true;\n        }\n        if (started && now$$1 >= end) {\n            tick(1, 0);\n            stop();\n        }\n        if (!running) {\n            return false;\n        }\n        if (started) {\n            const p = now$$1 - start_time;\n            const t = 0 + 1 * easing(p / duration);\n            tick(t, 1 - t);\n        }\n        return true;\n    });\n    start();\n    tick(0, 1);\n    return stop;\n}\nfunction fix_position(node) {\n    const style = getComputedStyle(node);\n    if (style.position !== 'absolute' && style.position !== 'fixed') {\n        const { width, height } = style;\n        const a = node.getBoundingClientRect();\n        node.style.position = 'absolute';\n        node.style.width = width;\n        node.style.height = height;\n        const b = node.getBoundingClientRect();\n        if (a.left !== b.left || a.top !== b.top) {\n            const style = getComputedStyle(node);\n            const transform = style.transform === 'none' ? '' : style.transform;\n            node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n        }\n    }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n    current_component = component;\n}\nfunction get_current_component() {\n    if (!current_component)\n        throw new Error(`Function called outside component initialization`);\n    return current_component;\n}\nfunction beforeUpdate(fn) {\n    get_current_component().$$.before_render.push(fn);\n}\nfunction onMount(fn) {\n    get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n    get_current_component().$$.after_render.push(fn);\n}\nfunction onDestroy(fn) {\n    get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n    const component = current_component;\n    return (type, detail) => {\n        const callbacks = component.$$.callbacks[type];\n        if (callbacks) {\n            // TODO are there situations where events could be dispatched\n            // in a server (non-DOM) environment?\n            const event = custom_event(type, detail);\n            callbacks.slice().forEach(fn => {\n                fn.call(component, event);\n            });\n        }\n    };\n}\nfunction setContext(key, context) {\n    get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n    return get_current_component().$$.context.get(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n    const callbacks = component.$$.callbacks[event.type];\n    if (callbacks) {\n        callbacks.slice().forEach(fn => fn(event));\n    }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nfunction schedule_update() {\n    if (!update_scheduled) {\n        update_scheduled = true;\n        resolved_promise.then(flush);\n    }\n}\nfunction tick() {\n    schedule_update();\n    return resolved_promise;\n}\nfunction add_binding_callback(fn) {\n    binding_callbacks.push(fn);\n}\nfunction add_render_callback(fn) {\n    render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n    flush_callbacks.push(fn);\n}\nfunction flush() {\n    const seen_callbacks = new Set();\n    do {\n        // first, call beforeUpdate functions\n        // and update components\n        while (dirty_components.length) {\n            const component = dirty_components.shift();\n            set_current_component(component);\n            update(component.$$);\n        }\n        while (binding_callbacks.length)\n            binding_callbacks.shift()();\n        // then, once components are updated, call\n        // afterUpdate functions. This may cause\n        // subsequent updates...\n        while (render_callbacks.length) {\n            const callback = render_callbacks.pop();\n            if (!seen_callbacks.has(callback)) {\n                callback();\n                // ...so guard against infinite loops\n                seen_callbacks.add(callback);\n            }\n        }\n    } while (dirty_components.length);\n    while (flush_callbacks.length) {\n        flush_callbacks.pop()();\n    }\n    update_scheduled = false;\n}\nfunction update($$) {\n    if ($$.fragment) {\n        $$.update($$.dirty);\n        run_all($$.before_render);\n        $$.fragment.p($$.dirty, $$.ctx);\n        $$.dirty = null;\n        $$.after_render.forEach(add_render_callback);\n    }\n}\n\nlet promise;\nfunction wait() {\n    if (!promise) {\n        promise = Promise.resolve();\n        promise.then(() => {\n            promise = null;\n        });\n    }\n    return promise;\n}\nfunction dispatch(node, direction, kind) {\n    node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nlet outros;\nfunction group_outros() {\n    outros = {\n        remaining: 0,\n        callbacks: []\n    };\n}\nfunction check_outros() {\n    if (!outros.remaining) {\n        run_all(outros.callbacks);\n    }\n}\nfunction on_outro(callback) {\n    outros.callbacks.push(callback);\n}\nfunction create_in_transition(node, fn, params) {\n    let config = fn(node, params);\n    let running = false;\n    let animation_name;\n    let task;\n    let uid = 0;\n    function cleanup() {\n        if (animation_name)\n            delete_rule(node, animation_name);\n    }\n    function go() {\n        const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n        if (css)\n            animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n        tick$$1(0, 1);\n        const start_time = now() + delay;\n        const end_time = start_time + duration;\n        if (task)\n            task.abort();\n        running = true;\n        task = loop(now$$1 => {\n            if (running) {\n                if (now$$1 >= end_time) {\n                    tick$$1(1, 0);\n                    cleanup();\n                    return running = false;\n                }\n                if (now$$1 >= start_time) {\n                    const t = easing((now$$1 - start_time) / duration);\n                    tick$$1(t, 1 - t);\n                }\n            }\n            return running;\n        });\n    }\n    let started = false;\n    return {\n        start() {\n            if (started)\n                return;\n            delete_rule(node);\n            if (typeof config === 'function') {\n                config = config();\n                wait().then(go);\n            }\n            else {\n                go();\n            }\n        },\n        invalidate() {\n            started = false;\n        },\n        end() {\n            if (running) {\n                cleanup();\n                running = false;\n            }\n        }\n    };\n}\nfunction create_out_transition(node, fn, params) {\n    let config = fn(node, params);\n    let running = true;\n    let animation_name;\n    const group = outros;\n    group.remaining += 1;\n    function go() {\n        const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n        if (css)\n            animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n        const start_time = now() + delay;\n        const end_time = start_time + duration;\n        loop(now$$1 => {\n            if (running) {\n                if (now$$1 >= end_time) {\n                    tick$$1(0, 1);\n                    if (!--group.remaining) {\n                        // this will result in `end()` being called,\n                        // so we don't need to clean up here\n                        run_all(group.callbacks);\n                    }\n                    return false;\n                }\n                if (now$$1 >= start_time) {\n                    const t = easing((now$$1 - start_time) / duration);\n                    tick$$1(1 - t, t);\n                }\n            }\n            return running;\n        });\n    }\n    if (typeof config === 'function') {\n        wait().then(() => {\n            config = config();\n            go();\n        });\n    }\n    else {\n        go();\n    }\n    return {\n        end(reset) {\n            if (reset && config.tick) {\n                config.tick(1, 0);\n            }\n            if (running) {\n                if (animation_name)\n                    delete_rule(node, animation_name);\n                running = false;\n            }\n        }\n    };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n    let config = fn(node, params);\n    let t = intro ? 0 : 1;\n    let running_program = null;\n    let pending_program = null;\n    let animation_name = null;\n    function clear_animation() {\n        if (animation_name)\n            delete_rule(node, animation_name);\n    }\n    function init(program, duration) {\n        const d = program.b - t;\n        duration *= Math.abs(d);\n        return {\n            a: t,\n            b: program.b,\n            d,\n            duration,\n            start: program.start,\n            end: program.start + duration,\n            group: program.group\n        };\n    }\n    function go(b) {\n        const { delay = 0, duration = 300, easing = identity, tick: tick$$1 = noop, css } = config;\n        const program = {\n            start: now() + delay,\n            b\n        };\n        if (!b) {\n            // @ts-ignore todo: improve typings\n            program.group = outros;\n            outros.remaining += 1;\n        }\n        if (running_program) {\n            pending_program = program;\n        }\n        else {\n            // if this is an intro, and there's a delay, we need to do\n            // an initial tick and/or apply CSS animation immediately\n            if (css) {\n                clear_animation();\n                animation_name = create_rule(node, t, b, duration, delay, easing, css);\n            }\n            if (b)\n                tick$$1(0, 1);\n            running_program = init(program, duration);\n            add_render_callback(() => dispatch(node, b, 'start'));\n            loop(now$$1 => {\n                if (pending_program && now$$1 > pending_program.start) {\n                    running_program = init(pending_program, duration);\n                    pending_program = null;\n                    dispatch(node, running_program.b, 'start');\n                    if (css) {\n                        clear_animation();\n                        animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n                    }\n                }\n                if (running_program) {\n                    if (now$$1 >= running_program.end) {\n                        tick$$1(t = running_program.b, 1 - t);\n                        dispatch(node, running_program.b, 'end');\n                        if (!pending_program) {\n                            // we're done\n                            if (running_program.b) {\n                                // intro — we can tidy up immediately\n                                clear_animation();\n                            }\n                            else {\n                                // outro — needs to be coordinated\n                                if (!--running_program.group.remaining)\n                                    run_all(running_program.group.callbacks);\n                            }\n                        }\n                        running_program = null;\n                    }\n                    else if (now$$1 >= running_program.start) {\n                        const p = now$$1 - running_program.start;\n                        t = running_program.a + running_program.d * easing(p / running_program.duration);\n                        tick$$1(t, 1 - t);\n                    }\n                }\n                return !!(running_program || pending_program);\n            });\n        }\n    }\n    return {\n        run(b) {\n            if (typeof config === 'function') {\n                wait().then(() => {\n                    config = config();\n                    go(b);\n                });\n            }\n            else {\n                go(b);\n            }\n        },\n        end() {\n            clear_animation();\n            running_program = pending_program = null;\n        }\n    };\n}\n\nfunction handle_promise(promise, info) {\n    const token = info.token = {};\n    function update(type, index, key, value) {\n        if (info.token !== token)\n            return;\n        info.resolved = key && { [key]: value };\n        const child_ctx = assign(assign({}, info.ctx), info.resolved);\n        const block = type && (info.current = type)(child_ctx);\n        if (info.block) {\n            if (info.blocks) {\n                info.blocks.forEach((block, i) => {\n                    if (i !== index && block) {\n                        group_outros();\n                        on_outro(() => {\n                            block.d(1);\n                            info.blocks[i] = null;\n                        });\n                        block.o(1);\n                        check_outros();\n                    }\n                });\n            }\n            else {\n                info.block.d(1);\n            }\n            block.c();\n            if (block.i)\n                block.i(1);\n            block.m(info.mount(), info.anchor);\n            flush();\n        }\n        info.block = block;\n        if (info.blocks)\n            info.blocks[index] = block;\n    }\n    if (is_promise(promise)) {\n        promise.then(value => {\n            update(info.then, 1, info.value, value);\n        }, error => {\n            update(info.catch, 2, info.error, error);\n        });\n        // if we previously had a then/catch block, destroy it\n        if (info.current !== info.pending) {\n            update(info.pending, 0);\n            return true;\n        }\n    }\n    else {\n        if (info.current !== info.then) {\n            update(info.then, 1, info.value, promise);\n            return true;\n        }\n        info.resolved = { [info.value]: promise };\n    }\n}\n\nfunction destroy_block(block, lookup) {\n    block.d(1);\n    lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n    on_outro(() => {\n        destroy_block(block, lookup);\n    });\n    block.o(1);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n    block.f();\n    outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, changed, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n    let o = old_blocks.length;\n    let n = list.length;\n    let i = o;\n    const old_indexes = {};\n    while (i--)\n        old_indexes[old_blocks[i].key] = i;\n    const new_blocks = [];\n    const new_lookup = new Map();\n    const deltas = new Map();\n    i = n;\n    while (i--) {\n        const child_ctx = get_context(ctx, list, i);\n        const key = get_key(child_ctx);\n        let block = lookup.get(key);\n        if (!block) {\n            block = create_each_block(key, child_ctx);\n            block.c();\n        }\n        else if (dynamic) {\n            block.p(changed, child_ctx);\n        }\n        new_lookup.set(key, new_blocks[i] = block);\n        if (key in old_indexes)\n            deltas.set(key, Math.abs(i - old_indexes[key]));\n    }\n    const will_move = new Set();\n    const did_move = new Set();\n    function insert(block) {\n        if (block.i)\n            block.i(1);\n        block.m(node, next);\n        lookup.set(block.key, block);\n        next = block.first;\n        n--;\n    }\n    while (o && n) {\n        const new_block = new_blocks[n - 1];\n        const old_block = old_blocks[o - 1];\n        const new_key = new_block.key;\n        const old_key = old_block.key;\n        if (new_block === old_block) {\n            // do nothing\n            next = new_block.first;\n            o--;\n            n--;\n        }\n        else if (!new_lookup.has(old_key)) {\n            // remove old block\n            destroy(old_block, lookup);\n            o--;\n        }\n        else if (!lookup.has(new_key) || will_move.has(new_key)) {\n            insert(new_block);\n        }\n        else if (did_move.has(old_key)) {\n            o--;\n        }\n        else if (deltas.get(new_key) > deltas.get(old_key)) {\n            did_move.add(new_key);\n            insert(new_block);\n        }\n        else {\n            will_move.add(old_key);\n            o--;\n        }\n    }\n    while (o--) {\n        const old_block = old_blocks[o];\n        if (!new_lookup.has(old_block.key))\n            destroy(old_block, lookup);\n    }\n    while (n)\n        insert(new_blocks[n - 1]);\n    return new_blocks;\n}\nfunction measure(blocks) {\n    const rects = {};\n    let i = blocks.length;\n    while (i--)\n        rects[blocks[i].key] = blocks[i].node.getBoundingClientRect();\n    return rects;\n}\n\nfunction get_spread_update(levels, updates) {\n    const update = {};\n    const to_null_out = {};\n    const accounted_for = { $$scope: 1 };\n    let i = levels.length;\n    while (i--) {\n        const o = levels[i];\n        const n = updates[i];\n        if (n) {\n            for (const key in o) {\n                if (!(key in n))\n                    to_null_out[key] = 1;\n            }\n            for (const key in n) {\n                if (!accounted_for[key]) {\n                    update[key] = n[key];\n                    accounted_for[key] = 1;\n                }\n            }\n            levels[i] = n;\n        }\n        else {\n            for (const key in o) {\n                accounted_for[key] = 1;\n            }\n        }\n    }\n    for (const key in to_null_out) {\n        if (!(key in update))\n            update[key] = undefined;\n    }\n    return update;\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args) {\n    const attributes = Object.assign({}, ...args);\n    let str = '';\n    Object.keys(attributes).forEach(name => {\n        if (invalid_attribute_name_character.test(name))\n            return;\n        const value = attributes[name];\n        if (value === undefined)\n            return;\n        if (value === true)\n            str += \" \" + name;\n        const escaped = String(value)\n            .replace(/\"/g, '&#34;')\n            .replace(/'/g, '&#39;');\n        str += \" \" + name + \"=\" + JSON.stringify(escaped);\n    });\n    return str;\n}\nconst escaped = {\n    '\"': '&quot;',\n    \"'\": '&#39;',\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;'\n};\nfunction escape(html) {\n    return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction each(items, fn) {\n    let str = '';\n    for (let i = 0; i < items.length; i += 1) {\n        str += fn(items[i], i);\n    }\n    return str;\n}\nconst missing_component = {\n    $$render: () => ''\n};\nfunction validate_component(component, name) {\n    if (!component || !component.$$render) {\n        if (name === 'svelte:component')\n            name += ' this={...}';\n        throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n    }\n    return component;\n}\nfunction debug(file, line, column, values) {\n    console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n    console.log(values); // eslint-disable-line no-console\n    return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n    function $$render(result, props, bindings, slots) {\n        const parent_component = current_component;\n        const $$ = {\n            on_destroy,\n            context: new Map(parent_component ? parent_component.$$.context : []),\n            // these will be immediately discarded\n            on_mount: [],\n            before_render: [],\n            after_render: [],\n            callbacks: blank_object()\n        };\n        set_current_component({ $$ });\n        const html = fn(result, props, bindings, slots);\n        set_current_component(parent_component);\n        return html;\n    }\n    return {\n        render: (props = {}, options = {}) => {\n            on_destroy = [];\n            const result = { head: '', css: new Set() };\n            const html = $$render(result, props, {}, options);\n            run_all(on_destroy);\n            return {\n                html,\n                css: {\n                    code: Array.from(result.css).map(css => css.code).join('\\n'),\n                    map: null // TODO\n                },\n                head: result.head\n            };\n        },\n        $$render\n    };\n}\nfunction get_store_value(store) {\n    let value;\n    store.subscribe(_ => value = _)();\n    return value;\n}\n\nfunction bind(component, name, callback) {\n    if (component.$$.props.indexOf(name) === -1)\n        return;\n    component.$$.bound[name] = callback;\n    callback(component.$$.ctx[name]);\n}\nfunction mount_component(component, target, anchor) {\n    const { fragment, on_mount, on_destroy, after_render } = component.$$;\n    fragment.m(target, anchor);\n    // onMount happens after the initial afterUpdate. Because\n    // afterUpdate callbacks happen in reverse order (inner first)\n    // we schedule onMount callbacks before afterUpdate callbacks\n    add_render_callback(() => {\n        const new_on_destroy = on_mount.map(run).filter(is_function);\n        if (on_destroy) {\n            on_destroy.push(...new_on_destroy);\n        }\n        else {\n            // Edge case - component was destroyed immediately,\n            // most likely as a result of a binding initialising\n            run_all(new_on_destroy);\n        }\n        component.$$.on_mount = [];\n    });\n    after_render.forEach(add_render_callback);\n}\nfunction destroy(component, detaching) {\n    if (component.$$) {\n        run_all(component.$$.on_destroy);\n        component.$$.fragment.d(detaching);\n        // TODO null out other refs, including component.$$ (but need to\n        // preserve final state?)\n        component.$$.on_destroy = component.$$.fragment = null;\n        component.$$.ctx = {};\n    }\n}\nfunction make_dirty(component, key) {\n    if (!component.$$.dirty) {\n        dirty_components.push(component);\n        schedule_update();\n        component.$$.dirty = blank_object();\n    }\n    component.$$.dirty[key] = true;\n}\nfunction init(component, options, instance, create_fragment, not_equal$$1, prop_names) {\n    const parent_component = current_component;\n    set_current_component(component);\n    const props = options.props || {};\n    const $$ = component.$$ = {\n        fragment: null,\n        ctx: null,\n        // state\n        props: prop_names,\n        update: noop,\n        not_equal: not_equal$$1,\n        bound: blank_object(),\n        // lifecycle\n        on_mount: [],\n        on_destroy: [],\n        before_render: [],\n        after_render: [],\n        context: new Map(parent_component ? parent_component.$$.context : []),\n        // everything else\n        callbacks: blank_object(),\n        dirty: null\n    };\n    let ready = false;\n    $$.ctx = instance\n        ? instance(component, props, (key, value) => {\n            if ($$.ctx && not_equal$$1($$.ctx[key], $$.ctx[key] = value)) {\n                if ($$.bound[key])\n                    $$.bound[key](value);\n                if (ready)\n                    make_dirty(component, key);\n            }\n        })\n        : props;\n    $$.update();\n    ready = true;\n    run_all($$.before_render);\n    $$.fragment = create_fragment($$.ctx);\n    if (options.target) {\n        if (options.hydrate) {\n            $$.fragment.l(children(options.target));\n        }\n        else {\n            $$.fragment.c();\n        }\n        if (options.intro && component.$$.fragment.i)\n            component.$$.fragment.i();\n        mount_component(component, options.target, options.anchor);\n        flush();\n    }\n    set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement !== 'undefined') {\n    SvelteElement = class extends HTMLElement {\n        constructor() {\n            super();\n            this.attachShadow({ mode: 'open' });\n        }\n        connectedCallback() {\n            // @ts-ignore todo: improve typings\n            for (const key in this.$$.slotted) {\n                // @ts-ignore todo: improve typings\n                this.appendChild(this.$$.slotted[key]);\n            }\n        }\n        attributeChangedCallback(attr$$1, oldValue, newValue) {\n            this[attr$$1] = newValue;\n        }\n        $destroy() {\n            destroy(this, true);\n            this.$destroy = noop;\n        }\n        $on(type, callback) {\n            // TODO should this delegate to addEventListener?\n            const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n            callbacks.push(callback);\n            return () => {\n                const index = callbacks.indexOf(callback);\n                if (index !== -1)\n                    callbacks.splice(index, 1);\n            };\n        }\n        $set() {\n            // overridden by instance, if it has props\n        }\n    };\n}\nclass SvelteComponent {\n    $destroy() {\n        destroy(this, true);\n        this.$destroy = noop;\n    }\n    $on(type, callback) {\n        const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n        callbacks.push(callback);\n        return () => {\n            const index = callbacks.indexOf(callback);\n            if (index !== -1)\n                callbacks.splice(index, 1);\n        };\n    }\n    $set() {\n        // overridden by instance, if it has props\n    }\n}\nclass SvelteComponentDev extends SvelteComponent {\n    constructor(options) {\n        if (!options || (!options.target && !options.$$inline)) {\n            throw new Error(`'target' is a required option`);\n        }\n        super();\n    }\n    $destroy() {\n        super.$destroy();\n        this.$destroy = () => {\n            console.warn(`Component was already destroyed`); // eslint-disable-line no-console\n        };\n    }\n}\n\nexport { create_animation, fix_position, handle_promise, append, insert, detach, detach_between, detach_before, detach_after, destroy_each, element, object_without_properties, svg_element, text, space, empty, listen, prevent_default, stop_propagation, attr, set_attributes, set_custom_element_data, xlink_attr, get_binding_group_value, to_number, time_ranges_to_array, children, claim_element, claim_text, set_data, set_input_type, set_style, select_option, select_options, select_value, select_multiple_value, add_resize_listener, toggle_class, custom_event, destroy_block, outro_and_destroy_block, fix_and_outro_and_destroy_block, update_keyed_each, measure, current_component, set_current_component, beforeUpdate, onMount, afterUpdate, onDestroy, createEventDispatcher, setContext, getContext, bubble, clear_loops, loop, dirty_components, intros, schedule_update, tick, add_binding_callback, add_render_callback, add_flush_callback, flush, get_spread_update, invalid_attribute_name_character, spread, escaped, escape, each, missing_component, validate_component, debug, create_ssr_component, get_store_value, group_outros, check_outros, on_outro, create_in_transition, create_out_transition, create_bidirectional_transition, noop, identity, assign, is_promise, add_location, run, blank_object, run_all, is_function, safe_not_equal, not_equal, validate_store, subscribe, create_slot, get_slot_context, get_slot_changes, exclude_internal_props, now, raf, set_now, set_raf, bind, mount_component, init, SvelteElement, SvelteComponent, SvelteComponentDev };\n","import { noop, safe_not_equal, run_all, is_function } from './internal';\n\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n    return {\n        subscribe: writable(value, start).subscribe,\n    };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n    let stop;\n    const subscribers = [];\n    function set(new_value) {\n        if (safe_not_equal(value, new_value)) {\n            value = new_value;\n            if (!stop) {\n                return; // not ready\n            }\n            subscribers.forEach((s) => s[1]());\n            subscribers.forEach((s) => s[0](value));\n        }\n    }\n    function update(fn) {\n        set(fn(value));\n    }\n    function subscribe(run, invalidate = noop) {\n        const subscriber = [run, invalidate];\n        subscribers.push(subscriber);\n        if (subscribers.length === 1) {\n            stop = start(set) || noop;\n        }\n        run(value);\n        return () => {\n            const index = subscribers.indexOf(subscriber);\n            if (index !== -1) {\n                subscribers.splice(index, 1);\n            }\n            if (subscribers.length === 0) {\n                stop();\n            }\n        };\n    }\n    return { set, update, subscribe };\n}\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n * @param {Stores} stores input stores\n * @param {function(Stores=, function(*)=):*}fn function callback that aggregates the values\n * @param {*=}initial_value when used asynchronously\n */\nfunction derived(stores, fn, initial_value) {\n    const single = !Array.isArray(stores);\n    const stores_array = single\n        ? [stores]\n        : stores;\n    const auto = fn.length < 2;\n    return readable(initial_value, (set) => {\n        let inited = false;\n        const values = [];\n        let pending = 0;\n        let cleanup = noop;\n        const sync = () => {\n            if (pending) {\n                return;\n            }\n            cleanup();\n            const result = fn(single ? values[0] : values, set);\n            if (auto) {\n                set(result);\n            }\n            else {\n                cleanup = is_function(result) ? result : noop;\n            }\n        };\n        const unsubscribers = stores_array.map((store, i) => store.subscribe((value) => {\n            values[i] = value;\n            pending &= ~(1 << i);\n            if (inited) {\n                sync();\n            }\n        }, () => {\n            pending |= (1 << i);\n        }));\n        inited = true;\n        sync();\n        return function stop() {\n            run_all(unsubscribers);\n            cleanup();\n        };\n    });\n}\n/**\n * Get the current value from a store by subscribing and immediately unsubscribing.\n * @param store readable\n */\nfunction get(store) {\n    let value;\n    store.subscribe((_) => value = _)();\n    return value;\n}\n\nexport { readable, writable, derived, get };\n","/**\r\n *  These store is rensposible of handling the \"fake routing\" of the application,\r\n *  its a routing without browser history\r\n *\r\n */\r\nimport { writable, derived } from 'svelte/store';\r\n\r\nfunction createRouterStore() {\r\n  const { subscribe, set } = writable({\r\n    path: '/',\r\n    params: {}\r\n  });\r\n\r\n  return {\r\n    subscribe,\r\n    // Go To the defined path with the defined params\r\n    goTo: (path, params = {}) => set({ path, params })\r\n  };\r\n}\r\n\r\nexport const router = createRouterStore();\r\n\r\nexport const isCurrentPath = path =>\r\n  derived(router, $router => $router.path === path);\r\n","<script>\r\n    import {isCurrentPath} from '../store/router';\r\n    \r\n    export let component;\r\n    export let path;\r\n\r\n    const isActive = isCurrentPath(path);\r\n</script>\r\n\r\n<!-- Shows only the Active Component -->\r\n{#if $isActive}\r\n<svelte:component this={component} />\r\n{/if}","/**\r\n * Performs an Ajax Call\r\n *\r\n * @param {*} options\r\n * \r\n * @returns a fetch call\r\n */\r\nexport function ajaxCall(options = {}) {\r\n  const {\r\n    action,\r\n    nonce,\r\n    nonceField,\r\n    data,\r\n    method,\r\n    credentials,\r\n    url\r\n  } = options;\r\n\r\n  if (!action) {\r\n    throw new TypeError('Cannot make ajax call without action');\r\n  }\r\n  if (!nonce) {\r\n    throw new TypeError('Cannot make ajax call without nonce');\r\n  }\r\n  \r\n  if (data && typeof data !== 'object') {\r\n    throw new TypeError('Data to send must be an object');\r\n  }\r\n\r\n  // WordPress automatically defines ajaxurl since WordPress 2.8\r\n  if (!url && !window.ajaxurl) {\r\n    throw new TypeError('Cannot make ajax call without url');\r\n  }\r\n\r\n  let formData = new FormData();\r\n  formData.append('action', action);\r\n  formData.append(nonceField || 'security', nonce);\r\n\r\n  if (data) {\r\n    // appends data as form encoded\r\n    for (let key in data) {\r\n      formData.append(key, data[key]);\r\n    }\r\n  }\r\n\r\n  return fetch(url || window.ajaxurl, {\r\n    method: method || 'POST',\r\n    body: formData,\r\n    credentials: credentials || 'same-origin'\r\n  });\r\n}\r\n","import { writable } from 'svelte/store';\r\n\r\nfunction createNotificationStore() {\r\n    const { subscribe, update } = writable({\r\n        currentNotification: null\r\n      });\r\n    \r\n      return {\r\n        subscribe,\r\n        // Go To the defined path with the defined params\r\n        addNotification: (message, type = \"success\") => {\r\n            update( data => {\r\n                data.currentNotification = {message, type};\r\n                return {...data}\r\n            });\r\n            setTimeout(() => {\r\n                update( data => {\r\n                    data.currentNotification = null;\r\n                    return {...data}\r\n                })\r\n            }, 5000)\r\n        }\r\n      };\r\n}\r\n\r\nexport const notifications = createNotificationStore();\r\n","/**\r\n *\r\n * This store handles webflow data and makes api calls\r\n *\r\n */\r\nimport { writable } from 'svelte/store';\r\nimport { router } from './router';\r\nimport { ajaxCall } from '../utils/ajax';\r\nimport { notifications } from '../store/notifications';\r\n\r\nconst {\r\n  hasToken,\r\n  nonce,\r\n  pages,\r\n  collections,\r\n  site,\r\n  staticRules,\r\n  dynamicRules,\r\n  error,\r\n  cacheDuration\r\n} = window._wfAjaxData;\r\n\r\nif (site) {\r\n  site.dashboardUrl = `https://webflow.com/dashboard/sites/${site.shortName}/settings`\r\n}\r\n\r\nif (error) {\r\n    router.goTo('/login');\r\n    notifications.addNotification(error, \"error\");\r\n} else {\r\n  if (hasToken === 'true') {\r\n    router.goTo('/configuration');\r\n  } else {\r\n    router.goTo('/login');\r\n  }\r\n}\r\n\r\nfunction createWfDataStore() {\r\n  const { subscribe, set, update } = writable({\r\n    pages: pages || [],\r\n    collections: collections || [],\r\n    site: site || undefined,\r\n    staticRules: staticRules || [],\r\n    dynamicRules: dynamicRules || [],\r\n    cacheDuration: cacheDuration || 0\r\n  });\r\n\r\n  return {\r\n    subscribe,\r\n    // Go To the defined path with the defined params\r\n    saveToken: async token => {\r\n      try {\r\n        const check = await ajaxCall({\r\n          nonce,\r\n          data: {\r\n            token\r\n          },\r\n          action: 'check_wf_token'\r\n        })\r\n\r\n        const checkRes = await check.json();\r\n\r\n\r\n\r\n        if (checkRes.data.version != \"v2\") {\r\n\r\n          notifications.addNotification(\"The token you used is invalid, be sure to create a V2 token with cms and site read permissions\", 'error');\r\n          return;\r\n        }\r\n\r\n        const saveTokenCall = await ajaxCall({\r\n          nonce,\r\n          data: {\r\n            token\r\n          },\r\n          action: 'save_wf_token'\r\n        });\r\n\r\n        const saveTokenRes = await saveTokenCall.json();\r\n\r\n        if (!saveTokenRes.success) {\r\n          notifications.addNotification(saveTokenRes.data.error || \"Invalid Token\", 'error');\r\n        }\r\n\r\n        const call = await ajaxCall({\r\n          nonce,\r\n          action: 'get_wf_site_data'\r\n        });\r\n\r\n        let res = await call.json();\r\n        if (res.success) {\r\n          // set data\r\n          set({\r\n              pages: res.data.pages || [],\r\n              collections: res.data.collections || [],\r\n              site: res.data.site,\r\n              staticRules: res.data.staticRules || [],\r\n              dynamicRules: res.data.dynamicRules || []\r\n            });\r\n          notifications.addNotification('Token Saved Successfully');\r\n          // switch page\r\n          router.goTo('/configuration');\r\n        } else {\r\n          let message = \"Invalid token\";\r\n\r\n          if (Array.isArray(res.data) && res.data[0].message) {\r\n            message = res.data[0].message;\r\n          } else if (res.data.error) {\r\n            message = res.data.error;\r\n          }\r\n          \r\n      \r\n          notifications.addNotification(message || \"Invalid Token\", 'error');\r\n        }\r\n      } catch (e) {\r\n        // should be an issue with server\r\n        const error = {\r\n          code: e.code || '500',\r\n          message: e.message || 'Cannot save api token, please try again later'\r\n        };\r\n        notifications.addNotification(error.message, 'error');\r\n      }\r\n    },\r\n    removeToken: async () => {\r\n      try {\r\n        await ajaxCall({\r\n          nonce,\r\n          action: 'remove_wf_token'\r\n        });\r\n        notifications.addNotification('Token removed successfully');\r\n        window.location.reload();\r\n        \r\n      } catch (e) {\r\n        const error = {\r\n          code: e.code || '500',\r\n          message: e.message || 'Cannot remove token, please try again later'\r\n        };\r\n        notifications.addNotification(error.message, 'error');\r\n      }\r\n    },\r\n    removeTokenAndData: async () => {\r\n      try {\r\n        await ajaxCall({\r\n          nonce,\r\n          action: 'remove_wf_token_and_data'\r\n        });\r\n        notifications.addNotification('Token removed successfully');\r\n        window.location.reload();\r\n        \r\n      } catch (e) {\r\n        const error = {\r\n          code: e.code || '500',\r\n          message: e.message || 'Cannot remove token, please try again later'\r\n        };\r\n        notifications.addNotification(error.message, 'error');\r\n      }\r\n    },\r\n    addStaticRule: (rule) => {\r\n      update(data => {\r\n        data.staticRules.push(rule);\r\n        return {\r\n          ...data\r\n        };\r\n      });\r\n    },\r\n    removeStaticRule: index => {\r\n      update(data => {\r\n        data.staticRules.splice(index, 1);\r\n        return {\r\n          ...data\r\n        };\r\n      });\r\n    },\r\n    addDynamicRule: (rule) => {\r\n      update(data => {\r\n        data.dynamicRules.push(rule); // [`/${slug}/*`, `/${slug}/`]\r\n        return {\r\n          ...data\r\n        };\r\n      });\r\n    },\r\n    removeDynamicRule: index => {\r\n      update(data => {\r\n        data.dynamicRules.splice(index, 1);\r\n        return {\r\n          ...data\r\n        };\r\n      });\r\n    },\r\n    saveStaticRules: async rules => {\r\n      try {\r\n        const call = await ajaxCall({\r\n          action: 'save_wf_static_rules',\r\n          nonce,\r\n          data: {\r\n            rules: JSON.stringify(rules)\r\n          }\r\n        });\r\n\r\n        const res = await call.json();\r\n        if (res.success) {\r\n          const staticRules = res.data;\r\n          update(n => {\r\n            n.staticRules = staticRules;\r\n            return {\r\n              ...n\r\n            };\r\n          });\r\n          notifications.addNotification(`Rules saved successfully`);\r\n          return true;\r\n        } else {\r\n          const error = res.data[0] || {\r\n            code: '500',\r\n            message: 'Internal Server Error'\r\n          };\r\n          notifications.addNotification(error.message, 'error');\r\n          return false;\r\n        }\r\n      } catch (e) {\r\n        const error = {\r\n          code: e.code || '500',\r\n          message: e.message || 'Cannot save data please, try again later'\r\n        };\r\n        notifications.addNotification(error.message, 'error');\r\n        return false;\r\n      }\r\n    },\r\n    saveDynamicRules: async rules => {\r\n      try {\r\n        const call = await ajaxCall({\r\n          action: 'save_wf_dynamic_rules',\r\n          nonce,\r\n          data: {\r\n            rules: JSON.stringify(rules)\r\n          }\r\n        });\r\n\r\n        const res = await call.json();\r\n        if (res.success) {\r\n          const dynamicRules = res.data;\r\n          update(n => {\r\n            n.dynamicRules = dynamicRules;\r\n            return {\r\n              ...n\r\n            };\r\n          });\r\n          notifications.addNotification(`Rules saved successfully`);\r\n          return true;\r\n        } else {\r\n          const error = res.data[0] || {\r\n            code: '500',\r\n            message: 'Internal Server Error'\r\n          };\r\n          notifications.addNotification(error.message, 'error');\r\n          return false;\r\n        }\r\n      } catch (e) {\r\n        const error = {\r\n          code: e.code || '500',\r\n          message: e.message || 'Cannot save data please, try again later'\r\n        };\r\n        notifications.addNotification(error.message, 'error');\r\n        return false;\r\n      }\r\n    },\r\n    invalidateCache: async () => {\r\n      try {\r\n        const call = await ajaxCall({\r\n          action: 'invalidate_wf_cache',\r\n          nonce\r\n        });\r\n        const res = await call.json();\r\n        if (res.success) {\r\n          notifications.addNotification(`Cache invalidated successfully`);\r\n          return true;\r\n        } else {\r\n          const error = res.data[0] || {\r\n            code: '500',\r\n            message: 'Internal Server Error'\r\n          };\r\n          notifications.addNotification(error.message, 'error');\r\n          return false;\r\n        }\r\n      } catch (e) {\r\n        const error = {\r\n          code: e.code || '500',\r\n          message: e.message || 'Cannot save data please, try again later'\r\n        };\r\n        notifications.addNotification(error.message, 'error');\r\n        return false;\r\n      }\r\n    },\r\n    changeCache: async (duration) => {\r\n      try {\r\n        const call = await ajaxCall({\r\n          action: 'change_wf_cache_duration',\r\n          nonce,\r\n          data: {\r\n            duration\r\n          }\r\n        });\r\n        const res = await call.json();\r\n        if (res.success) {\r\n          notifications.addNotification(`Cache settings changed successfully`);\r\n          return true;\r\n        } else {\r\n          const error = res.data[0] || {\r\n            code: '500',\r\n            message: 'Internal Server Error'\r\n          };\r\n          notifications.addNotification(error.message, 'error');\r\n          return false;\r\n        }\r\n      } catch (e) {\r\n        const error = {\r\n          code: e.code || '500',\r\n          message: e.message || 'Cannot save data please, try again later'\r\n        };\r\n        notifications.addNotification(error.message, 'error');\r\n        return false;\r\n      }\r\n    },\r\n    preloadCache: async () => {\r\n      try {\r\n        const call = await ajaxCall({\r\n          action: 'preload_wf_cache',\r\n          nonce\r\n        });\r\n        const res = await call.json();\r\n        if (res.success) {\r\n          const pages = res.data || 0;\r\n          notifications.addNotification(\r\n            `Preloaded ${pages} ${pages == 1 ? 'page' : 'pages'}!`\r\n          );\r\n          return true;\r\n        } else {\r\n          const error = res.data[0] || {\r\n            code: '500',\r\n            message: 'Internal Server Error'\r\n          };\r\n          notifications.addNotification(error.message, 'error');\r\n          return false;\r\n        }\r\n      } catch (e) {\r\n        const error = {\r\n          code: e.code || '500',\r\n          message: e.message || 'Cannot save data please, try again later'\r\n        };\r\n        notifications.addNotification(error.message, 'error');\r\n        return false;\r\n      }\r\n    }\r\n  };\r\n}\r\n\r\nexport const store = createWfDataStore();\r\n","<script>\r\n  export let value = \"Submit\";\r\n  export let disabled = false;\r\n  export let variation = null;\r\n</script>\r\n\r\n<style>\r\n  input[type=\"submit\"] {\r\n    -webkit-appearance: button;\r\n  }\r\n\r\n  input[type=\"submit\"] {\r\n    display: inline-block;\r\n    padding: 9px 15px;\r\n    color: white;\r\n    border: 0;\r\n    line-height: inherit;\r\n    text-decoration: none;\r\n    cursor: pointer;\r\n    border-radius: 4px;\r\n  }\r\n\r\n  .form_submit-button {\r\n    width: 100%;\r\n    height: 50px;\r\n    padding-right: 28px;\r\n    padding-left: 28px;\r\n    background-color: #4353ff;\r\n    font-weight: 500;\r\n  }\r\n\r\n  .form_submit-button:hover {\r\n    background-color: #3545ee;\r\n  }\r\n  .form_submit-button:disabled {\r\n    opacity: 0.7;\r\n    cursor: not-allowed;\r\n  }\r\n  .form_submit-button[variation=\"small\"] {\r\n    width: 150px;\r\n    height: auto;\r\n  }\r\n\r\n  .form_submit-button[variation=\"black\"] {\r\n    width: auto;\r\n    height: auto;\r\n    padding-right: 28px;\r\n    padding-left: 28px;\r\n    background-color: #333;\r\n    font-weight: 500;\r\n  }\r\n\r\n  .form_submit-button[variation=\"black\"]:hover {\r\n    background-color: #000;\r\n  }\r\n\r\n  .form_submit-button[variation=\"red\"] {\r\n    width: auto;\r\n    height: auto;\r\n    padding-right: 28px;\r\n    padding-left: 28px;\r\n    background-color: #ff6382;\r\n    font-weight: 500;\r\n  }\r\n\r\n  .form_submit-button[variation=\"red\"]:hover {\r\n    background-color: #ff6382;\r\n  }\r\n\r\n  .form_submit-button[variation=\"grey\"] {\r\n    width: auto;\r\n    height: auto;\r\n    padding-right: 28px;\r\n    padding-left: 28px;\r\n    background-color: #d2d4d5;\r\n    font-weight: 500;\r\n  }\r\n\r\n  .form_submit-button[variation=\"grey\"]:hover {\r\n    background-color: #d2d4d5;\r\n  }\r\n</style>\r\n\r\n<input\r\n  type=\"submit\"\r\n  {value}\r\n  class=\"form_submit-button\"\r\n  {variation}\r\n  {disabled} />\r\n","<script>\r\n  export let forHtml = \"\";\r\n</script>\r\n\r\n<style>\r\n  .field_label {\r\n    margin-top: 6px;\r\n    margin-bottom: 6px;\r\n    color: #999999;\r\n    font-size: 12px;\r\n    line-height: 18px;\r\n    font-weight: bold;\r\n    display: block;\r\n  }\r\n</style>\r\n\r\n<label class=\"field_label\" for={forHtml}>\r\n  <slot />\r\n</label>\r\n","<script>\r\n  import { store } from \"../store/wfData\";\r\n  import Container from \"../components/Container.svelte\";\r\n\r\n  import Submit from \"../components/Submit.svelte\";\r\n  import Label from \"../components/Label.svelte\";\r\n  import { writable } from \"svelte/store\";\r\n  import Logo from \"../components/Logo.svelte\";\r\n\r\n  const loginStore = writable({\r\n    disabled: false,\r\n    value: \"Add Webflow API Key\"\r\n  });\r\n\r\n  let token = \"\";\r\n\r\n  const handleSubmit = async e => {\r\n    e.preventDefault();\r\n    loginStore.set({ disabled: true, value: \"Saving...\" });\r\n    await store.saveToken(token);\r\n    loginStore.set({ disabled: false, value: \"Add Webflow API Key\" });\r\n  };\r\n</script>\r\n\r\n<style>\r\n  .login-wrapper {\r\n    background-color: white;\r\n    padding: 40px;\r\n    border-radius: 4px;\r\n    border: 1px solid #f7f7f7;\r\n    width: 450px;\r\n    text-align: center;\r\n  }\r\n  form {\r\n    max-width: 500px;\r\n    margin: auto;\r\n  }\r\n  p {\r\n    text-align: center;\r\n    margin: 0;\r\n    margin-bottom: 30px;\r\n    font-size: 14px;\r\n  }\r\n  a {\r\n    color: black;\r\n    text-align: center;\r\n    outline: 0;\r\n    box-shadow: none;\r\n  }\r\n  input.field-input {\r\n    margin-bottom: 10px;\r\n    background-color: #f7f8f9;\r\n  }\r\n\r\n  .warning-notice {\r\n    background-color: #f7f8f9;\r\n    padding: 20px;\r\n    border-radius: 4px;\r\n    margin-top: 20px;\r\n  }\r\n</style>\r\n\r\n<Container>\r\n  <div class=\"login-wrapper\">\r\n    <Logo />\r\n    <b>Congratulations on installing the Webflow Wordpress plugin!</b>\r\n    <p>\r\n      You can find your site's API key by going to the <a href=\"https://webflow.com/dashboard?utm_source=wpplugin\" target=\"_blank\" rel=\"nofollow\">Webflow Dashboard</a>.\r\n    <br />Be sure to generate a <a href=\"https://developers.webflow.com/data/reference/site-token?utm_source=iterable&utm_medium=email&utm_campaign=developerdeprecationv1sitetoken\">V2 Token</a> with at least Sites and CMS read only permissions.\r\n    </p>\r\n    <form on:submit={handleSubmit}>\r\n\r\n      <input\r\n        class=\"field-input\"\r\n        bind:value={token}\r\n        type=\"password\"\r\n        name=\"api_keys\"\r\n        autocomplete=\"off\"\r\n        placeholder=\"Your Api Key...\"\r\n        required />\r\n      <Submit value={$loginStore.value} disabled={$loginStore.disabled} />\r\n    </form>\r\n\r\n    <div class=\"warning-notice\">\r\n      This version of the plugin is not compatible with Webflow Ecommerce. Please contact <a href=\"https://university.webflow.com/contact\" target=\"_blank\" rel=\"nofollow\">Webflow Support</a> for any help with the plugin.\r\n    </div>\r\n  </div>\r\n</Container>\r\n","<script>\r\n  import { router } from \"../store/router\";\r\n  import { isCurrentPath } from \"../store/router\";\r\n\r\n  export let path;\r\n  export let params = {};\r\n\r\n  export let text = \"\";\r\n\r\n  const handleClick = e => {\r\n    e.preventDefault();\r\n    router.goTo(path, params);\r\n  };\r\n\r\n  const isActive = isCurrentPath(path);\r\n \r\n</script>\r\n\r\n<style>\r\n  a {\r\n    height: 36px;\r\n    margin-bottom: 0px;\r\n    margin-right: 10px;\r\n    padding-left: 10px;\r\n    padding-right: 10px;\r\n    -webkit-box-flex: 0;\r\n    -webkit-flex: 0 0 auto;\r\n    -ms-flex: 0 0 auto;\r\n    flex: 0 0 auto;\r\n    -webkit-transition: color 200ms ease-in-out;\r\n    transition: color 200ms ease-in-out;\r\n    color: #888;\r\n    font-size: 15px;\r\n    line-height: 37px;\r\n    font-weight: 500;\r\n    text-decoration: none;\r\n    border-bottom: 2px solid transparent;\r\n  }\r\n  a:hover {\r\n    color: #000;\r\n  }\r\n  a.is-active {\r\n    color: #000;\r\n    border-bottom: 2px solid #000;\r\n  }\r\n  a:focus {\r\n    outline: none;\r\n    box-shadow: none;\r\n  }\r\n</style>\r\n\r\n<a href=\"/\" on:click={handleClick} class={$isActive ? 'is-active' : ''}>\r\n  {text}\r\n</a>\r\n"," <script>\r\n import Navbar from './Navbar.svelte';\r\n import Link from './Link.svelte';\r\n </script>\r\n \r\n <Navbar>\r\n    <Link path=\"/configuration\" text={\"Pages\"}></Link>\r\n    <Link path=\"/settings\" text={\"Settings\"}></Link>\r\n </Navbar>","<script>\r\n  import { store } from \"../store/wfData\";\r\n  import Submit from \"./Submit.svelte\";\r\n  import Label from \"./Label.svelte\";\r\n  import { writable } from \"svelte/store\";\r\n  import { onMount } from \"svelte\";\r\n\r\n  const hasItems = $store.staticRules.length > 0;\r\n\r\n  let staticRule = [\"\", \"\"];\r\n\r\n  let canAdd = false;\r\n\r\n\r\n  const handleSubmit = async e => {\r\n    e.preventDefault();\r\n   \r\n    await store.saveStaticRules($store.staticRules);\r\n    \r\n  };\r\n\r\n  const addStaticRule = e => {\r\n    e.preventDefault();\r\n    document.activeElement.blur();\r\n    store.addStaticRule(staticRule);\r\n    staticRule = [\"\", \"\"];\r\n    canAdd = false;\r\n    store.saveStaticRules($store.staticRules);\r\n  };\r\n\r\n  const removeStaticRule = index => {\r\n    store.removeStaticRule(index);\r\n    store.saveStaticRules($store.staticRules);\r\n  };\r\n\r\n  const handleInput = ({ target }) => {\r\n    let value = target.value;\r\n    let isAdd = target.getAttribute(\"data-add\");\r\n    target.value = encodeURI(decodeURI(value)); // little sanitification\r\n    value = target.value;\r\n    const match = value.match(/^(\\.?){2}(\\/[a-zA-Z0-9_\\-]+)+\\/?$/g);\r\n    if (match && match[0] === value || value === \"/\") {\r\n      target.setCustomValidity(\"\");\r\n      if (isAdd) {\r\n        canAdd = true;\r\n      }\r\n    } else {\r\n      target.setCustomValidity(\"Invalid field.\");\r\n      if (isAdd) {\r\n        canAdd = false;\r\n      }\r\n    }\r\n  };\r\n\r\n  const pages = $store.pages.filter( page => page !== '/404' && page !== '/401' );\r\n</script>\r\n\r\n<style>\r\n  \r\n  .headers h3 {\r\n    margin: 0;\r\n    height: 10%;\r\n    margin-bottom: 6px;\r\n  }\r\n  .form-wrapper {\r\n    display: flex;\r\n    flex-direction: column;\r\n    height: auto;\r\n    padding: 0px 10px;\r\n    border-radius: 4px;\r\n    margin-bottom: 10px;\r\n  }\r\n\r\n  .form-wrapper.new-page {\r\n    background-color: #f7f8f9;\r\n  }\r\n\r\n  form.configuration-form {\r\n    border-radius: 4px;\r\n    height: calc(100% - 32px);\r\n    width: 100%;\r\n    display: inline-flex;\r\n\r\n    flex-direction: column;\r\n  }\r\n\r\n  .section-description {\r\n    font-size: 12px;\r\n    font-weight: bold;\r\n  }\r\n  .no-pages-added {\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n    flex: 1;\r\n    width: 100%;\r\n    background-color: #f7f7f7;\r\n    border: 1px solid #f7f7f7;\r\n  }\r\n  .no-pages-added p {\r\n    font-size: 14px;\r\n    font-weight: 700;\r\n  }\r\n  .added-pages {\r\n    flex: 1;\r\n    display: inline-flex;\r\n    flex-direction: column;\r\n  }\r\n  .added-pages .fields-wrapper, .added-pages .fields-headers{\r\n    padding: 0 10px;\r\n    background-color: #f7f8f9;\r\n  }\r\n</style>\r\n\r\n<div class=\"wrapper\">\r\n  <div style=\"display: flex; flex-direction: column; justify-content: space-evenly;\">\r\n    <div class=\"headers\">\r\n      <h3>Static Pages</h3>\r\n    \r\n    </div>\r\n    <div class=\"form-wrapper new-page\">\r\n    <p class=\"section-description\">Create a new redirect</p>\r\n      <p class=\"description-subtitle\">Create redirects to serve a made-in-Webflow page in place of a WordPress Page</p>\r\n      <div class=\"grid grid-with-actions \">\r\n        <div>\r\n          <Label>WordPress Path</Label>\r\n        </div>\r\n        <div>\r\n          <Label>Webflow Page</Label>\r\n        </div>\r\n        <div style=\"visibility:hidden\">\r\n          <button disabled class=\"button add\">+</button>\r\n        </div>\r\n      </div>\r\n      <div class=\"input-wrapper\">\r\n\r\n        <form on:submit={addStaticRule} class=\"grid grid-with-actions\">\r\n          <div>\r\n            <input\r\n              data-add=\"true\"\r\n              class=\"field-input\"\r\n              type=\"text\"\r\n              bind:value={staticRule[0]}\r\n              required\r\n              placeholder=\"/path\"\r\n              on:input={handleInput} />\r\n            <small class=\"error-message\">\r\n              Path must start with / and be valid URLs\r\n            </small>\r\n          </div>\r\n          <div>\r\n\r\n            <select bind:value={staticRule[1]} class=\"field-select\">\r\n              {#each pages as page}\r\n                <option value={page}>\r\n                   {page.substr(1).replace('index.html', 'Home Page')}\r\n                </option>\r\n              {/each}\r\n            </select>\r\n          </div>\r\n\r\n          <button\r\n            type=\"submit\"\r\n            disabled={!canAdd}\r\n            class=\"button add\"\r\n            on:click={addStaticRule}>\r\n            +\r\n          </button>\r\n        </form>\r\n\r\n      </div>\r\n\r\n    </div>\r\n  </div>\r\n  <div class=\"added-pages\">\r\n    <p class=\"section-description\">Rules</p>\r\n    <form on:submit={handleSubmit} class=\"configuration-form\">\r\n      {#if $store.staticRules.length}\r\n        <div class=\"grid grid-with-actions fields-headers\">\r\n          <div>\r\n            <Label>WordPress Path</Label>\r\n          </div>\r\n          <div>\r\n            <Label>Webflow Page</Label>\r\n          </div>\r\n          <div style=\"visibility:hidden\">\r\n            <button disabled class=\"button add\">+</button>\r\n          </div>\r\n        </div>\r\n        <div class=\"fields-wrapper\">\r\n          {#each $store.staticRules as staticRule, index}\r\n            <div class=\"input-wrapper\">\r\n              <div class=\"grid grid-with-actions\">\r\n                <div>\r\n                  <input\r\n                    class=\"field-input\"\r\n                    type=\"text\"\r\n                    bind:value={staticRule[0]}\r\n                    readonly\r\n                    disabled\r\n                    on:input={handleInput} />\r\n                </div>\r\n                <div>\r\n                  <select bind:value={staticRule[1]} class=\"field-select\" disabled>\r\n                    {#each pages as page}\r\n                      <option value={page}>\r\n                         {page.substr(1).replace('index.html', 'Home Page')}\r\n                      </option>\r\n                    {/each}\r\n                  </select>\r\n                </div>\r\n                <a\r\n                  class=\"button remove\"\r\n                  on:click={() => removeStaticRule(index)}>\r\n                  X\r\n                </a>\r\n\r\n              </div>\r\n            </div>\r\n          {/each}\r\n        </div>\r\n      {:else}\r\n        <div class=\"no-pages-added\">\r\n          <p>No rules added</p>\r\n        </div>\r\n      {/if}\r\n    </form>\r\n  </div>\r\n</div>\r\n","<script>\r\n  import { store } from \"../store/wfData\";\r\n  import Submit from \"./Submit.svelte\";\r\n  import Label from \"./Label.svelte\";\r\n  import { writable } from \"svelte/store\";\r\n\r\n  const hasItems = $store.dynamicRules.length > 0;\r\n\r\n  const firstCollection = $store.collections[0];\r\n\r\n  let dynamicRule = [\"\", \"\"];\r\n  if ($store.collections.length) {\r\n    dynamicRule = [``, `/${$store.collections[0].slug}/`];\r\n  }\r\n\r\n  let canAdd = false;\r\n\r\n  const handleSubmit = async e => {\r\n    e.preventDefault();\r\n\r\n    await store.saveDynamicRules($store.dynamicRules);\r\n  };\r\n\r\n  const addDynamicRule = e => {\r\n    canAdd = false;\r\n    e.preventDefault();\r\n    document.activeElement.blur();\r\n    if (!dynamicRule || !dynamicRule[0]) {\r\n      canAdd = false;\r\n      return;\r\n    }\r\n    store.addDynamicRule(dynamicRule);\r\n    dynamicRule = [``, ``];\r\n    store.saveDynamicRules($store.dynamicRules);\r\n  };\r\n\r\n  const removeDynamicRule = index => {\r\n    store.removeDynamicRule(index);\r\n    store.saveDynamicRules($store.dynamicRules);\r\n  };\r\n\r\n  const handleInput = e => {\r\n    let value = e.target.value;\r\n    e.target.value = encodeURI(decodeURI(value)); // little sanitification\r\n    let isAdd = e.target.getAttribute(\"data-add\");\r\n    value = e.target.value;\r\n    const match = value.match(/\\/.*?\\/\\*/g);\r\n    if (match && match[0] === value) {\r\n      e.target.setCustomValidity(\"\");\r\n      if (isAdd) {\r\n        canAdd = true;\r\n      }\r\n    } else {\r\n      e.target.setCustomValidity(\"Invalid field.\");\r\n      if (isAdd) {\r\n        canAdd = false;\r\n      }\r\n    }\r\n  };\r\n</script>\r\n\r\n<style>\r\n  \r\n  .headers h3 {\r\n    margin: 0;\r\n    height: 10%;\r\n     margin-bottom: 6px;\r\n  }\r\n  .form-wrapper {\r\n    display: flex;\r\n    flex-direction: column;\r\n    height: auto;\r\n    padding: 0px 10px;\r\n    border-radius: 4px;\r\n    margin-bottom: 10px;\r\n  }\r\n\r\n  .form-wrapper.new-page {\r\n    background-color: #f7f8f9;\r\n  }\r\n\r\n  form.configuration-form {\r\n    border-radius: 4px;\r\n    height: calc(100% - 32px);\r\n    width: 100%;\r\n    display: inline-flex;\r\n\r\n    flex-direction: column;\r\n  }\r\n  \r\n  .section-description {\r\n    font-size: 12px;\r\n    font-weight: bold;\r\n  }\r\n  .no-collections {\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n    flex: 1;\r\n    width: 100%;\r\n    background-color: #f7f7f7;\r\n    border: 1px solid #f7f7f7;\r\n    min-height: 90px;\r\n  }\r\n  .no-collections p {\r\n    font-size: 14px;\r\n    font-weight: 700;\r\n  }\r\n  .added-pages {\r\n    flex: 1;\r\n    display: inline-flex;\r\n    flex-direction: column;\r\n  }\r\n  .added-pages .fields-wrapper,\r\n  .added-pages .fields-headers {\r\n    padding: 0 10px;\r\n    background-color: #f7f8f9;\r\n  }\r\n\r\n  :global(.fields-wrapper) {\r\n    flex: 1;\r\n    overflow: auto;\r\n    max-height: calc(50px * 5);\r\n  }\r\ne\r\n:global(.fields-wrapper::-webkit-scrollbar){\r\n\twidth: 3px;\r\n\tbackground-color: #F5F5F5;\r\n}\r\n\r\n:global(.fields-wrapper::-webkit-scrollbar-thumb){\r\n\tbackground-color: #a1a1a1;\r\n}\r\n</style>\r\n\r\n<div class=\"wrapper\">\r\n  <div\r\n    style=\"display: flex; flex-direction: column; justify-content: space-evenly;\">\r\n    <div class=\"headers\">\r\n      <h3>Collection Pages</h3>\r\n    </div>\r\n    <div class=\"form-wrapper new-page\">\r\n      <p class=\"section-description\">Create a new Rule</p>\r\n      {#if $store.collections.length > 0}\r\n        <div class=\"grid grid-with-actions\">\r\n          <div>\r\n            <Label>WordPress Path</Label>\r\n          </div>\r\n          <div>\r\n            <Label>Webflow Page</Label>\r\n          </div>\r\n          <div style=\"visibility:hidden\">\r\n            <button disabled class=\"button add\">+</button>\r\n          </div>\r\n        </div>\r\n        <div class=\"input-wrapper\">\r\n          <form on:submit={addDynamicRule} class=\"grid grid-with-actions\">\r\n\r\n            <div>\r\n\r\n              <input\r\n                data-add=\"true\"\r\n                class=\"field-input\"\r\n                type=\"text\"\r\n                bind:value={dynamicRule[0]}\r\n                required\r\n                placeholder=\"/path/*\"\r\n                on:input={handleInput} />\r\n              <small class=\"error-message\">\r\n                Path must start with / and be valid URLs and end with /*\r\n              </small>\r\n            </div>\r\n            <div>\r\n\r\n              <select bind:value={dynamicRule[1]} class=\"field-select\">\r\n                {#each $store.collections as collection}\r\n                  <option value={'/' + collection.slug + '/'}>\r\n                    /{collection.slug}/*\r\n                  </option>\r\n                {/each}\r\n              </select>\r\n            </div>\r\n\r\n            <button\r\n              type=\"submit\"\r\n              disabled={!canAdd}\r\n              class=\"button add\"\r\n              on:click={addDynamicRule}>\r\n              +\r\n            </button>\r\n          </form>\r\n        </div>\r\n      {:else}\r\n        <div class=\"no-collections\">\r\n          <p>No collections</p>\r\n        </div>\r\n      {/if}\r\n    </div>\r\n  </div>\r\n  <div class=\"added-pages\">\r\n    <p class=\"section-description\">Rules</p>\r\n    <form on:submit={handleSubmit} class=\"configuration-form\">\r\n      {#if $store.dynamicRules.length}\r\n        <div class=\"grid grid-with-actions fields-headers\">\r\n          <div>\r\n            <Label>WordPress Path</Label>\r\n          </div>\r\n          <div>\r\n            <Label>Webflow Page</Label>\r\n          </div>\r\n          <div style=\"visibility:hidden\">\r\n            <button disabled class=\"button add\">+</button>\r\n          </div>\r\n        </div>\r\n        <div class=\"fields-wrapper\">\r\n          {#each $store.dynamicRules as dynamicRule, index}\r\n            <div class=\"input-wrapper\">\r\n              <div class=\"grid grid-with-actions\">\r\n                <div>\r\n                  <input\r\n                    class=\"field-input\"\r\n                    type=\"text\"\r\n                    bind:value={dynamicRule[0]}\r\n                    required\r\n                    disabled\r\n                    on:input={handleInput}\r\n                    readonly />\r\n\r\n                </div>\r\n                <div>\r\n                  <select\r\n                    bind:value={dynamicRule[1]}\r\n                    class=\"field-select\"\r\n                    disabled>\r\n                    {#each $store.collections as collection}\r\n                      <option value={'/' + collection.slug + '/'}>\r\n                        /{collection.slug}/*\r\n                      </option>\r\n                    {/each}\r\n                  </select>\r\n                </div>\r\n\r\n                <a\r\n                  class=\"button remove\"\r\n                  on:click={() => removeDynamicRule(index)}>\r\n                  X\r\n                </a>\r\n\r\n              </div>\r\n            </div>\r\n          {/each}\r\n        </div>\r\n      {:else}\r\n        <div class=\"no-collections\">\r\n          <p>No rules added</p>\r\n        </div>\r\n      {/if}\r\n    </form>\r\n  </div>\r\n\r\n</div>\r\n","import { cubicOut, cubicInOut } from './easing';\nimport { is_function, assign } from './internal';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n            t[p[i]] = s[p[i]];\r\n    return t;\r\n}\n\nfunction fade(node, { delay = 0, duration = 400 }) {\n    const o = +getComputedStyle(node).opacity;\n    return {\n        delay,\n        duration,\n        css: t => `opacity: ${t * o}`\n    };\n}\nfunction fly(node, { delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 }) {\n    const style = getComputedStyle(node);\n    const target_opacity = +style.opacity;\n    const transform = style.transform === 'none' ? '' : style.transform;\n    const od = target_opacity * (1 - opacity);\n    return {\n        delay,\n        duration,\n        easing,\n        css: (t, u) => `\n\t\t\ttransform: ${transform} translate(${(1 - t) * x}px, ${(1 - t) * y}px);\n\t\t\topacity: ${target_opacity - (od * u)}`\n    };\n}\nfunction slide(node, { delay = 0, duration = 400, easing = cubicOut }) {\n    const style = getComputedStyle(node);\n    const opacity = +style.opacity;\n    const height = parseFloat(style.height);\n    const padding_top = parseFloat(style.paddingTop);\n    const padding_bottom = parseFloat(style.paddingBottom);\n    const margin_top = parseFloat(style.marginTop);\n    const margin_bottom = parseFloat(style.marginBottom);\n    const border_top_width = parseFloat(style.borderTopWidth);\n    const border_bottom_width = parseFloat(style.borderBottomWidth);\n    return {\n        delay,\n        duration,\n        easing,\n        css: t => `overflow: hidden;` +\n            `opacity: ${Math.min(t * 20, 1) * opacity};` +\n            `height: ${t * height}px;` +\n            `padding-top: ${t * padding_top}px;` +\n            `padding-bottom: ${t * padding_bottom}px;` +\n            `margin-top: ${t * margin_top}px;` +\n            `margin-bottom: ${t * margin_bottom}px;` +\n            `border-top-width: ${t * border_top_width}px;` +\n            `border-bottom-width: ${t * border_bottom_width}px;`\n    };\n}\nfunction scale(node, { delay = 0, duration = 400, easing = cubicOut, start = 0, opacity = 0 }) {\n    const style = getComputedStyle(node);\n    const target_opacity = +style.opacity;\n    const transform = style.transform === 'none' ? '' : style.transform;\n    const sd = 1 - start;\n    const od = target_opacity * (1 - opacity);\n    return {\n        delay,\n        duration,\n        easing,\n        css: (t, u) => `\n\t\t\ttransform: ${transform} scale(${1 - (sd * u)});\n\t\t\topacity: ${target_opacity - (od * u)}\n\t\t`\n    };\n}\nfunction draw(node, { delay = 0, speed, duration, easing = cubicInOut }) {\n    const len = node.getTotalLength();\n    if (duration === undefined) {\n        if (speed === undefined) {\n            duration = 800;\n        }\n        else {\n            duration = len / speed;\n        }\n    }\n    else if (typeof duration === 'function') {\n        duration = duration(len);\n    }\n    return {\n        delay,\n        duration,\n        easing,\n        css: (t, u) => `stroke-dasharray: ${t * len} ${u * len}`\n    };\n}\nfunction crossfade(_a) {\n    var { fallback } = _a, defaults = __rest(_a, [\"fallback\"]);\n    const to_receive = new Map();\n    const to_send = new Map();\n    function crossfade(from, node, params) {\n        const { delay = 0, duration = d => Math.sqrt(d) * 30, easing = cubicOut } = assign(assign({}, defaults), params);\n        const to = node.getBoundingClientRect();\n        const dx = from.left - to.left;\n        const dy = from.top - to.top;\n        const d = Math.sqrt(dx * dx + dy * dy);\n        const style = getComputedStyle(node);\n        const transform = style.transform === 'none' ? '' : style.transform;\n        const opacity = +style.opacity;\n        return {\n            delay,\n            duration: is_function(duration) ? duration(d) : duration,\n            easing,\n            css: (t, u) => `\n\t\t\t\topacity: ${t * opacity};\n\t\t\t\ttransform: ${transform} translate(${u * dx}px,${u * dy}px);\n\t\t\t`\n        };\n    }\n    function transition(items, counterparts, intro) {\n        return (node, params) => {\n            items.set(params.key, {\n                rect: node.getBoundingClientRect()\n            });\n            return () => {\n                if (counterparts.has(params.key)) {\n                    const { rect } = counterparts.get(params.key);\n                    counterparts.delete(params.key);\n                    return crossfade(rect, node, params);\n                }\n                // if the node is disappearing altogether\n                // (i.e. wasn't claimed by the other list)\n                // then we need to supply an outro\n                items.delete(params.key);\n                return fallback && fallback(node, params, intro);\n            };\n        };\n    }\n    return [\n        transition(to_send, to_receive, false),\n        transition(to_receive, to_send, true)\n    ];\n}\n\nexport { fade, fly, slide, scale, draw, crossfade };\n","<script>\r\n  import { store } from \"../store/wfData\";\r\n  import { writable } from \"svelte/store\";\r\n  import Submit from \"./Submit.svelte\";\r\n  import { fade } from 'svelte/transition';\r\n\r\n  const removeTokenStore = writable({\r\n    disabled: false,\r\n    value: \"Remove site\"\r\n  });\r\n\r\n  const modalStore = writable({\r\n    open: false\r\n  })\r\n\r\n  const handleRemoveToken = async e => {\r\n    e.preventDefault();\r\n    const res = await modalResponse();\r\n    if (!res) {\r\n      return;\r\n    }\r\n    removeTokenStore.set({ disabled: true, value: \"Wait...\" });\r\n    await store.removeToken();\r\n    removeTokenStore.set({ disabled: false, value: \"Remove site\" });\r\n  };\r\n\r\n\r\n\r\n  const closeModal = e => {\r\n    e.preventDefault();\r\n    document.body.dispatchEvent(new CustomEvent('webflow-modal-remove-token', {detail: false}));\r\n  }\r\n\r\n  const acceptModal = e => {\r\n    e.preventDefault();\r\n    document.body.dispatchEvent(new CustomEvent('webflow-modal-remove-token', {detail: true}));\r\n  }\r\n\r\n  const modalResponse = () => {\r\n    return new Promise( res => {\r\n      modalStore.set({open: true});\r\n      document.body.addEventListener('webflow-modal-remove-token', e => {\r\n        modalStore.set({open: false})\r\n        res(e.detail);\r\n      }, {once: true});\r\n    })\r\n  }\r\n\r\n</script>\r\n\r\n<style>\r\n  .modal-wrapper {\r\n    position: fixed;\r\n    top: 0;\r\n    left: 0;\r\n    background-color: rgba(0, 0, 0, 0.7);\r\n    z-index: 99999999;\r\n    width: 100vw;\r\n    height: 100vh;\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n  }\r\n  .modal {\r\n    background-color: white;\r\n    height: 30vh;\r\n    width: 30vw;\r\n    display: grid;\r\n    grid-template-rows: auto 1fr;\r\n  }\r\n  .modal-header {\r\n    display: flex;\r\n    padding: 20px 15px;\r\n    justify-content: space-between;\r\n    font-weight: 700;\r\n    font-size: 16px;\r\n    border-bottom: 1px solid #f7f7f7;\r\n  }\r\n  .modal-header a {\r\n    color: black;\r\n    text-decoration: none;\r\n  }\r\n  .modal-content {\r\n    background-color: #f5f5f5;\r\n    display: flex;\r\n    flex-direction: column;\r\n    justify-content: center;\r\n    align-items: center;\r\n  }\r\n  .modal-button {\r\n    display: inline-block;\r\n    padding: 9px 15px;\r\n    color: white;\r\n    border: 0;\r\n    line-height: inherit;\r\n    text-decoration: none;\r\n    cursor: pointer;\r\n    border-radius: 4px;\r\n  }\r\n  .modal-button.red {\r\n    width: auto;\r\n    height: auto;\r\n    padding-right: 28px;\r\n    padding-left: 28px;\r\n    background-color: #FF6382;\r\n    font-weight: 500;\r\n  }\r\n\r\n  .modal-button.red:hover {\r\n    background-color: #FF6382;\r\n  }\r\n\r\n  .modal-button.grey{\r\n    width: auto;\r\n    height: auto;\r\n    padding-right: 28px;\r\n    padding-left: 28px;\r\n    background-color: #d2d4d5;\r\n    font-weight: 500;\r\n  }\r\n\r\n  .modal-button.grey:hover {\r\n    background-color: #d2d4d5;\r\n  }\r\n</style>\r\n\r\n<h4>Remove Website</h4>\r\n<p class=\"description-subtitle\">Disconnect your Webflow project from your WordPress site.</p>\r\n<form on:submit={handleRemoveToken}>\r\n  <Submit\r\n    value={$removeTokenStore.value}\r\n    disabled={$removeTokenStore.disabled}\r\n    variation=\"red\" />\r\n</form>\r\n\r\n{#if $modalStore.open}\r\n<div class=\"modal-wrapper\">\r\n  <div class=\"modal\" transition:fade>\r\n    <div class=\"modal-header\">\r\n      <div>Do you want to remove all the Webflow Pages?</div>\r\n      <a on:click={closeModal}>X</a>\r\n    </div>\r\n    <div class=\"modal-content\">\r\n    <p>Are you sure you want to remove all your Webflow Settings?</p>\r\n        <div class=\"modal-actions\">\r\n          <button class=\"modal-button grey\" on:click={closeModal}>Cancel</button>\r\n          <button class=\"modal-button red\" on:click={acceptModal}>Confirm</button>\r\n        </div>\r\n    </div>\r\n  </div>\r\n</div>\r\n{/if}","<script>\r\n  import { store } from \"../store/wfData\";\r\n  import { writable } from \"svelte/store\";\r\n  import Submit from \"./Submit.svelte\";\r\n\r\n  const invalidateCacheStore = writable({\r\n    disabled: false,\r\n    value: \"Invalidate Cache\"\r\n  });\r\n\r\n  const handleInvalidateCache = async e => {\r\n    e.preventDefault();\r\n    invalidateCacheStore.set({ disabled: true, value: \"Wait...\" });\r\n    await store.invalidateCache();\r\n    invalidateCacheStore.set({ disabled: false, value: \"Invalidate Cache\" });\r\n  };\r\n</script>\r\n\r\n<h4>Invalidate Cache</h4>\r\n<p class=\"description-subtitle\">Deletes your WordPress site's cache, which can be helpful with debugging.</p>\r\n<form on:submit={handleInvalidateCache}>\r\n  <Submit\r\n    value={$invalidateCacheStore.value}\r\n    disabled={$invalidateCacheStore.disabled} variation=\"black\"/>\r\n</form>\r\n","<script>\r\n  import { store } from \"../store/wfData\";\r\n  import { writable } from \"svelte/store\";\r\n  import Submit from \"./Submit.svelte\";\r\n\r\n  const preloadCacheStore = writable({\r\n    disabled: false,\r\n    value: \"Preload Cache\"\r\n  });\r\n\r\n  const handlePreloadCache = async e => {\r\n    e.preventDefault();\r\n    preloadCacheStore.set({ disabled: true, value: \"Wait...\" });\r\n    await store.preloadCache();\r\n    preloadCacheStore.set({ disabled: false, value: \"Preload Cache\" });\r\n  };\r\n</script>\r\n\r\n<h4>Preload static page cache</h4>\r\n<p class=\"description-subtitle\">Preload your static page cache to help pages load faster.</p>\r\n<form on:submit={handlePreloadCache}>\r\n  <Submit\r\n    value={$preloadCacheStore.value}\r\n    disabled={$preloadCacheStore.disabled} variation=\"black\"/>\r\n</form>\r\n","<script>\r\n  import { store } from \"../store/wfData\";\r\n  import { writable } from \"svelte/store\";\r\n  import Submit from \"./Submit.svelte\";\r\n\r\n  const localStore = writable({\r\n    disabled: false,\r\n    value: \"Save\"\r\n  });\r\n\r\n  let val = $store.cacheDuration;\r\n\r\n  const options = [\r\n    {\r\n      value: \"0\",\r\n      name: \"As long as possible\"\r\n    },\r\n    {\r\n      value: \"60\",\r\n      name: \"1 minute\"\r\n    },\r\n    {\r\n      value: 60 * 5 + \"\",\r\n      name: \"5 minutes\"\r\n    },\r\n    {\r\n      value: 60 * 15 + \"\",\r\n      name: \"15 minutes\"\r\n    },\r\n    {\r\n      value: 60 * 60 + \"\",\r\n      name: \"1 hour\"\r\n    },\r\n    {\r\n      value: 60 * 60 * 24 + \"\",\r\n      name: \"1 day\"\r\n    }\r\n  ];\r\n\r\n  const handleSubmit = async e => {\r\n    e.preventDefault();\r\n    localStore.set({ disabled: true, value: \"Wait...\" });\r\n    await store.changeCache(val);\r\n    localStore.set({ disabled: false, value: \"Save\" });\r\n  };\r\n</script>\r\n<style>\r\nform {\r\ndisplay: grid;\r\n    grid-gap: 8px;\r\n    justify-content: center;\r\n    align-items: center;\r\n    grid-template-columns: 1fr 1fr;\r\n}\r\nselect {\r\n  background-color: #f7f8f9;\r\n}\r\n\r\n</style>\r\n<h4>Cache Duration</h4>\r\n<p class=\"description-subtitle\">Define how long your site caches your Webflow pages. Cached pages load faster.</p>\r\n<form on:submit={handleSubmit} >\r\n  <select class=\"field-select\" bind:value={val}>\r\n    {#each options as option}\r\n      <option value={option.value}> {option.name} </option>\r\n    {/each}\r\n  </select>\r\n  <Submit\r\n    value={$localStore.value}\r\n    disabled={$localStore.disabled}\r\n    variation=\"small\"\r\n   />\r\n</form>\r\n","<script>\r\n  import {store} from '../store/wfData';\r\n\r\n</script>\r\n\r\n<style>\r\n  img {\r\n    max-width: 100%;\r\n    height: auto;\r\n  }\r\n  a {box-shadow: none}\r\n</style>\r\n\r\n<div>\r\n  <a href={$store.site.dashboardUrl} target=\"_blank\">\r\n    <img src={$store.site.previewUrl} alt=\"site preview\" />\r\n    <h3>{$store.site.name}</h3>\r\n  </a>\r\n</div>\r\n","<script>\r\n  import { store } from \"../store/wfData\";\r\n  import { writable } from \"svelte/store\";\r\n  import Submit from \"./Submit.svelte\";\r\n  import { fade } from 'svelte/transition';\r\n\r\n  const removeTokenStore = writable({\r\n    disabled: false,\r\n    value: \"Remove site and data\"\r\n  });\r\n\r\n  const modalStore = writable({\r\n    open: false\r\n  })\r\n\r\n  const handleRemoveToken = async e => {\r\n    e.preventDefault();\r\n    const res = await modalResponse();\r\n    if (!res) {\r\n      return;\r\n    }\r\n    removeTokenStore.set({ disabled: true, value: \"Wait...\" });\r\n    await store.removeTokenAndData();\r\n    removeTokenStore.set({ disabled: false, value: \"Remove site and data\" });\r\n  };\r\n\r\n\r\n\r\n  const closeModal = e => {\r\n    e.preventDefault();\r\n    document.body.dispatchEvent(new CustomEvent('webflow-modal-remove-token-data', {detail: false}));\r\n  }\r\n\r\n  const acceptModal = e => {\r\n    e.preventDefault();\r\n    document.body.dispatchEvent(new CustomEvent('webflow-modal-remove-token-data', {detail: true}));\r\n  }\r\n\r\n  const modalResponse = () => {\r\n    return new Promise( res => {\r\n      modalStore.set({open: true});\r\n      document.body.addEventListener('webflow-modal-remove-token-data', e => {\r\n        modalStore.set({open: false})\r\n        res(e.detail);\r\n      }, {once: true});\r\n    })\r\n  }\r\n\r\n</script>\r\n\r\n<style>\r\n  .modal-wrapper {\r\n    position: fixed;\r\n    top: 0;\r\n    left: 0;\r\n    background-color: rgba(0, 0, 0, 0.7);\r\n    z-index: 99999999;\r\n    width: 100vw;\r\n    height: 100vh;\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n  }\r\n  .modal {\r\n    background-color: white;\r\n    height: 30vh;\r\n    width: 30vw;\r\n    display: grid;\r\n    grid-template-rows: auto 1fr;\r\n  }\r\n  .modal-header {\r\n    display: flex;\r\n    padding: 20px 15px;\r\n    justify-content: space-between;\r\n    font-weight: 700;\r\n    font-size: 16px;\r\n    border-bottom: 1px solid #f7f7f7;\r\n  }\r\n  .modal-header a {\r\n    color: black;\r\n    text-decoration: none;\r\n  }\r\n  .modal-content {\r\n    background-color: #f5f5f5;\r\n    display: flex;\r\n    flex-direction: column;\r\n    justify-content: center;\r\n    align-items: center;\r\n  }\r\n  .modal-button {\r\n    display: inline-block;\r\n    padding: 9px 15px;\r\n    color: white;\r\n    border: 0;\r\n    line-height: inherit;\r\n    text-decoration: none;\r\n    cursor: pointer;\r\n    border-radius: 4px;\r\n  }\r\n  .modal-button.red {\r\n    width: auto;\r\n    height: auto;\r\n    padding-right: 28px;\r\n    padding-left: 28px;\r\n    background-color: #FF6382;\r\n    font-weight: 500;\r\n  }\r\n\r\n  .modal-button.red:hover {\r\n    background-color: #FF6382;\r\n  }\r\n\r\n  .modal-button.grey{\r\n    width: auto;\r\n    height: auto;\r\n    padding-right: 28px;\r\n    padding-left: 28px;\r\n    background-color: #d2d4d5;\r\n    font-weight: 500;\r\n  }\r\n\r\n  .modal-button.grey:hover {\r\n    background-color: #d2d4d5;\r\n  }\r\n</style>\r\n\r\n<h4>Remove Website and Data</h4>\r\n<p class=\"description-subtitle\">Disconnect your Webflow project from your WordPress site and remove saved pages settings.</p>\r\n<form on:submit={handleRemoveToken}>\r\n  <Submit\r\n    value={$removeTokenStore.value}\r\n    disabled={$removeTokenStore.disabled}\r\n    variation=\"red\" />\r\n</form>\r\n\r\n{#if $modalStore.open}\r\n<div class=\"modal-wrapper\">\r\n  <div class=\"modal\" transition:fade>\r\n    <div class=\"modal-header\">\r\n      <div>Do you want to remove all the Webflow Pages?</div>\r\n      <a on:click={closeModal}>X</a>\r\n    </div>\r\n    <div class=\"modal-content\">\r\n    <p>Are you sure you want to remove all your Webflow Settings?</p>\r\n        <div class=\"modal-actions\">\r\n          <button class=\"modal-button grey\" on:click={closeModal}>Cancel</button>\r\n          <button class=\"modal-button red\" on:click={acceptModal}>Confirm</button>\r\n        </div>\r\n    </div>\r\n  </div>\r\n</div>\r\n{/if}","<script>\r\n    import {notifications} from '../store/notifications';\r\n    import { fade } from 'svelte/transition';\r\n   \r\n</script>\r\n<style>\r\ndiv {\r\n    position: fixed;\r\n    bottom: 40px;\r\n    left: 55%;\r\n    padding: 8px 100px;\r\n    transform: translateX(-50%);\r\n}\r\np {\r\n    margin: 0;\r\n    color: white;\r\n    font-size: 14px;\r\n    text-align: center;\r\n}\r\n</style>\r\n{#if $notifications.currentNotification}\r\n<div transition:fade style={$notifications.currentNotification.type == \"success\" ? \"background-color: #38D996\" : \"background-color:  #FF6382\"}>\r\n    <p>{$notifications.currentNotification.message}</p>\r\n</div>\r\n{/if}","<script>\r\n\timport Route from './components/Route.svelte';\r\n\timport LoginPage from './pages/Login.svelte';\r\n\timport ConfigurationPage from './pages/Configuration.svelte';\r\n\timport UtilsPage from './pages/Utils.svelte';\r\n\timport Notifications from './components/Notifications.svelte';\r\n\timport {store} from './store/wfData';\r\n\timport Footer from './components/Footer.svelte';\r\n\r\n</script>\r\n<!-- \"Routes\" of the dashboard -->\r\n<Route path=\"/login\" component={LoginPage}></Route>\r\n<Route path=\"/configuration\" component={ConfigurationPage}></Route>\r\n<Route path=\"/settings\" component={UtilsPage}></Route>\r\n\r\n<Notifications></Notifications>\r\n<Footer></Footer>\r\n\r\n<style>\r\n:global(#wpcontent) {\r\n\tpadding-left: 0;\r\n}\r\n:global(#webflow-dashboard-root) {\r\n\theight: 100%;\r\n\tdisplay: flex;\r\n\tmin-height: calc(100vh - 32px - 65px); /* 32 px is the admin bar , 65 px is the padding bottom*/\r\n}\r\n</style>","import App from './App.svelte';\r\n\r\n\r\n\tconst data = window._wfAjaxData;\r\n\tnew App({\r\n\t\ttarget: document.getElementById(\"webflow-dashboard-root\"), // inits app\r\n\t\tdata\r\n\t});\r\n"],"names":["noop","identity","x","assign","tar","src","k","run","fn","blank_object","Object","create","run_all","fns","forEach","is_function","thing","safe_not_equal","a","b","subscribe","component","store","callback","unsub","$$","on_destroy","push","unsubscribe","create_slot","definition","ctx","slot_ctx","get_slot_context","$$scope","get_slot_changes","changed","is_client","window","now","performance","Date","raf","requestAnimationFrame","tasks","Set","stylesheet","running","run_tasks","task","delete","size","append","target","node","appendChild","insert","anchor","insertBefore","detach","parentNode","removeChild","destroy_each","iterations","detaching","i","length","d","element","name","document","createElement","text","data","createTextNode","space","empty","listen","event","handler","options","addEventListener","removeEventListener","attr","attribute","value","removeAttribute","setAttribute","set_data","set_style","key","style","setProperty","select_option","select","option","__value","selected","select_value","selected_option","querySelector","current_component","active","current_rules","create_rule","duration","delay","ease","uid","step","keyframes","p","t","rule","str","hash","charCodeAt","head","sheet","insertRule","cssRules","animation","delete_rule","split","filter","anim","indexOf","join","deleteRule","set_current_component","dirty_components","resolved_promise","Promise","resolve","update_scheduled","binding_callbacks","render_callbacks","flush_callbacks","add_render_callback","flush","seen_callbacks","shift","update","pop","has","add","fragment","dirty","before_render","after_render","promise","outros","dispatch","direction","kind","dispatchEvent","type","detail","e","createEvent","initCustomEvent","custom_event","group_outros","remaining","callbacks","check_outros","on_outro","create_bidirectional_transition","params","intro","config","running_program","pending_program","animation_name","clear_animation","init","program","Math","abs","start","end","group","go","easing","tick","tick$$1","css","fulfil","loop","now$$1","[object Object]","then","mount_component","on_mount","m","new_on_destroy","map","make_dirty","instance","create_fragment","not_equal$$1","prop_names","parent_component","props","not_equal","bound","context","Map","ready","hydrate","l","Array","from","childNodes","c","SvelteComponent","this","$destroy","index","splice","writable","stop","subscribers","set","new_value","s","invalidate","subscriber","derived","stores","initial_value","single","isArray","stores_array","auto","inited","values","pending","cleanup","sync","result","unsubscribers","router","path","goTo","createRouterStore","isCurrentPath","$router","$isActive","isActive","ajaxCall","action","nonce","nonceField","method","credentials","url","TypeError","ajaxurl","formData","FormData","fetch","body","notifications","currentNotification","addNotification","message","setTimeout","createNotificationStore","hasToken","pages","collections","site","staticRules","dynamicRules","error","cacheDuration","_wfAjaxData","dashboardUrl","shortName","undefined","saveToken","async","check","token","json","version","saveTokenCall","saveTokenRes","success","call","res","code","removeToken","location","reload","removeTokenAndData","addStaticRule","removeStaticRule","addDynamicRule","removeDynamicRule","saveStaticRules","rules","JSON","stringify","n","saveDynamicRules","invalidateCache","changeCache","preloadCache","createWfDataStore","variation","disabled","forHtml","$loginStore","handleSubmit","loginStore","preventDefault","handleClick","page","substr","replace","$store","staticRule","handleInput","click_handler","canAdd","activeElement","blur","isAdd","getAttribute","encodeURI","decodeURI","match","setCustomValidity","dynamicRule","collection","slug","fade","o","getComputedStyle","opacity","closeModal","acceptModal","$removeTokenStore","$modalStore","handleRemoveToken","open","removeTokenStore","modalStore","modalResponse","once","CustomEvent","$invalidateCacheStore","handleInvalidateCache","invalidateCacheStore","$preloadCacheStore","handlePreloadCache","preloadCacheStore","$localStore","val","localStore","previewUrl","$notifications","LoginPage","ConfigurationPage","UtilsPage","getElementById"],"mappings":"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"}
  • webflow-pages/trunk/externals/dashboard/src/components/Logo.svelte

    r2494376 r3153929  
    55}
    66img {
    7     max-width: 150px;
     7    max-width: 200px;
    88    margin: auto;
    99}
     
    1111<div>
    1212<img
    13   src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIzLjAuNCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxMzkzLjEgMjIxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMzkzLjEgMjIxOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6IzQzNTNGRjt9Cgkuc3Qxe2ZpbGw6IzMzMzMzMzt9Cjwvc3R5bGU+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNzIsODguOWMwLTE0LjUtMTQuMS0yOS45LTM4LjUtMjkuOWMtMjcuNCwwLTU3LjUsMjAuMS02Mi4xLDYwLjJjLTQuNyw0MC41LDIwLjUsNTguNSw0NS45LDU4LjUKCXMzOC43LTkuOSw1Mi4zLTIzLjFjLTExLjctMTQuNy0yNi44LTcuOS0yOS43LTYuNGMtMy4yLDEuNi03LjMsMy44LTE1LjcsMy44Yy05LjgsMC0xOS44LTQuNC0xOS44LTIyLjcKCUMyNjcuMiwxMjMuMSwyNzIsMTAzLjQsMjcyLDg4Ljl6IE0yNDAuOSw5MS4zYy0wLjQsNC41LTIuMiwxMi4yLTM0LDE2LjVjNi43LTIzLjgsMTkuNS0yNS42LDI1LjQtMjUuNgoJQzIzNy44LDgyLjIsMjQxLjMsODYuNSwyNDAuOSw5MS4zeiBNMTM0LjUsOTUuMmMwLDAtMTMuNSw0Mi40LTE0LjYsNDUuOWMtMC40LTMuNi0xMC4zLTc5LjctMTAuMy03OS43Yy0yMywwLTM1LjMsMTYuNC00MS44LDMzLjcKCWMwLDAtMTYuNCw0Mi41LTE3LjgsNDYuMWMtMC4xLTMuMy0yLjUtNDUuNi0yLjUtNDUuNkM0Ni4xLDc0LjQsMjYuNyw2MS41LDExLDYxLjVsMTksMTE1LjNjMjQuMS0wLjEsMzcuMS0xNi40LDQzLjktMzMuNwoJYzAsMCwxNC41LTM3LjUsMTUuMS0zOS4yYzAuMSwxLjYsMTAuNCw3Mi45LDEwLjQsNzIuOWMyNC4yLDAsMzcuMi0xNS4zLDQ0LjItMzJsMzMuOS04My4zQzE1My42LDYxLjUsMTQxLDc3LjgsMTM0LjUsOTUuMnoKCSBNMzYwLjgsNTguOGMtMTQuOSwwLTI2LjMsOC4xLTM1LjksMjB2LTAuMWw4LjYtNjkuM2MtMTkuOCwwLTM1LjksMTcuMi0zOSw0Mi44bC0xNSwxMjMuN2MxMS40LDAsMjMuNS0zLjMsMzAtMTEuNwoJYzUuOCw3LjUsMTQuNSwxMy41LDI3LjQsMTMuNWMzMy40LDAsNTYuMy0zOC44LDU2LjMtNzUuMkMzOTMsNjkuMywzNzYuOSw1OC44LDM2MC44LDU4Ljh6IE0zNTcuNywxMTguMwoJYy0zLjUsMjAuMy0xNC44LDM0LjEtMjUuNywzNC4xYy0xMSwwLTE1LjctNC45LTE1LjctNC45YzIuMS0xNy44LDMuNC0yOC43LDcuNC0zOC4xUzMzNy4yLDg1LDM0Ny4xLDg1CglDMzU2LjgsODUsMzYxLjIsOTcuOSwzNTcuNywxMTguM3ogTTQ3Ni42LDYxLjVoLTIzLjNsMC4xLTEuMmMxLjYtMTUuMiw1LjItMjMuMiwxNy4xLTI0LjVjOC4xLTAuOCwxMS43LTUsMTIuNi05LjYKCWMwLjctMy42LDIuOS0xNi4xLDIuOS0xNi4xYy00Ni44LTAuMy02MS41LDE5LjktNjUuMyw1MC43bC0wLjEsMC43aC0wLjVjLTcuNiwwLTE2LDguNi0xNy40LDE5LjVsLTAuNSw0aDE1LjZsLTEzLjEsMTA4LjJsLTQsMTkuNAoJYzAuNSwwLDEuMSwwLjEsMS42LDAuMWMyMS45LTAuOCwzNS45LTE4LjEsMzktNDMuMkw0NTEuNSw4NWg3LjNjNy4yLDAsMTUuNi03LjIsMTcuMS0xOS4yTDQ3Ni42LDYxLjV6IE01OTcuOCw1OS41CgljLTI2LjksMC01Mi4zLDE5LjgtNjAuMSw1MC45czQsNjcuOSw0My42LDY3LjljMzkuNSwwLDYyLjMtMzguMyw2Mi4zLTcwLjJDNjQzLjYsNzYuNCw2MjIuMSw1OS41LDU5Ny44LDU5LjV6IE02MDguNywxMTcuMwoJYy0xLjQsMTQuMS03LjYsMzUuNS0yNC42LDM1LjVjLTE3LjEsMC0xNC43LTI1LTEzLTM2LjljMS44LTEyLjcsOC45LTMwLjgsMjQuMi0zMC44QzYwOSw4NS4xLDYxMC4zLDEwMS40LDYwOC43LDExNy4zeiBNNzc2LjUsOTUuMgoJYzAsMC0xMy41LDQyLjQtMTQuNiw0NS45Yy0wLjQtMy42LTEwLjMtNzkuNy0xMC4zLTc5LjdjLTIzLDAtMzUuMywxNi40LTQxLjgsMzMuN2MwLDAtMTYuNCw0Mi41LTE3LjgsNDYuMQoJYy0wLjEtMy4zLTIuNS00NS42LTIuNS00NS42Yy0xLjQtMjEuMi0yMC44LTM0LjEtMzYuNS0zNC4xbDE4LjksMTE1LjNjMjQuMS0wLjEsMzcuMS0xNi40LDQzLjktMzMuN2MwLDAsMTQuNS0zNy41LDE1LTM5LjIKCWMwLjEsMS42LDEwLjQsNzIuOSwxMC40LDcyLjljMjQuMiwwLDM3LjItMTUuMyw0NC4yLTMybDMzLjktODMuM0M3OTUuNSw2MS41LDc4Mi45LDc3LjgsNzc2LjUsOTUuMnogTTQ5OC42LDEwLjFMNDc5LDE2OC4ybDAsMAoJbC00LDE5LjVjMC41LDAsMS4xLDAuMSwxLjYsMC4xbDAsMGMyMS4xLTAuMywzNi4xLTE4LjgsMzguOS00Mi4xTDUyNi44LDU1QzUzMC4yLDI3LjMsNTEzLjcsMTAuMSw0OTguNiwxMC4xeiIvPgo8Zz4KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik05NTIuOCwxMDhjLTcuNyw2LjQtMTguNyw5LjYtMzMsOS42aC0yNy40VjE2NUg4NjVWMzMuM2g1Ni41YzEzLDAsMjMuNCwzLjQsMzEuMiwxMC4yCgkJYzcuOCw2LjgsMTEuNiwxNy4zLDExLjYsMzEuNUM5NjQuMyw5MC42LDk2MC41LDEwMS42LDk1Mi44LDEwOHogTTkzMS43LDYwLjZjLTMuNS0yLjktOC40LTQuNC0xNC42LTQuNGgtMjQuOFY5NWgyNC44CgkJYzYuMywwLDExLjItMS42LDE0LjYtNC43YzMuNS0zLjIsNS4yLTguMiw1LjItMTVDOTM3LDY4LjQsOTM1LjIsNjMuNSw5MzEuNyw2MC42eiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTEwMjIuOSwxMDUuOGM0LjctMC42LDguMS0xLjMsMTAuMi0yLjJjMy43LTEuNSw1LjUtNCw1LjUtNy4yYzAtNC0xLjQtNi43LTQuMi04LjNjLTIuOC0xLjUtNi45LTIuMy0xMi40LTIuMwoJCWMtNi4xLDAtMTAuNCwxLjUtMTIuOSw0LjVjLTEuOCwyLjItMyw1LjItMy42LDguOWgtMjQuNmMwLjUtOC41LDIuOS0xNS41LDcuMi0yMWM2LjgtOC42LDE4LjQtMTIuOSwzNC44LTEyLjkKCQljMTAuNywwLDIwLjIsMi4xLDI4LjUsNi4zYzguMyw0LjIsMTIuNSwxMi4yLDEyLjUsMjMuOXY0NC43YzAsMy4xLDAuMSw2LjgsMC4yLDExLjNjMC4yLDMuMywwLjcsNS42LDEuNSw2LjgKCQljMC44LDEuMiwyLjEsMi4yLDMuOCwyLjl2My44aC0yNy43Yy0wLjgtMi0xLjMtMy44LTEuNi01LjVjLTAuMy0xLjctMC41LTMuNy0wLjctNS45Yy0zLjUsMy44LTcuNiw3LjEtMTIuMiw5LjcKCQljLTUuNSwzLjItMTEuNyw0LjctMTguNyw0LjdjLTguOSwwLTE2LjItMi41LTIyLTcuNWMtNS44LTUtOC43LTEyLjItOC43LTIxLjRjMC0xMiw0LjYtMjAuNiwxMy45LTI2YzUuMS0yLjksMTIuNi01LDIyLjUtNi4zCgkJTDEwMjIuOSwxMDUuOHogTTEwMzguNSwxMTcuN2MtMS42LDEtMy4zLDEuOC00LjksMi41Yy0xLjcsMC42LTMuOSwxLjItNi44LDEuN2wtNS44LDEuMWMtNS40LDEtOS4zLDIuMS0xMS43LDMuNQoJCWMtNCwyLjMtNiw1LjktNiwxMC44YzAsNC4zLDEuMiw3LjUsMy43LDkuNGMyLjQsMS45LDUuNCwyLjksOC45LDIuOWM1LjYsMCwxMC43LTEuNiwxNS40LTQuOHM3LjEtOS4xLDcuMy0xNy42VjExNy43eiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTExMzQuMiw2Ny41YzYuMiwyLjYsMTEuMiw3LjMsMTUsMTQuMXYtMTRoMjQuOFYxNjBjMCwxMi42LTIuMSwyMi02LjMsMjguNGMtNy4zLDExLTIxLjIsMTYuNC00MS44LDE2LjQKCQljLTEyLjQsMC0yMi42LTIuNC0zMC41LTcuM2MtNy45LTQuOS0xMi4yLTEyLjItMTMtMjEuOWgyNy43YzAuNywzLDEuOSw1LjEsMy41LDYuNGMyLjcsMi4zLDcuNCwzLjUsMTMuOCwzLjUKCQljOS4yLDAsMTUuMy0zLjEsMTguNC05LjJjMi0zLjksMy0xMC41LDMtMTkuOHYtNi4zYy0yLjQsNC4yLTUuMSw3LjMtNy45LDkuNGMtNS4xLDMuOS0xMS42LDUuOC0xOS43LDUuOGMtMTIuNSwwLTIyLjUtNC40LTMwLTEzLjIKCQljLTcuNS04LjgtMTEuMi0yMC43LTExLjItMzUuN2MwLTE0LjUsMy42LTI2LjYsMTAuOC0zNi41YzcuMi05LjksMTcuNC0xNC44LDMwLjYtMTQuOEMxMTI2LjQsNjUuMywxMTMwLjYsNjYuMSwxMTM0LjIsNjcuNXoKCQkgTTExNDIuOSwxMzcuNGM0LjEtNC41LDYuMS0xMS43LDYuMS0yMS41YzAtOS4yLTEuOS0xNi4zLTUuOC0yMS4xYy0zLjktNC44LTkuMS03LjItMTUuNi03LjJjLTguOSwwLTE1LDQuMi0xOC40LDEyLjYKCQljLTEuOCw0LjUtMi43LDEwLTIuNywxNi41YzAsNS43LDAuOSwxMC43LDIuOCwxNS4xYzMuNCw4LjIsOS42LDEyLjMsMTguNSwxMi4zQzExMzMuOCwxNDQuMSwxMTM4LjgsMTQxLjksMTE0Mi45LDEzNy40eiIvPgoJPHBhdGggY2xhc3M9InN0MSIgZD0iTTEyNjEuMyw2OS42YzYuOCwzLDEyLjQsNy44LDE2LjgsMTQuNGM0LDUuOCw2LjYsMTIuNSw3LjgsMjAuMWMwLjcsNC41LDEsMTAuOSwwLjgsMTkuM2gtNzAuOQoJCWMwLjQsOS44LDMuOCwxNi42LDEwLjIsMjAuNWMzLjksMi40LDguNiwzLjcsMTQsMy43YzUuOCwwLDEwLjUtMS41LDE0LjEtNC41YzItMS42LDMuNy0zLjgsNS4yLTYuN2gyNmMtMC43LDUuOC0zLjgsMTEuNi05LjQsMTcuNgoJCWMtOC43LDkuNS0yMC45LDE0LjItMzYuNiwxNC4yYy0xMywwLTI0LjQtNC0zNC4zLTEyYy05LjktOC0xNC45LTIxLTE0LjktMzljMC0xNi45LDQuNS0yOS44LDEzLjQtMzguOHMyMC41LTEzLjUsMzQuOC0xMy41CgkJQzEyNDYuOSw2NSwxMjU0LjUsNjYuNiwxMjYxLjMsNjkuNnogTTEyMjMuMiw5MS42Yy0zLjYsMy43LTUuOSw4LjctNi44LDE1LjFoNDMuOWMtMC41LTYuOC0yLjctMTEuOS02LjgtMTUuNAoJCWMtNC4xLTMuNS05LjEtNS4yLTE1LjEtNS4yQzEyMzEuOSw4NiwxMjI2LjgsODcuOSwxMjIzLjIsOTEuNnoiLz4KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xMzE5LjMsMTMzLjljMC41LDQuNSwxLjcsNy43LDMuNSw5LjZjMy4yLDMuNCw5LDUuMSwxNy42LDUuMWM1LDAsOS0wLjcsMTItMi4yYzMtMS41LDQuNC0zLjcsNC40LTYuNwoJCWMwLTIuOS0xLjItNS0zLjYtNi41Yy0yLjQtMS41LTExLjMtNC0yNi42LTcuN2MtMTEuMS0yLjctMTguOS02LjItMjMuNC0xMC4zYy00LjUtNC02LjgtOS45LTYuOC0xNy41YzAtOSwzLjUtMTYuNywxMC42LTIzLjIKCQljNy4xLTYuNSwxNy05LjcsMjkuOS05LjdjMTIuMiwwLDIyLjEsMi40LDI5LjgsNy4zYzcuNyw0LjksMTIuMSwxMy4yLDEzLjIsMjUuMWgtMjUuNWMtMC40LTMuMy0xLjMtNS45LTIuOC03LjgKCQljLTIuOC0zLjUtNy42LTUuMi0xNC4zLTUuMmMtNS42LDAtOS41LDAuOS0xMS45LDIuNmMtMi40LDEuNy0zLjUsMy44LTMuNSw2LjFjMCwyLjksMS4zLDUsMy44LDYuM2MyLjUsMS40LDExLjQsMy43LDI2LjYsNy4xCgkJYzEwLjEsMi40LDE3LjcsNiwyMi44LDEwLjhjNSw0LjksNy41LDExLDcuNSwxOC4zYzAsOS42LTMuNiwxNy41LTEwLjgsMjMuNmMtNy4yLDYuMS0xOC4zLDkuMi0zMy4zLDkuMmMtMTUuMywwLTI2LjctMy4yLTM0LTkuNwoJCWMtNy4zLTYuNS0xMS0xNC43LTExLTI0LjdIMTMxOS4zeiIvPgo8L2c+Cjwvc3ZnPgo=
     13  src="data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgdmlld0JveD0iMCAwIDE2NzUuMiAyMjEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDE2NzUuMiAyMjE7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQoJLnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiMxNDZFRjU7fQ0KCS5zdDF7ZmlsbDojMDgwODA4O30NCgkuc3Qye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6IzA4MDgwODt9DQoJLnN0M3tmaWxsOiMxNDZFRjU7fQ0KPC9zdHlsZT4NCjxnPg0KCTxnPg0KCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMzA1LjEsMy40bC05My41LDE4Mi44aC04Ny44bDM5LjEtNzUuN2gtMS44Yy0zMi4zLDQxLjktODAuNCw2OS41LTE0OS4xLDc1Ljd2LTc0LjdjMCwwLDQzLjktMi42LDY5LjctMjkuNw0KCQkJSDEyLjFWMy40aDc4LjN2NjQuNGwxLjgsMGwzMi02NC40aDU5LjJ2NjRsMS44LDBsMzMuMi02NEgzMDUuMXoiLz4NCgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTgxNC45LDE2NmgyNS4yVjIxLjFoLTI1LjJWMTY2eiIvPg0KCQk8cGF0aCBjbGFzcz0ic3QyIiBkPSJNNjc1LjksMTY0LjVjNS41LDIuMywxMS4xLDMuNCwxNi43LDMuNGM5LjQsMCwxNy43LTIuMywyNS4xLTYuOGM3LjQtNC42LDEzLjEtMTAuOCwxNy4yLTE4LjkNCgkJCWM0LjEtOC4xLDYuMS0xNy4yLDYuMS0yNy40cy0yLjEtMTkuNC02LjMtMjcuNGMtNC4yLTguMS0xMC0xNC4zLTE3LjUtMTguOGMtNy41LTQuNS0xNS45LTYuNy0yNS40LTYuN2MtNiwwLTExLjgsMS4yLTE3LjQsMy41DQoJCQljLTUuNSwyLjMtMTAuMiw1LjctMTMuOSwxMGMtMC4zLDAuMy0wLjYsMC43LTAuOCwxVjIxLjJoLTI1LjNWMTY2aDI1LjFsLTAuMS0xMy41YzAuNywwLjgsMS4zLDEuNiwyLjEsMi4zDQoJCQlDNjY1LjYsMTU4LjksNjcwLjQsMTYyLjEsNjc1LjksMTY0LjV6IE03MDEuNywxNDEuMWMtNC4xLDIuNS04LjgsMy44LTE0LjEsMy44Yy01LjIsMC0xMC0xLjMtMTQuNC0zLjkNCgkJCWMtNC40LTIuNi03LjktNi4zLTEwLjQtMTAuOGMtMi41LTQuNi0zLjgtOS43LTMuOC0xNS41Yy0wLjEtNS44LDEuMi0xMSwzLjctMTUuNWMyLjYtNC42LDYuMS04LjIsMTAuNC0xMC43DQoJCQljNC40LTIuNiw5LjItMy45LDE0LjUtMy44YzUuMy0wLjEsMTAsMS4yLDE0LjEsMy43YzQuMiwyLjUsNy40LDYsOS42LDEwLjZjMi4zLDQuNiwzLjQsOS44LDMuNCwxNS43YzAsNS45LTEuMSwxMS4yLTMuNCwxNS43DQoJCQlDNzA5LjEsMTM0LjksNzA1LjksMTM4LjUsNzAxLjcsMTQxLjF6Ii8+DQoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0zNDEuNywyOS45aDI4LjhsMjUuOCw5NC4ybDI3LjQtOTQuMmgyNGwyOS44LDkyLjNsMjQuOC05Mi4zaDI2LjRsLTM5LDEzNmgtMjQuOWwtMzAuMy05MC4yTDQwNi44LDE2NmgtMjUuMQ0KCQkJTDM0MS43LDI5Ljl6Ii8+DQoJCTxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik01NzEuMywxNjguNGMtMTAsMC4xLTE5LjEtMi4yLTI3LjItNi43Yy04LTQuNi0xNC4zLTEwLjktMTguOS0xOC45Yy00LjYtOC4xLTYuOC0xNy4zLTYuOC0yNy42DQoJCQljMC0xMCwyLjMtMTkuMSw3LTI3LjNjNC43LTguMSwxMS0xNC41LDE5LTE5YzgtNC42LDE2LjktNi44LDI2LjgtNi44YzExLjEsMCwyMC44LDIuNSwyOS4xLDcuNGM4LjQsNC45LDE0LjYsMTEuOSwxOC44LDIxDQoJCQljNC4yLDksNS43LDE5LjMsNC41LDMxaC03OS4yYzAuMiw0LjYsMS40LDguOSwzLjUsMTIuN2MyLjMsNC4yLDUuNiw3LjUsOS44LDkuOGM0LjIsMi4zLDguOSwzLjUsMTQsMy41YzMuOS0wLjEsNy42LTAuNywxMS0yDQoJCQljMy40LTEuNCw2LjMtMy4yLDguNi01LjVjMi40LTIuMyw0LjEtNC45LDUuMS03LjhoMjYuNGMtMS42LDcuMS00LjgsMTMuNC05LjYsMTguOWMtNC44LDUuNS0xMC44LDkuOC0xOC4xLDEyLjgNCgkJCUM1ODcuOSwxNjYuOSw1ODAsMTY4LjQsNTcxLjMsMTY4LjR6IE01NDgsOTUuOWMtMS41LDIuNi0yLjUsNS4zLTMuMSw4LjNoNTIuNWMtMC40LTMuOC0xLjUtNy4yLTMuNS0xMC4zDQoJCQljLTIuMi0zLjYtNS4yLTYuNC05LjEtOC40Yy0zLjgtMi04LjEtMy0xMi45LTNjLTUuMSwwLTkuOCwxLjItMTQsMy41QzU1My44LDg4LjQsNTUwLjUsOTEuNiw1NDgsOTUuOXoiLz4NCgkJPHBhdGggY2xhc3M9InN0MSIgZD0iTTc1OS42LDY0LjFjMC04LjMsMS45LTE1LjYsNS42LTIyYzMuOC02LjUsOS0xMS41LDE1LjgtMTUuMWM2LjgtMy42LDE0LjgtNS41LDIzLjktNS42djIyLjUNCgkJCWMtNC4zLDAuMS03LjksMS0xMC45LDIuN2MtMywxLjctNS4yLDQuMS02LjgsNy4zYy0xLjUsMi45LTIuMyw2LjQtMi40LDEwLjNoMTkuNnYyMS4zaC0xOS42VjE2NmgtMjUuMlY4NS41aC0xNi4zVjY0LjFINzU5LjZ6Ii8+DQoJCTxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik05MDQuMywxNjguMmMtMTAuMywwLTE5LjUtMi4yLTI3LjYtNi43Yy04LjEtNC42LTE0LjQtMTAuOC0xOS0xOC45Yy00LjYtOC4xLTYuOC0xNy4yLTYuOC0yNy40DQoJCQljMC0xMC4zLDIuMy0xOS41LDYuOC0yNy41YzQuNi04LjEsMTEtMTQuNCwxOS0xOC45YzguMS00LjUsMTcuMy02LjcsMjcuNi02LjdjMTAuNCwwLDE5LjYsMi4yLDI3LjcsNi43DQoJCQljOC4yLDQuNSwxNC42LDEwLjgsMTkuMSwxOC45YzQuNiw4LjEsNi45LDE3LjMsNi45LDI3LjZjLTAuMSwxMC4yLTIuNCwxOS40LTYuOSwyNy40Yy00LjUsOC0xMC44LDE0LjMtMTksMTguOQ0KCQkJQzkyMy45LDE2NS45LDkxNC43LDE2OC4yLDkwNC4zLDE2OC4yeiBNOTA0LjMsMTQ1YzUuNCwwLDEwLjItMS4yLDE0LjQtMy43YzQuMi0yLjUsNy40LTYsOS43LTEwLjVjMi4zLTQuNiwzLjQtOS44LDMuNC0xNS42DQoJCQljMC01LjktMS4xLTExLjItMy40LTE1LjdjLTIuMy00LjYtNS41LTguMS05LjctMTAuNWMtNC4yLTIuNS05LTMuOC0xNC40LTMuOGMtNS40LDAtMTAuMSwxLjMtMTQuMywzLjhjLTQuMSwyLjUtNy4zLDYtOS42LDEwLjUNCgkJCWMtMi4zLDQuNi0zLjQsOS44LTMuMywxNS43YzAsNS45LDEuMSwxMS4xLDMuNCwxNS42YzIuMyw0LjUsNS41LDgsOS42LDEwLjVDODk0LjIsMTQzLjcsODk5LDE0NSw5MDQuMywxNDV6Ii8+DQoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik05ODUuNCw2NC4xaC0yOC4xTDk4Ny43LDE2NmgyNC42bDIwLTY1bDIxLjYsNjVoMjQuMmwzMC41LTEwMS44aC0yNS40bC0xNy4zLDYzLjRsLTE5LjEtNjMuNGgtMjQuNmwtMTksNjQuOA0KCQkJTDk4NS40LDY0LjF6Ii8+DQoJPC9nPg0KCTxnPg0KCQk8cGF0aCBjbGFzcz0ic3QzIiBkPSJNMTE0NC43LDE2Ny42VjMwLjNoNDljMTMuOCwwLDI1LDQuMSwzMy43LDEyLjNjOC42LDguMiwxMywxOC44LDEzLDMxLjdjMCwxMy4xLTQuMywyMy43LTEzLDMyDQoJCQljLTguNiw4LjMtMTkuOCwxMi40LTMzLjUsMTIuNGgtMjcuMnY0OC45SDExNDQuN3ogTTExNjYuNiw5OWgyNS4yYzcuNiwwLDEzLjctMi4zLDE4LjQtNi44YzQuNy00LjUsNy0xMC40LDctMTcuNg0KCQkJYzAuMS03LjItMi4zLTEzLjEtNy0xNy41Yy00LjctNC41LTEwLjktNi43LTE4LjYtNi43aC0yNVY5OXoiLz4NCgkJPHBhdGggY2xhc3M9InN0MyIgZD0iTTEyOTMuMiwxNjkuN2MtMTQuNiwwLTI2LjUtNS0zNS44LTE1LjFjLTkuMy0xMC0xNC0yMi45LTEzLjktMzguNWMwLTEwLjMsMi4xLTE5LjUsNi40LTI3LjYNCgkJCWM0LjMtOC4xLDEwLjItMTQuNSwxNy44LTE5YzcuNi00LjUsMTYuMi02LjgsMjUuOS02LjhjNi44LTAuMSwxMy4zLDEuMywxOS41LDQuMXMxMS4xLDYuNiwxNC45LDExLjRWNjVoMjEuMnYxMDIuNmgtMjEuMQ0KCQkJbDAuMS0xNC4yYy00LjIsNS05LjUsOS0xNS44LDExLjlDMTMwNi4xLDE2OC4yLDEyOTkuNywxNjkuNywxMjkzLjIsMTY5Ljd6IE0xMjczLjksOTEuMWMtNS42LDYuNC04LjQsMTQuNy04LjQsMjUNCgkJCWMwLDEwLjMsMi44LDE4LjcsOC40LDI1YzUuNiw2LjQsMTMsOS42LDIyLjIsOS42YzkuMSwwLDE2LjktMy4yLDIzLjMtOS43YzYuNC02LjUsOS42LTE0LjgsOS43LTI0LjljMC0xMC4xLTMuMi0xOC40LTkuNi0yNC45DQoJCQljLTYuNC02LjUtMTQuMi05LjctMjMuNC05LjdDMTI4Ni45LDgxLjUsMTI3OS41LDg0LjcsMTI3My45LDkxLjF6Ii8+DQoJCTxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik0xNDE4LjcsMjEyLjFjLTEzLjIsMC0yNC41LTMuMy0zNC05LjhjLTkuNS02LjUtMTUuMS0xNC45LTE2LjgtMjVoMjMuOGMxLjcsNS4xLDUuMSw5LjEsMTAsMTIuMQ0KCQkJYzQuOSwzLDEwLjgsNC40LDE3LjYsNC40YzguMSwwLDE0LjUtMi4xLDE5LjEtNi40YzQuNi00LjMsNi45LTEwLjMsNi44LTE4LjF2LTE1LjZjLTQuMiw1LTkuNSw5LTE1LjcsMTEuOA0KCQkJYy02LjIsMi44LTEyLjgsNC4yLTE5LjksNC4yYy05LjQsMC0xNy44LTIuMy0yNS4yLTYuOWMtNy40LTQuNi0xMy4yLTEwLjktMTcuMy0xOS4xYy00LjEtOC4yLTYuMi0xNy40LTYuMi0yNy44DQoJCQljMC0xMC4yLDIuMi0xOS40LDYuNi0yNy42YzQuNC04LjIsMTAuMy0xNC41LDE3LjgtMTguOWM3LjUtNC40LDE1LjgtNi43LDI0LjktNi43YzctMC4xLDEzLjUsMS4zLDE5LjUsNC4yDQoJCQljNiwyLjgsMTEuMSw3LDE1LjMsMTIuNFY2NWgyMXYxMDQuMWMwLDEzLjMtNC4yLDIzLjgtMTIuNywzMS41QzE0NDQuOSwyMDguMywxNDMzLjMsMjEyLjEsMTQxOC43LDIxMi4xeiBNMTM4MywxMTYuMQ0KCQkJYzAsOS44LDMsMTgsOC45LDI0LjhjNS45LDYuNywxMy4xLDEwLjEsMjEuNiwxMC4xYzguOCwwLDE2LjUtMy40LDIyLjktMTAuMmM2LjQtNi44LDkuNy0xNSw5LjctMjQuN3MtMy4yLTE3LjktOS42LTI0LjcNCgkJCWMtNi40LTYuNy0xNC0xMC4xLTIyLjctMTAuMWMtOC42LDAtMTUuOSwzLjMtMjEuOSwxMEMxMzg2LDk4LjEsMTM4MywxMDYuMywxMzgzLDExNi4xeiIvPg0KCQk8cGF0aCBjbGFzcz0ic3QzIiBkPSJNMTUzMS4yLDE3MC4yYy0xMC4xLDAtMTkuMy0yLjItMjcuMy02LjdjLTguMS00LjUtMTQuNC0xMC44LTE5LTE5cy02LjktMTcuNS02LjktMjhjMC03LjUsMS40LTE0LjYsNC4yLTIxLjMNCgkJCWMyLjgtNi43LDYuNi0xMi4zLDExLjMtMTcuMWM0LjctNC43LDEwLjQtOC41LDE2LjktMTEuMmM2LjUtMi43LDEzLjUtNC4xLDIwLjgtNC4xYzE2LjYsMC4xLDI5LjksNS42LDM5LjgsMTYuNg0KCQkJYzkuOSwxMSwxNCwyNS4yLDEyLjQsNDIuNUgxNTAwYzAuNCw4LjgsMy42LDE2LDkuNSwyMS42YzUuOSw1LjYsMTMuMiw4LjQsMjEuOCw4LjNjNy0wLjEsMTMuMS0xLjgsMTguMy01LjENCgkJCWM1LjItMy4zLDguNy03LjcsMTAuNS0xMy4xaDIyLjNjLTIuNiwxMC45LTguNSwxOS44LTE3LjgsMjYuNEMxNTU1LjQsMTY2LjgsMTU0NC4yLDE3MC4yLDE1MzEuMiwxNzAuMnogTTE1MDAuNiwxMDYuMmg2MC41DQoJCQljLTAuNy03LjUtMy45LTEzLjUtOS4zLTE4LjJjLTUuNS00LjctMTIuMi03LTIwLjItNy4xYy03LjcsMC0xNC40LDIuMy0yMC4yLDdDMTUwNS42LDkyLjUsMTUwMiw5OC42LDE1MDAuNiwxMDYuMnoiLz4NCgkJPHBhdGggY2xhc3M9InN0MyIgZD0iTTE2NDYuMSw5NS44Yy0wLjctNC43LTIuNi04LjUtNS43LTExLjRjLTMuMS0yLjktNi44LTQuNC0xMS4xLTQuM2MtMy43LDAuMS02LjgsMS4zLTkuMywzLjcNCgkJCWMtMi41LDIuNC0zLjcsNS4zLTMuNyw4LjhjMCw1LjcsMy44LDkuNiwxMS41LDExLjlsMTQuMSw0YzE3LjQsNC45LDI2LjEsMTUsMjUuOSwzMC4yYy0wLjEsOC44LTMuNSwxNi4xLTEwLjIsMjEuOQ0KCQkJYy02LjcsNS44LTE1LjIsOC42LTI1LjQsOC42Yy0xMS40LTAuMS0yMC45LTMuMS0yOC4zLTkuMWMtNy40LTYtMTEuNi0xNC0xMi43LTIzLjloMjEuMmMwLjksNC44LDMuMSw4LjcsNi42LDExLjYNCgkJCXM3LjksNC40LDEzLjEsNC4zYzQuNC0wLjEsNy45LTEuMSwxMC41LTMuMmMyLjctMi4xLDQtNC44LDMuOS04LjJjLTAuMS02LjMtMy44LTEwLjYtMTAuOS0xMi44bC0xMy41LTMuOQ0KCQkJYy05LjItMi43LTE2LTYuNC0yMC40LTExLjJjLTQuNC00LjgtNi42LTEwLjktNi43LTE4LjJjLTAuMS05LDMuMi0xNi41LDkuOS0yMi41YzYuNy02LjEsMTUuMS05LjEsMjUuNC05LjINCgkJCWMxMC4zLDAsMTguOCwzLDI1LjQsOC45YzYuNiw1LjksMTAuNCwxMy45LDExLjMsMjMuOEgxNjQ2LjF6Ii8+DQoJPC9nPg0KPC9nPg0KPC9zdmc+DQo=
    1414"
    1515  alt="logo" />
  • webflow-pages/trunk/externals/dashboard/src/components/RemoveTokenAction.svelte

    r2494376 r3153929  
    77  const removeTokenStore = writable({
    88    disabled: false,
    9     value: "Reset"
     9    value: "Remove site"
    1010  });
    1111
     
    2222    removeTokenStore.set({ disabled: true, value: "Wait..." });
    2323    await store.removeToken();
    24     removeTokenStore.set({ disabled: false, value: "Reset" });
     24    removeTokenStore.set({ disabled: false, value: "Remove site" });
    2525  };
    2626
  • webflow-pages/trunk/externals/dashboard/src/pages/Configuration.svelte

    r2494376 r3153929  
    203203  :global(p.description-subtitle) {
    204204        color: #999999;
    205     margin: 0;
    206205    font-size: 12px;
    207     margin-top: -10px;
    208     margin-bottom: 4px;
    209206  }
    210207</style>
  • webflow-pages/trunk/externals/dashboard/src/pages/Login.svelte

    r2494376 r3153929  
    6666    <b>Congratulations on installing the Webflow Wordpress plugin!</b>
    6767    <p>
    68       You can find your site's API key by going to the <a href="https://webflow.com/dashboard?utm_source=wpplugin" target="_blank" rel="nofollow">Webflow Dashboard</a>, then your site's settings
     68      You can find your site's API key by going to the <a href="https://webflow.com/dashboard?utm_source=wpplugin" target="_blank" rel="nofollow">Webflow Dashboard</a>.
     69    <br />Be sure to generate a <a href="https://developers.webflow.com/data/reference/site-token?utm_source=iterable&utm_medium=email&utm_campaign=developerdeprecationv1sitetoken">V2 Token</a> with at least Sites and CMS read only permissions.
    6970    </p>
    7071    <form on:submit={handleSubmit}>
  • webflow-pages/trunk/externals/dashboard/src/pages/Utils.svelte

    r2494376 r3153929  
    88
    99  import Site from "../components/Site.svelte";
     10  import RemoveTokenAndDataAction from "../components/RemoveTokenAndDataAction.svelte";
    1011</script>
    1112
     
    4950    <hr />
    5051    <RemoveTokenAction />
     52    <hr />
     53    <RemoveTokenAndDataAction />
    5154  </div>
    5255  <div class="site-container">
  • webflow-pages/trunk/externals/dashboard/src/store/wfData.js

    r2494376 r3153929  
    5151    saveToken: async token => {
    5252      try {
    53         await ajaxCall({
     53        const check = await ajaxCall({
     54          nonce,
     55          data: {
     56            token
     57          },
     58          action: 'check_wf_token'
     59        })
     60
     61        const checkRes = await check.json();
     62
     63
     64
     65        if (checkRes.data.version != "v2") {
     66
     67          notifications.addNotification("The token you used is invalid, be sure to create a V2 token with cms and site read permissions", 'error');
     68          return;
     69        }
     70
     71        const saveTokenCall = await ajaxCall({
    5472          nonce,
    5573          data: {
     
    5977        });
    6078
     79        const saveTokenRes = await saveTokenCall.json();
     80
     81        if (!saveTokenRes.success) {
     82          notifications.addNotification(saveTokenRes.data.error || "Invalid Token", 'error');
     83        }
     84
    6185        const call = await ajaxCall({
    6286          nonce,
     
    6892          // set data
    6993          set({
    70             pages: res.data.pages || [],
    71             collections: res.data.collections || [],
    72             site: res.data.site,
    73             dynamicRules: [],
    74             staticRules: []
    75           });
     94              pages: res.data.pages || [],
     95              collections: res.data.collections || [],
     96              site: res.data.site,
     97              staticRules: res.data.staticRules || [],
     98              dynamicRules: res.data.dynamicRules || []
     99            });
    76100          notifications.addNotification('Token Saved Successfully');
    77101          // switch page
    78102          router.goTo('/configuration');
    79103        } else {
    80           // invalid token prob
    81           const error = res.data[0] || {
    82             code: '401',
    83             message: 'Invalid Token'
    84           };
    85           notifications.addNotification(error.message, 'error');
     104          let message = "Invalid token";
     105
     106          if (Array.isArray(res.data) && res.data[0].message) {
     107            message = res.data[0].message;
     108          } else if (res.data.error) {
     109            message = res.data.error;
     110          }
     111         
     112     
     113          notifications.addNotification(message || "Invalid Token", 'error');
    86114        }
    87115      } catch (e) {
     
    99127          nonce,
    100128          action: 'remove_wf_token'
     129        });
     130        notifications.addNotification('Token removed successfully');
     131        window.location.reload();
     132       
     133      } catch (e) {
     134        const error = {
     135          code: e.code || '500',
     136          message: e.message || 'Cannot remove token, please try again later'
     137        };
     138        notifications.addNotification(error.message, 'error');
     139      }
     140    },
     141    removeTokenAndData: async () => {
     142      try {
     143        await ajaxCall({
     144          nonce,
     145          action: 'remove_wf_token_and_data'
    101146        });
    102147        notifications.addNotification('Token removed successfully');
  • webflow-pages/trunk/includes/class-webflow-pages.php

    r2494376 r3153929  
    104104            require_once __DIR__ . '/public/class-webflow-api.php';
    105105
     106
    106107            Webflow_API::get_instance()->init();
    107108        }
  • webflow-pages/trunk/includes/public/class-webflow-api.php

    r3078484 r3153929  
    66}
    77
     8// class responsible for the Webflow APIs v1
     9require_once __DIR__ . '/class-webflow-api-v1.php';
     10
     11// class responsible for the Webflow APIs v2
     12require_once __DIR__ . '/class-webflow-api-v2.php';
     13
    814if (!class_exists('Webflow_API')) {
    915
     
    2329
    2430        private $site;
     31
     32        private $token_version;
    2533
    2634        /**
     
    4351            if (is_admin()) {
    4452                add_action('admin_init', array($this, 'init_ajax_actions'));
     53                add_action( 'admin_notices', array($this, 'show_notices') );
     54            }
     55        }
     56
     57        /**
     58         * Shows Admin Notices
     59         */
     60        public function show_notices() {
     61
     62            $version = "unknown";
     63
     64            if ($this->has_token()) {
     65                $token = $this->get_api_token();
     66                $version = $this->get_api_token_version($token);
     67            }
     68           
     69            if ($version && $version == "v1") {
     70
     71                ?>
     72<div class="notice notice-error">
     73<p><?php _e( 'Webflow API V1 will sunset on <strong>January 1, 2025.</strong> Disconnect your Webflow site from Webflow Pages > Settings and reconnect it using a <a href="https://developers.webflow.com/data/reference/site-token?utm_source=iterable&utm_medium=email&utm_campaign=developerdeprecationv1sitetoken">Webflow V2 token</a>.', WEBFLOW_PAGES_TEXT_DOMAIN ); ?></p>
     74</div>
     75                <?php
     76           
    4577            }
    4678        }
     
    5284        {
    5385            add_action("wp_ajax_save_wf_token", array($this, "save_wf_token"));
     86            add_action("wp_ajax_check_wf_token", array($this, "check_wf_token"));
    5487            add_action("wp_ajax_remove_wf_token", array($this, "remove_wf_token"));
     88            add_action("wp_ajax_remove_wf_token_and_data", array($this, "remove_wf_token_and_data"));
    5589            add_action("wp_ajax_get_wf_site_data", array($this, "get_wf_site_data"));
    5690            add_action("wp_ajax_save_wf_static_rules", array($this, "save_wf_static_rules"));
     
    72106            }
    73107
    74             $site_data = $this->get_main_site_data();
    75 
    76             if (is_wp_error($site_data)) {
     108            $site_data = $this->get_ajax_data();
     109
     110            ob_clean();
     111            if (is_wp_error($site_data) || (is_array($site_data) && array_key_exists("error", $site_data))) {
    77112                wp_send_json_error($site_data);
    78113            } else {
     
    170205        }
    171206
     207        public function get_api_manager() {
     208            $token = $this->get_api_token();
     209            $version = $this->get_api_token_version($token);
     210
     211            switch($version) {
     212                case "v1":
     213                   return Webflow_APIv1::get_instance();
     214                 case "v2":
     215                    return Webflow_APIv2::get_instance();
     216                    break;
     217            }
     218
     219        }
     220
    172221        /**
    173222         * Returns data attached to the only site you can get with the API Token
     
    184233            }
    185234
    186             $site = $this->get_site();
     235           
     236            $api_manager = $this->get_api_manager();
     237
     238            if (!$api_manager) {
     239                return new WP_Error('invalid_site_data', "Invalid token, be sure to use a V2 token!");
     240            }
     241         
     242            $site = $api_manager->get_site();
     243
    187244
    188245            if (is_wp_error($site)) {
     
    198255            //}
    199256
    200             $site_data = $this->get_site_data($site);
     257            $site_data = $api_manager->get_site_data($site);
     258
     259
    201260
    202261            return $site_data;
     
    356415                wp_die();
    357416            }
    358             $this->remove_api_token();
     417            $this->remove_api_token(false);
    359418            wp_send_json_success();
    360419            wp_die();
    361420        }
     421
     422        /**
     423         * Removes Wf token from the db and all the site associated data
     424         *
     425         *
     426         */
     427        public function remove_wf_token_and_data()
     428        {
     429            if (empty($_POST) || !wp_verify_nonce($_POST['security'], "_wf_ajax") || !current_user_can('administrator')) {
     430                wp_send_json_error(new WP_Error("wp_nonce_verify", "failed security check"));
     431                wp_die();
     432            }
     433            $this->remove_api_token(true);
     434            wp_send_json_success();
     435            wp_die();
     436        }
     437
    362438
    363439        /**
     
    383459        }
    384460
    385         /**
    386          * Gets Site data associated: [site, pages, collections]
    387          *
    388          * @param $site
    389          *
    390          * @return array|mixed|object|string|WP_Error
    391          */
    392         private function get_site_data($site)
    393         {
    394 
    395             if (is_wp_error($site) || !$site) {
    396                 delete_transient("_wf_site_data");
    397                 return $site;
    398             }
    399             $pages = $this->get_static_pages($site);
    400 
    401             if (is_wp_error($pages)) {
    402                 delete_transient("_wf_site_data");
    403 
    404                 return $pages;
    405             }
    406             $collections = $this->list_collections($site->_id);
    407             if (is_wp_error($collections)) {
    408                 delete_transient("_wf_site_data");
    409 
    410                 return $collections;
    411             }
    412 
    413             $site_domain = $this->get_site_domain($site);
    414             if (is_wp_error($site_domain)) {
    415                 delete_transient("_wf_site_data");
    416 
    417                 return $site_domain;
    418             }
    419             $site->domain = "https://$site_domain";
    420 
    421             $site_data = array(
    422                 "site" => $site,
    423                 "pages" => $pages,
    424                 "collections" => $collections
    425             );
    426 
    427             set_transient("_wf_site_data", $site_data, 0);
    428 
    429             return $site_data;
     461 /**
     462         * Check wf api token version
     463         */
     464        public function check_wf_token()
     465        {
     466            if (empty($_POST) || !wp_verify_nonce($_POST['security'], "_wf_ajax") || !current_user_can('administrator')) {
     467                wp_send_json_error(new WP_Error("wp_nonce_verify", "failed security check"));
     468                wp_die();
     469            }
     470
     471            if (!isset($_POST['token'])) {
     472                wp_send_json_error(new WP_Error("missing_data", "missing token"));
     473                wp_die();
     474            }
     475
     476            $token = sanitize_text_field($_POST['token']);
     477
     478            $this->token_version = "";
     479            delete_option('_wf_api_token_version');
     480            $version = $this->get_api_token_version($token);
     481            wp_send_json_success(["version" => $version]);
     482            wp_die();
    430483        }
    431484
     
    446499                );
    447500                if ($this->has_token()) {
    448                     $this->remove_api_token();
     501                    $this->remove_api_token(false);
    449502                    // Token with invalid site data
    450                     $data["error"] = __("Token removed, due to invalid site data", WEBFLOW_PAGES_TEXT_DOMAIN);
     503                    $error = $site_data->get_error_message();
     504                    $data["error"] = $error ? $error : __("Token removed, due to invalid site data", WEBFLOW_PAGES_TEXT_DOMAIN);
    451505                }
    452506
     
    502556        }
    503557
    504         /**
    505          * Saves Api Token on db
    506          *
    507          * @param $token
    508          */
    509         private function set_api_token($token)
    510         {
    511             update_option('_wf_api_token', $token);
    512         }
    513 
    514         /**
    515          * Removes Api Token
    516          */
    517         private function remove_api_token()
    518         {
    519             delete_option('_wf_api_token');
    520             $this->token = null;
    521             wf_pages_invalidate_cache();
    522             wf_pages_delete_rules();
    523         }
    524 
    525         /**
    526          * Gets Webflow Api Token from db
    527          *
    528          * @return string
    529          */
    530         private function get_api_token()
     558        public function get_api_token()
    531559        {
    532560            if ($this->token) {
     
    545573        }
    546574
    547         /**
    548          * Returns an array of static pages
    549          *
    550          * @param $site
    551          *
    552          * @return array|WP_Error
    553          */
    554         public function get_static_pages($site)
    555         {
    556 
    557             $domain_response = $this->get_site_domain($site);
    558 
    559             if (!is_wp_error($domain_response)) {
    560                 $res = wp_remote_get("https://" . trailingslashit($domain_response) . "static-manifest.json");
    561                 return $this->handle_remote_response($res, new WP_Error('static_pages', __("The API key failed. Try publishing your Webflow site first", WEBFLOW_PAGES_TEXT_DOMAIN)));
     575        public function get_api_token_version($token) {
     576            if ($this->token_version) {
     577                return $this->token_version;
     578            }
     579
     580
     581            if (!$token) {
     582                return "unknown";
     583            }
     584            $this->token = $token;
     585
     586            $version = get_option('_wf_api_token_version');
     587            if ($version) {
     588                $this->token_version = $version;
     589
     590                return $version;
     591            }
     592
     593            $infov2 = Webflow_APIv2::get_instance()->get_authorization_info();
     594
     595            if (is_wp_error($infov2)) {
     596
     597                $infov1 = Webflow_APIv1::get_instance()->get_authorization_info();
     598
     599                if (is_wp_error($infov1)) {
     600                    $version = "unknown";
     601                    return $version;
     602                } else {
     603                    $version = "v1";
     604                }
    562605            } else {
    563                 return $domain_response;
    564             }
    565         }
    566 
    567 
    568         /**
    569          * Returns authorization headers needed for api call
    570          * @return array
    571          */
    572         private function get_webflow_headers()
    573         {
    574 
    575             $token = $this->get_api_token();
    576 
    577             return array(
    578                 "Authorization" => "Bearer $token",
    579                 "accept-version" => "1.0.0",
    580                 "Content-Type" => "application/json; charset=utf-8",
    581                 "user-agent" => "WordPress-Webflow Plugin " . WEBFLOW_PAGES_PLUGIN_VERSION //user-agent must be in lower case to be accepted by the WordPress core apis
    582             );
    583 
    584         }
    585 
    586         /**
    587          * Returns the first domain associated with the site or WP_Error
    588          *
    589          * @param $site
    590          *
    591          * @return string|WP_Error
    592          */
    593         public function get_site_domain($site)
    594         {
    595 
    596             if ($this->domain) {
    597                 return $this->domain;
    598             }
    599 
    600             $domains_response = $this->get_site_domains($site->_id);
    601             if (!is_wp_error($domains_response)) {
    602                 if (count($domains_response) > 0) {
    603                     $this->domain = $domains_response[0]->name;
    604 
    605                     return $this->domain;
    606                 } else {
    607                     $this->domain = $site->shortName . ".webflow.io";
    608 
    609                     return $this->domain;
    610                 }
     606
     607                $version = "v2";
     608
     609            }
     610
     611            $this->token_version = $version;
     612
     613            update_option('_wf_api_token_version', $version);
     614
     615            return $version;
     616           
     617        }
     618
     619       
     620
     621           /**
     622         * Saves Api Token on db
     623         *
     624         * @param $token
     625         */
     626        public function set_api_token($token)
     627        {
     628            delete_option("_wf_api_token_version");
     629            $version = $this->get_api_token_version($token);
     630           
     631            if ($version !== "v2") {
     632                delete_option("_wf_api_token");
    611633            } else {
    612                 return $domains_response;
    613             }
    614 
    615         }
    616 
    617         /**
    618          * With API token you can get only the site for that token
    619          *
    620          * @return array|mixed|WP_Error
    621          */
    622         public function get_site()
    623         {
    624 
    625             if ($this->site) {
    626                 return $this->site;
    627             }
    628 
    629             $list_response = $this->list_sites(); // With single token api you get only 1 site
    630 
    631             if (!is_wp_error($list_response) && !empty($list_response)) {
    632                 $this->site = $list_response[0];
    633 
    634                 return $this->site;
    635             } else {
    636                 return $list_response;
    637             }
    638         }
    639 
    640 
    641         /**
    642          * Lists Webflow Sites
    643          *
    644          * returns an array of Object made as {_id: string, createdOn: Date, name: string, shortName: string, lastPublished: string, previewUrl: string}
    645          *
    646          * @return array|WP_Error
    647          */
    648         public function list_sites()
    649         {
    650 
    651             $response = wp_remote_get("https://api.webflow.com/sites", array(
    652                 "headers" => $this->get_webflow_headers(),
    653             ));
    654 
    655             return $this->handle_remote_response($response, new WP_Error('list_sites', __("The API key you used is invalid: failed to list sites", WEBFLOW_PAGES_TEXT_DOMAIN)));
    656         }
    657 
    658         /**
    659          *
    660          * Gets site domains
    661          *
    662          * @param $site_id
    663          *
    664          * returns an array of Object {_id: string, name: string}
    665          *
    666          * @return array|WP_Error
    667          */
    668         public function get_site_domains($site_id)
    669         {
    670 
    671             $response = wp_remote_get(esc_url_raw("https://api.webflow.com/sites/$site_id/domains"), array(
    672                 "headers" => $this->get_webflow_headers(),
    673             ));
    674 
    675             return $this->handle_remote_response($response, new WP_Error('site_domains', __("The API key you used is invalid: failed to list your site domains", WEBFLOW_PAGES_TEXT_DOMAIN)));
    676         }
    677 
    678         /**
    679          *
    680          * Lists the collections of the CMS
    681          *
    682          * @param $site_id
    683          *
    684          * returns an array of objects {_id: string, lastUpdated: date, createdOn: date, name: string, slug: string, singularName: string}
    685          *
    686          * @return array|mixed|object|WP_Error
    687          */
    688         public function list_collections($site_id)
    689         {
    690 
    691             $response = wp_remote_get(esc_url_raw("https://api.webflow.com/sites/$site_id/collections"), array(
    692                 "headers" => $this->get_webflow_headers(),
    693             ));
    694 
    695             return $this->handle_remote_response($response, new WP_Error('list_collections', __("The API key you used is invalid: failed to list your CMS Collections", WEBFLOW_PAGES_TEXT_DOMAIN)));
    696         }
    697 
    698         /**
    699          * Checks the response and responds accordingly
    700          *
    701          * @param $response WP_Error|array
    702          * @param $wp_error WP_Error|null
    703          *
    704          * @return array|mixed|object|WP_Error
    705          */
    706         private function handle_remote_response($response, $wp_error = null)
    707         {
    708             if (is_wp_error($response) || !isset($response['response']) || !isset($response['response']['code']) || !is_array($response)) {
    709                 return $wp_error;
    710             }
    711             $response_code = $response['response']['code'];
    712 
    713             if (200 == $response_code) {
    714 
    715                 return json_decode($response['body']);
    716 
    717             } else {
    718                 try {
    719                     $error = json_decode($response['body']);
    720                     if (!$error && $ops = json_last_error_msg()) {
    721                         return $wp_error;
    722                     }
    723                     if (401 == $error->code) {
    724                         $this->remove_api_token();
    725                     }
    726                     return new WP_Error($error->code, $error->msg);
    727                 } catch (Exception $e) {
    728                     // $message = $e->getMessage();
    729                     return $wp_error;
    730                 }
    731             }
    732         }
    733 
     634                update_option('_wf_api_token', $token);
     635            }
     636           
     637        }
     638
     639       /**
     640         * Removes Api Token
     641         */
     642        public function remove_api_token($delete_rules)
     643        {
     644            delete_option('_wf_api_token');
     645            delete_option('_wf_api_token_version');
     646            $this->token = null;
     647            $this->token_version = null;
     648            wf_pages_invalidate_cache();
     649            if ($delete_rules) {
     650                wf_pages_delete_rules();
     651            }
     652           
     653        }
    734654    }
    735655
  • webflow-pages/trunk/webflow-pages.php

    r3078484 r3153929  
    33 * Plugin Name: Webflow Pages
    44 * Description: Build pages visually with the power of code in Webflow, then serve them right on your WordPress site.
    5  * Version:     1.0.8
     5 * Version:     1.1.0
    66 * Author:      Webflow
    77 * Author URI:  https://webflow.com
     
    2222
    2323// Define constants
    24 define('WEBFLOW_PAGES_PLUGIN_VERSION', '1.0.2');
     24define('WEBFLOW_PAGES_PLUGIN_VERSION', '1.1.0');
    2525define('WEBFLOW_PAGES_PLUGIN_DIRECTORY_PATH', plugin_dir_path(__FILE__));
    2626define('WEBFLOW_PAGES_PLUGIN_DIRECTORY_URL', plugin_dir_url(__FILE__));
Note: See TracChangeset for help on using the changeset viewer.