function $parcel$interopDefault(a) { return a && a.__esModule ? a.default : a; } var $parcel$global = typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {}; //** REQUEST TYPES **// const $cbea55afea03b976$export$1470a914435ca933 = "POST"; const $cbea55afea03b976$export$40a64a78065efa15 = "GET"; const $cbea55afea03b976$export$d7fd7a62023314c5 = "PUT"; const $cbea55afea03b976$export$664fc1dd454ea59a = "DELETE"; const $cbea55afea03b976$export$e133232680a85c80 = "json"; const $cbea55afea03b976$export$d1a86f208bdcebe5 = "x-www-form-urlencoded"; const $cbea55afea03b976$export$353cfe44191e6ed0 = "/api/v1/status"; const $cbea55afea03b976$export$a5dc8f3c1ec8d90e = "/api/v1/settings/site"; const $cbea55afea03b976$export$12171301ab2e754b = "/api/v1/settings/member"; const $cbea55afea03b976$export$bcee0afc6bcb3973 = "/api/v1/page/create"; const $cbea55afea03b976$export$56305c0c25c10608 = "/api/v1/page/write"; const $cbea55afea03b976$export$af6f91c104f9c4c0 = "/api/v1/page/delete"; const $cbea55afea03b976$export$1541f55cb44e7d14 = "/api/v1/settings/sync"; const $cbea55afea03b976$export$42d16aa2cb1126e1 = "/api/v1/settings/publish"; const $cbea55afea03b976$export$96c65021a69fd85 = "/api/v1/settings/nav-sync"; const $cbea55afea03b976$export$94ef9ea0ce35d9d2 = "/api/v1/settings/reindex"; const $cbea55afea03b976$export$8d81f3b3a5b91cea = "/api/v1/mailer"; const $cbea55afea03b976$export$7193f1fd9d4c1e50 = "/api/v1/login"; const $cbea55afea03b976$export$5a2be2bfb8c6b601 = "getAuthStatus"; const $cbea55afea03b976$export$cf68b0779f5f031f = "writeSettings"; const $cbea55afea03b976$export$6ddd598aa59a7ae3 = "publishSite"; const $cbea55afea03b976$export$f06e28eb004ce525 = "createNewPage"; const $cbea55afea03b976$export$a01fefcc831953fa = "editPage"; const $cbea55afea03b976$export$f9aea0c55bfa15c9 = "deletePage"; const $cbea55afea03b976$export$835e061c7098d585 = "sendMail"; const $cbea55afea03b976$export$99e8e9f4661c0fb8 = "reIndexPages"; const $cbea55afea03b976$export$ff4a0df6152bf850 = "syncSite"; const $cbea55afea03b976$export$67799ce3e3352ee1 = "syncNav"; const $cbea55afea03b976$export$303f528a8cb6a0ec = "getSiteSettings"; const $cbea55afea03b976$export$497a6cff1b996002 = "getMemberInfo"; const $cbea55afea03b976$export$67f2179ab94be531 = "apiUseAuthorized"; const $cbea55afea03b976$export$d46ee33f41c7e43d = "apiUseNotAuthorized"; /** * A can of methods used to edit install settings, navigation pages and content pages */ class $cbea55afea03b976$export$2e2bcd8739ae039 { /** * @constructor * @param {string} baseURL - url of site; uses local when empty * @param {object} progressBar - element to be used to display upload progress */ constructor(baseURL = null, progressBar = null){ this.percentComplete = 0; //for later this.baseURL = null; this.progressBar = progressBar; this.status = false; if (baseURL) this.baseURL = baseURL; //asks server if a session is active this._request(this.baseURL ? this.baseURL + $cbea55afea03b976$export$353cfe44191e6ed0 : $cbea55afea03b976$export$353cfe44191e6ed0).then((response)=>{ if (response.type === $cbea55afea03b976$export$67f2179ab94be531) this.token = response.token; }); } /** * Promise method for authenticating and starting a session\ * **POST**`/api/v1/login` * @param {Object[]} data - json object that contains data for set up * @param {string} data[].handle - handle for site user * @param {string} data[].password - password for site user * @example * api.login(data).then(response=>{ * console.log("RESPONSE", response); * }) * @returns {object} json object that contains type and status of login request ``` { "message":"Example Message of Affirmation or what you're missing!", "type":"exampleType", } ``` */ login(data) { return new Promise((resolve, reject)=>{ this.baseURL ? data.remote = true : data.remote = false; this.key ? data.key = this.key : data.key = null; this._request(this.baseURL ? this.baseURL + $cbea55afea03b976$export$7193f1fd9d4c1e50 : $cbea55afea03b976$export$7193f1fd9d4c1e50, $cbea55afea03b976$export$5a2be2bfb8c6b601, $cbea55afea03b976$export$1470a914435ca933, $cbea55afea03b976$export$e133232680a85c80, data).then((result)=>{ resolve(result); }).catch((err)=>{ reject(err); }); }); } /** * Method for saving site and navigation settings\ * **POST**`/api/v1/settings/:task` * @param {string} task - settings being synced `config | navigation` * @param {object[]} data - json object that contains settings data for [site] or [nav] * @param {string} data[].global.base_url - base url for site [site] * @param {string} data[].global.title - site title [site] * @param {string} data[].global.descriptions - brief site summary [site] * @param {string} data[].global.background - url for site feature image for header [site] * @param {boolean} data[].global.private - privacy state for site [disabled] [site] * @param {boolean} data[].global.renderOnSave - property for publishing site when page saved [disabled] [site] * @param {string} data[].global.theme - current theme for site [site] * @param {boolean} data[].global.externalAPI - toggle for external API access [site] * @param {string} data[].member.handle - current member handle [site] * @param {string} data[].member.email - current member email [site] * @param {string} data[].email.active - current email protocol being used [site] * @param {string} data[].email.smtp.domain - url of smtp service being [site] * @param {string} data[].email.smtp.email - email account of smtp service [site] * @param {string} data[].email.smtp.password - password for email of smtp service [site] * @param {string} data[].email.mailgun.domain - mailgun domain url [site] * @param {string} data[].email.mailgun.key - mailgun key [site] * * @param {string} data[].item.title - page title [nav] * @param {string} data[].item.slug - url safe title [nav] * @param {string} data[].item.uuid - unique identifier [nav] * @param {string} data[].item.path - directory path to associated markdown file [nav] * @example * api.sync(TASK, data).then(response=>{ * console.log("RESPONSE", response); * }) * @returns {object} json object that contains type and status of sync request ``` * { "message":"Example Message of Affirmation!", "type":"exampleType", } ``` */ sync(task, data) { return new Promise((resolve, reject)=>{ let url = ""; switch(task){ case "syncSite": url = $cbea55afea03b976$export$1541f55cb44e7d14; break; case "syncNav": url = $cbea55afea03b976$export$96c65021a69fd85; break; } this._request(this.baseURL ? this.baseURL + url : url, $cbea55afea03b976$export$cf68b0779f5f031f, $cbea55afea03b976$export$1470a914435ca933, $cbea55afea03b976$export$e133232680a85c80, data).then((result)=>{ resolve(result); }).catch((err)=>{ reject(err); }); }); } /** * Method for retrieving user authorizing user login * @param {object[]} data - json object that contains task * @param {string} data[].task - publishing task * @example * api.publish(TASK).then(response=>{ * console.log("RESPONSE", response); * }) * @returns {object} json object that contains type and status of publis request * ``` { "message":"Example Message of Affirmation!", "type":"exampleType", } * ``` */ publish(data) { return new Promise((resolve, reject)=>{ this._request(//API_PUBLISH_PAGES, this.baseURL ? this.baseURL + $cbea55afea03b976$export$42d16aa2cb1126e1 : $cbea55afea03b976$export$42d16aa2cb1126e1, $cbea55afea03b976$export$6ddd598aa59a7ae3, $cbea55afea03b976$export$1470a914435ca933, $cbea55afea03b976$export$e133232680a85c80, data).then((result)=>{ resolve(result); }).catch((err)=>{ reject(err); }); }); } /** * Method for handling page creating and editing\ * **POST**`/api/v1/page/:task` * @param {string} task - current page action * @param {object[]} form - form object that contains info for current page being edited/created * @param {string} form[].id - sequence id for page, leave empty for new page * @param {string} form[].uuid - unique identifier for page, leave empty for new page * @param {string} form[].layout - current page layout * @param {string} form[].current_title - saved url save title for persistence when changing title, leave empty for new page * @param {string} form[].content - markdown body of page * @param {string} form[].title - current title of page * @param {string} form[].created - date page was created, leave empty for new page * @param {string} form[].slug - url safe string of page title * @param {string} form[].tags - comma separated list of tags * @param {boolean} form[].menu - property that indicates page is included in site menu * @param {boolean} form[].featured - property that indicates page is featured * @param {boolean} form[].published - property that indicates page is public * @param {string} form[].form_token - hidden property to authenticate form submission * @param {input} form[].feature_image - main image for page * @example * api.pageActions(TASK, data).then(response=>{ * console.log("RESPONSE", response); * }) * @returns {object} json object that contains type and status of page edit request ``` { "message":"Example Message of Affirmation!", "type":"exampleType", } ``` */ pageActions(task, data) { let url, event, content; switch(task){ case $cbea55afea03b976$export$f06e28eb004ce525: url = $cbea55afea03b976$export$bcee0afc6bcb3973; event = $cbea55afea03b976$export$f06e28eb004ce525; content = $cbea55afea03b976$export$e133232680a85c80; break; case $cbea55afea03b976$export$a01fefcc831953fa: url = $cbea55afea03b976$export$56305c0c25c10608; event = $cbea55afea03b976$export$a01fefcc831953fa; content = $cbea55afea03b976$export$e133232680a85c80; break; case $cbea55afea03b976$export$f9aea0c55bfa15c9: url = $cbea55afea03b976$export$af6f91c104f9c4c0; event = $cbea55afea03b976$export$f9aea0c55bfa15c9; content = $cbea55afea03b976$export$e133232680a85c80; break; default: break; } if (this.baseURL) //data.key = this.key; data.remote = true; else data.remote = false; return new Promise((resolve, reject)=>{ this._request(this.baseURL ? this.baseURL + url : url, event, $cbea55afea03b976$export$1470a914435ca933, content, data).then((result)=>{ resolve(result); }).catch((err)=>{ reject(err); }); }); } /** * Method for sending mail (if completed in settings)\ * **POST**`/api/v1/mailer` * @param {object[]} message - json object that contains items to be included in main site navigation * @param {string} message[].content - message to send * @example * api.sendMail(message).then(response=>{ * console.log("RESPONSE", response); * }) * @returns {object} json object that contains type and status of page edit request ``` { "message":"Example Message of Affirmation!", "type":"exampleType" } ``` */ sendMail(message) { return new Promise((resolve, reject)=>{ this._request(this.baseURL ? this.baseURL + $cbea55afea03b976$export$8d81f3b3a5b91cea : $cbea55afea03b976$export$8d81f3b3a5b91cea, $cbea55afea03b976$export$835e061c7098d585, $cbea55afea03b976$export$1470a914435ca933, $cbea55afea03b976$export$e133232680a85c80, message).then((result)=>{ resolve(result); }).catch((err)=>{ reject(err); }); }); } /** * *Promise method for retrieving site and member info*\ * **GET** `/api/v1/settings/:type` * @param {string} type - type of info requested ['site'|'member']; * @example * api.getInfo("type").then(data=>{ console.log("Info Object", data); * }) * @returns {object} json object that contains data for requested information * * *info object example* * ``` { "message":"message of affirmation!", "task":"type of info request", "data":json-data-object, } * ``` */ getInfo(type) { let url, task; if (type == "site") { url = $cbea55afea03b976$export$a5dc8f3c1ec8d90e; task = $cbea55afea03b976$export$303f528a8cb6a0ec; } else { url = $cbea55afea03b976$export$12171301ab2e754b; task = $cbea55afea03b976$export$497a6cff1b996002; } return new Promise((resolve, reject)=>{ this._request(this.baseURL ? this.baseURL + url : url, task).then((result)=>{ resolve(result); }).catch((err)=>{ reject(err); }); }); } //-------------------------- // private //-------------------------- _request(requestURL, eventType, requestType = $cbea55afea03b976$export$40a64a78065efa15, contentType = $cbea55afea03b976$export$e133232680a85c80, requestData = null) { var self = this; return new Promise(function(resolve, reject) { var request = new XMLHttpRequest(); request.upload.addEventListener("progress", (e)=>self.handleLoadProgress(e, self.progressBar)); request.open(requestType, requestURL, true); request.onload = ()=>{ if (request.status == 200) { let response = JSON.parse(request["response"]); resolve(response); } else { let error = JSON.parse(request["response"]); reject(error); } }; if (requestType == $cbea55afea03b976$export$d7fd7a62023314c5 || requestType == $cbea55afea03b976$export$1470a914435ca933) { if (eventType === $cbea55afea03b976$export$cf68b0779f5f031f || eventType === $cbea55afea03b976$export$a01fefcc831953fa || eventType === $cbea55afea03b976$export$f06e28eb004ce525 || eventType === $cbea55afea03b976$export$f9aea0c55bfa15c9 || eventType === $cbea55afea03b976$export$6ddd598aa59a7ae3 || eventType === $cbea55afea03b976$export$99e8e9f4661c0fb8) request.setRequestHeader("fipamo-access-token", self.token); switch(contentType){ case $cbea55afea03b976$export$e133232680a85c80: request.setRequestHeader("Content-type", "application/" + contentType); request.send(JSON.stringify(requestData)); break; case $cbea55afea03b976$export$d1a86f208bdcebe5: request.send(requestData); break; } } else { if (eventType === $cbea55afea03b976$export$303f528a8cb6a0ec || eventType === $cbea55afea03b976$export$497a6cff1b996002) request.setRequestHeader("fipamo-access-token", self.token); request.send(); } }); } //-------------------------- // event handlers //-------------------------- handleLoadProgress(e, progressBar) { let percent = Math.ceil(e.loaded / e.total * 100); //if a progress bar element is present, talk to it if (progressBar != null) progressBar.style.width = percent + "%"; } } //** REQUEST TYPES **// const $7e781a188206b2b3$export$1470a914435ca933 = "POST"; const $7e781a188206b2b3$export$40a64a78065efa15 = "GET"; const $7e781a188206b2b3$export$d7fd7a62023314c5 = "PUT"; const $7e781a188206b2b3$export$664fc1dd454ea59a = "DELETE"; const $7e781a188206b2b3$export$e133232680a85c80 = "json"; const $7e781a188206b2b3$export$d1a86f208bdcebe5 = "x-www-form-urlencoded"; const $7e781a188206b2b3$export$353cfe44191e6ed0 = "/api/v1/status"; const $7e781a188206b2b3$export$6010ab8005eea11c = "/api/v1/init"; const $7e781a188206b2b3$export$52ab125bf6b9623c = "/api/v1/restore"; const $7e781a188206b2b3$export$dbda7dc2e1902943 = "/api/v1/get-secret"; const $7e781a188206b2b3$export$6cb20b6a23a06e47 = "/api/v1/reset-password"; const $7e781a188206b2b3$export$7d346f7b882235dd = "/api/v1/backup"; const $7e781a188206b2b3$export$55b2e84262898562 = "/api/v1/backup/download"; const $7e781a188206b2b3$export$32b079f7fc0b26ca = "/api/v1/backup/restore"; const $7e781a188206b2b3$export$359fb9097c578f21 = "/api/v1/settings/add-avatar"; const $7e781a188206b2b3$export$739eebbd7d1f81a2 = "/api/v1/settings/add-feature-background"; const $7e781a188206b2b3$export$ee6257de8f8b01a2 = "/api/v1/page/add-entry-image"; const $7e781a188206b2b3$export$4d4b481c07056150 = "/api/v1/files"; const $7e781a188206b2b3$export$2fb4d35b5b0eebb2 = "blogInit"; const $7e781a188206b2b3$export$525ebf8030c3a323 = "restoreBackup"; const $7e781a188206b2b3$export$fc0aff5026df5452 = "createBackup"; const $7e781a188206b2b3$export$adaa11ae547fcbcc = "retrieveSecret"; const $7e781a188206b2b3$export$8305e7d16f23e8bc = "resetPassword"; const $7e781a188206b2b3$export$f90c0f4ad2c7ac2b = "uploadFiles"; const $7e781a188206b2b3$export$67f2179ab94be531 = "apiUseAuthorized"; const $7e781a188206b2b3$export$d46ee33f41c7e43d = "apiUseNotAuthorized"; /** * A tub of methods for creating/restoring installs, resetting passwords and uploading images. */ class $7e781a188206b2b3$export$2e2bcd8739ae039 { /** * @constructor * @param {string} baseURL - url of site; uses local when empty * @param {string} key - user api key */ constructor(baseURL = null, key = null){ this.accetableFiles = [ "image/jpeg", "image/gif", "image/png", "image/svg", "audio/mpeg", "video/mp4", "application/pdf", "text/plain", "text/rtf" ]; this.percentComplete = 0; //for later this.token = null; this.baseURL = null; this.key = null; if (key) this.key = key; if (baseURL) this.baseURL = baseURL; //if key is valid, checks to see if a session is active and returns this._request(this.baseURL ? this.baseURL + $7e781a188206b2b3$export$353cfe44191e6ed0 + "?key=" + this.key : $7e781a188206b2b3$export$353cfe44191e6ed0 + "?key=" + this.key).then((response)=>{ if (response.type === $7e781a188206b2b3$export$67f2179ab94be531) this.token = response.token; }); } /** * Promise method used create new site from scratch. For local use only. * @param {object} data - json object that contains data for set up * @property {string} new_member_handle - handle for new user * @property {string} new_member_email - email for new user * @property {string} new_member_pass - password for new user * @property {string} new_member_title - title for new user */ create(data) { return new Promise((resolve, reject)=>{ this._request($7e781a188206b2b3$export$6010ab8005eea11c, null, $7e781a188206b2b3$export$2fb4d35b5b0eebb2, $7e781a188206b2b3$export$1470a914435ca933, $7e781a188206b2b3$export$e133232680a85c80, data).then((result)=>{ resolve(result); }).catch((err)=>{ reject(err); }); }); } /** * Promise method for restoring site from a previous back up. For local use only. * @param {object} form - form object that contains restore data and files * @property {string} restore_member_handle - handle for site user * @property {string} restore_member_pass - password for site user * @property {file} backup-upload - backup zip file */ restore(form) { return new Promise((resolve, reject)=>{ var url, event, method, type, data; url = $7e781a188206b2b3$export$52ab125bf6b9623c; event = $7e781a188206b2b3$export$525ebf8030c3a323; method = $7e781a188206b2b3$export$1470a914435ca933; type = $7e781a188206b2b3$export$d1a86f208bdcebe5; data = new FormData(form); this._request(url, null, event, method, type, data).then((result)=>{ resolve(result); }).catch((err)=>{ reject(err); }); }); } /** * Promise method for creating a zip back up of current site. For local use only. */ backup() { return new Promise((resolve, reject)=>{ var url, event, method, type, data; url = $7e781a188206b2b3$export$7d346f7b882235dd; event = $7e781a188206b2b3$export$fc0aff5026df5452; method = $7e781a188206b2b3$export$1470a914435ca933; type = $7e781a188206b2b3$export$e133232680a85c80; data = { task: "create_backup" }; this._request(url, null, event, method, type, data).then((result)=>{ resolve(result); }).catch((err)=>{ reject(err); }); }); } /** * Promise method for retrieving user secret key. For local use only. * @param {object} data - json object that contains data for set up * @property {string} email - email for site user */ secret(data) { return new Promise((resolve, reject)=>{ this._request($7e781a188206b2b3$export$dbda7dc2e1902943, $7e781a188206b2b3$export$adaa11ae547fcbcc, $7e781a188206b2b3$export$1470a914435ca933, $7e781a188206b2b3$export$e133232680a85c80, data).then((result)=>{ resolve(result); }).catch((err)=>{ reject(err); }); }); } /** * Promise method for resetting password for user. For local use only. * @param {object} data - json object that contains data for set up * @property {string} new_password - password for user * @property {string} new_password2 - confirm password for user * @property {string} secret - secret key for user */ newPass(data) { return new Promise((resolve, reject)=>{ this._request($7e781a188206b2b3$export$6cb20b6a23a06e47, $7e781a188206b2b3$export$8305e7d16f23e8bc, $7e781a188206b2b3$export$1470a914435ca933, $7e781a188206b2b3$export$e133232680a85c80, data).then((result)=>{ resolve(result); }).catch((err)=>{ reject(err); }); }); } /** * Promise method for uploading files [todo: change to uploading files] * @param {string} type - type of upload * @param {input} files - form input containing files */ filesUpload(type, files, progress = null) { return new Promise((resolve, reject)=>{ let url = $7e781a188206b2b3$export$4d4b481c07056150; if (this.baseURL) { files.append("key", this.key); files.append("remote", true); } else files.append("remote", false); this._request(url, progress, $7e781a188206b2b3$export$f90c0f4ad2c7ac2b, $7e781a188206b2b3$export$1470a914435ca933, $7e781a188206b2b3$export$d1a86f208bdcebe5, files).then((r)=>{ resolve(r); }).catch((err)=>{ reject(err); }); }); } //-------------------------- // private //-------------------------- _request(requestURL, progressBar = null, eventType, requestType = $7e781a188206b2b3$export$40a64a78065efa15, contentType = $7e781a188206b2b3$export$e133232680a85c80, requestData = null) { var self = this; return new Promise(function(resolve, reject) { var request = new XMLHttpRequest(); request.upload.addEventListener("progress", (e)=>self.handleLoadProgress(e, progressBar)); request.open(requestType, requestURL, true); request.onload = ()=>{ if (request.status == 200) { let response = JSON.parse(request["response"]); resolve(response); } else { let error = JSON.parse(request["response"]); reject(error); } }; if (requestType == $7e781a188206b2b3$export$d7fd7a62023314c5 || requestType == $7e781a188206b2b3$export$1470a914435ca933) { if (eventType === $7e781a188206b2b3$export$f90c0f4ad2c7ac2b) request.setRequestHeader("fipamo-access-token", self.token); switch(contentType){ case $7e781a188206b2b3$export$e133232680a85c80: request.setRequestHeader("Content-type", "application/" + contentType); request.send(JSON.stringify(requestData)); break; case $7e781a188206b2b3$export$d1a86f208bdcebe5: request.send(requestData); break; } } else request.send(); }); } //-------------------------- // event handlers //-------------------------- handleLoadProgress(e, progressBar) { let percent = Math.ceil(e.loaded / e.total * 100); //if a progress bar element is present, talk to it if (progressBar != null) progressBar.style.width = percent + "%"; } } class $f177b50aa405d296$export$2e2bcd8739ae039 { //-------------------------- // constructor //-------------------------- constructor(){} //-------------------------- // methods //-------------------------- imgLoad(url) { "use strict"; // Create new promise with the Promise() constructor; // This has as its argument a function with two parameters, resolve and reject return new Promise(function(resolve, reject) { // Standard XHR to load an image var request = new XMLHttpRequest(); request.open("GET", url); request.responseType = "blob"; // When the request loads, check whether it was successful request.onload = function() { if (request.status === 200) // If successful, resolve the promise by passing back the request response resolve(request.response); else // If it fails, reject the promise with a error message reject(new Error("Image didn't load successfully; error code: " + request.status + " " + request.statusText)); }; request.onerror = function() { // Also deal with the case when the entire request fails to begin with // This is probably a network error, so reject the promise with an appropriate message reject(new Error("There was a network error.")); }; // Send the request request.send(); }); } loadImage(src) { "use strict"; let self = this; return new Promise(function(resolve, reject) { // Get a reference to the body element, and create a new image object var myImage = new Image(); myImage.crossOrigin = ""; // or "anonymous" // Call the function with the URL we want to load, but then chain the // promise then() method on to the end of it. This contains two callbacks self.imgLoad(src).then(function(response) { // The first runs when the promise resolves, with the request.reponse specified within the resolve() method. var imageURL = window.URL.createObjectURL(response); resolve(imageURL); //$('background-content').setStyle('background-image', 'url('+imageURL+')') //myImage.src = imageURL; //console.log(imageURL); //body.appendChild(myImage); // The second runs when the promise is rejected, and logs the Error specified with the reject() method. }, function(Error1) { reject(Error1); }); }); } /** * Create a function to convert the serialize and convert the form data to JSON * @param : $('#form_example'); * @return a JSON Stringify */ formDataToJSON(form) { let object = {}; let formData = new FormData(form); formData.forEach((value, key)=>{ if (!object.hasOwnProperty(key)) { object[key] = value; return; } if (!Array.isArray(object[key])) object[key] = [ object[key] ]; object[key].push(value); }); //let json = JSON.stringify(object); return object; } } const $995f55a4eccd256d$export$5a2be2bfb8c6b601 = "getAuthStatus"; const $995f55a4eccd256d$export$844339d01bfceea4 = "requestGood"; const $995f55a4eccd256d$export$f99ec790401d28da = "requestLame"; const $995f55a4eccd256d$export$5fb39232fef0eeff = "apiUseAuthorized"; const $995f55a4eccd256d$export$8829e15ac416fcee = "apiUseNotAuthorized"; const $995f55a4eccd256d$export$4bfe4aeac5ca1c9b = "imgRequestGood"; const $995f55a4eccd256d$export$b678e0874d52df91 = "imgRequestLame"; const $995f55a4eccd256d$export$f78d3105e9d98a5d = "settingsLoaded"; const $995f55a4eccd256d$export$c58a4ce4b93c5925 = "postImageAdded"; const $995f55a4eccd256d$export$26bdbac97359953d = "featureImageAdded"; const $995f55a4eccd256d$export$a9707c9559ca4612 = "postError"; const $995f55a4eccd256d$export$a2d54b707b6e22e1 = "postAdded"; const $995f55a4eccd256d$export$f88aea22a746eab = "postUpdated"; const $995f55a4eccd256d$export$92d3c9e452b188cc = "postImageAdded"; const $995f55a4eccd256d$export$9ab81161d8ad3297 = "pagesRendered"; const $995f55a4eccd256d$export$a447f8a3982d1ca8 = "pagesNotRendered"; const $995f55a4eccd256d$export$b47ada4663816e48 = "tagPagesRendered"; const $995f55a4eccd256d$export$14f1954724290577 = "tagPagesNotRendered"; const $995f55a4eccd256d$export$5dd76fd38bbe7841 = "settingsUpdated"; const $995f55a4eccd256d$export$5082b4f0403769e9 = "settingsNotUpdated"; const $995f55a4eccd256d$export$bd3b33ec4de8bf3 = "menuAddItem"; const $995f55a4eccd256d$export$dbd640577c4e5d0d = "menuDeleteItem"; const $995f55a4eccd256d$export$d4fd546d3456ff85 = "menuUpdated"; const $995f55a4eccd256d$export$9b65f586914397ef = "avatarUploaded"; const $995f55a4eccd256d$export$c3b6b85989e4a0a8 = "siteBackgroundUploaded"; const $995f55a4eccd256d$export$c51d011f6ede1aa5 = "uploadProgress"; const $995f55a4eccd256d$export$e0e6bcdbaa787779 = "writingItDown"; const $995f55a4eccd256d$export$ac8c24f9b72727c3 = "writingNewEntry"; const $995f55a4eccd256d$export$8ae3e28253adc030 = "erasingPage"; const $995f55a4eccd256d$export$16cc4df8146e89ab = "savingSettings"; const $995f55a4eccd256d$export$524c7f283d44a2c3 = "createBackup"; const $995f55a4eccd256d$export$ef2d8441bb01121d = "downloadBackup"; const $995f55a4eccd256d$export$8020812a0ef5b01d = "downloadBackup"; const $995f55a4eccd256d$export$bd723636cbbfa9dd = "uploadProfileImages"; const $995f55a4eccd256d$export$a5f1510cea1ffff9 = "renderPages"; const $995f55a4eccd256d$export$94ef9ea0ce35d9d2 = "reindexPages"; const $995f55a4eccd256d$export$6010ab8005eea11c = "blogInit"; const $995f55a4eccd256d$export$57f3dcd64790c65 = "blogInitGood"; const $995f55a4eccd256d$export$74a5c30fa9753d80 = "blogInitLame"; const $995f55a4eccd256d$export$dbda7dc2e1902943 = "retrieveSecret"; const $995f55a4eccd256d$export$6cb20b6a23a06e47 = "resetPassword"; const $995f55a4eccd256d$export$eeb056b4f9e6ce71 = "sendMail"; class $995f55a4eccd256d$var$DataEvent { } var $995f55a4eccd256d$export$2e2bcd8739ae039 = new $995f55a4eccd256d$var$DataEvent(); //TOOLS class $224e88b348829f3a$var$StringUtils { //-------------------------- // constructor //-------------------------- constructor(){} //-------------------------- // methods //-------------------------- cleanString(string) { var clean = string.replace(/(^\-+|[^a-zA-Z0-9\/_| -]+|\-+$)/g, "").toLowerCase().replace(/[\/_| -]+/g, "-"); return clean; } decodeHTML(string, quote_style) { var optTemp = 0, i = 0, noquotes = false; if (typeof quote_style === "undefined") quote_style = 2; string = string.toString().replace(/</g, "<").replace(/>/g, ">"); var OPTS = { ENT_NOQUOTES: 0, ENT_HTML_QUOTE_SINGLE: 1, ENT_HTML_QUOTE_DOUBLE: 2, ENT_COMPAT: 2, ENT_QUOTES: 3, ENT_IGNORE: 4 }; if (quote_style === 0) noquotes = true; if (typeof quote_style !== "number") { // Allow for a single string or an array of string flags quote_style = [].concat(quote_style); for(i = 0; i < quote_style.length; i++){ // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4 if (OPTS[quote_style[i]] === 0) noquotes = true; else if (OPTS[quote_style[i]]) optTemp = optTemp | OPTS[quote_style[i]]; } quote_style = optTemp; } if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) string = string.replace(/�*39;/g, "'"); // PHP doesn't currently escape if more than one 0, but it should if (!noquotes) string = string.replace(/"/g, '"'); // Put this in last place to avoid escape being double-decoded string = string.replace(/&/g, "&"); return string; } } var $224e88b348829f3a$export$2e2bcd8739ae039 = $224e88b348829f3a$var$StringUtils; class $de01a7e5b1773530$export$2e2bcd8739ae039 { //-------------------------- // constructor //-------------------------- constructor(){} //-------------------------- // methods //-------------------------- collectInfo(files) { return new Promise((resolve, reject)=>{ let pageInfo = []; let pageRef = document.querySelector('[role="file-manager"]'); //process html content for storage let txt = document.createElement("textarea"); txt.innerHTML = document.getElementById("highlight-content").innerHTML; let html = txt.value; html = html.replace(/<\/?span[^>]*>/g, ""); //removes prism styling html = html.replace(/<\/?br[^>]*>/g, "\n"); //convert back to encoded line break for storage //build data object pageInfo = { id: pageRef.getAttribute("data-index"), uuid: pageRef.getAttribute("data-uuid"), layout: document.getElementById("page-templates").value, current_title: pageRef.getAttribute("data-slug"), content: html, title: document.getElementById("post-title-text").value, created: document.getElementById("post-date").getAttribute("data-raw"), slug: new (0, $224e88b348829f3a$export$2e2bcd8739ae039)().cleanString(document.getElementById("post-title-text").value), tags: document.getElementById("post-tags").value, menu: document.getElementById("option-menu-pin").getAttribute("data-active"), featured: document.getElementById("option-feature").getAttribute("data-active"), published: document.getElementById("option-published").getAttribute("data-active"), form_token: document.getElementById("form_token").value, imageList: files.images, fileList: files.files }; resolve(pageInfo); }); } } const $0d6abf40542266b3$export$e0c06b1ddd9992cc = "editorDelete"; const $0d6abf40542266b3$export$80082ca64f03d0e9 = "editorUploadImage"; const $0d6abf40542266b3$export$1844db352cf5aef3 = "editorSave"; const $0d6abf40542266b3$export$14580fc61246740 = "editorUpdate"; class $0d6abf40542266b3$var$EditorEvent { } var $0d6abf40542266b3$export$2e2bcd8739ae039 = new $0d6abf40542266b3$var$EditorEvent(); class $68b475f2a0292491$var$EventEmitter { //-------------------------- // constructor //-------------------------- constructor(){ this.listeners = new Map(); } //-------------------------- // methods //-------------------------- addListener(label, callback) { this.listeners.has(label) || this.listeners.set(label, []); this.listeners.get(label).push(callback); } removeListener(label, callback) { var isFunction = function(obj) { return typeof obj == "function" || false; }; var listeners = this.listeners.get(label), index; if (listeners && listeners.length) { index = listeners.reduce((i, listener, index)=>{ return isFunction(listener) && listener === callback ? i = index : i; }, -1); if (index > -1) { listeners.splice(index, 1); this.listeners.set(label, listeners); return true; } } return false; } emitEvent(label, ...args) { var listeners = this.listeners.get(label); if (listeners && listeners.length) { listeners.forEach((listener)=>{ listener(...args); }); return true; } return false; } } var $68b475f2a0292491$export$2e2bcd8739ae039 = $68b475f2a0292491$var$EventEmitter; var $4b862aa2466a294d$exports = {}; /// var $4b862aa2466a294d$var$_self = typeof window !== "undefined" ? window // if in browser : typeof WorkerGlobalScope !== "undefined" && self instanceof WorkerGlobalScope ? self // if in worker : {} // if in node js ; /** * Prism: Lightweight, robust, elegant syntax highlighting * * @license MIT * @author Lea Verou * @namespace * @public */ var $4b862aa2466a294d$var$Prism = function(_self) { // Private helper vars var lang = /(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i; var uniqueId = 0; // The grammar object for plaintext var plainTextGrammar = {}; var _ = { /** * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load * additional languages or plugins yourself. * * By setting this value to `true`, Prism will not automatically highlight all code elements on the page. * * You obviously have to change this value before the automatic highlighting started. To do this, you can add an * empty Prism object into the global scope before loading the Prism script like this: * * ```js * window.Prism = window.Prism || {}; * Prism.manual = true; * // add a new