/******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ "./assets/src/js/admin/init-tom-select.js" /*!************************************************!*\ !*** ./assets/src/js/admin/init-tom-select.js ***! \************************************************/ (__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ initElsTomSelect: () => (/* binding */ initElsTomSelect), /* harmony export */ initTomSelect: () => (/* binding */ initTomSelect), /* harmony export */ searchUserOnListPost: () => (/* binding */ searchUserOnListPost) /* harmony export */ }); /* harmony import */ var _utils_admin_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils-admin.js */ "./assets/src/js/admin/utils-admin.js"); /** * Handle data response from API for tom-select * * @param {*} response * @param {*} tomSelectEl * @param dataStruct * @param fetchAPI * @param customOptions * @param {*} callBack */ const handleResponse = (response, tomSelectEl, dataStruct, fetchAPI, customOptions = {}, callBack) => { if (!response || !tomSelectEl || !dataStruct || !fetchAPI || !callBack) { return; } //Function format render data const getTextOption = data => { if (!dataStruct.keyGetValue?.text || !dataStruct.keyGetValue.key_render) { return; } let text = dataStruct.keyGetValue.text; for (const [key, value] of Object.entries(dataStruct.keyGetValue.key_render)) { text = text.replace(new RegExp(`{{${value}}}`, 'g'), data[value]); } return text; }; // Get default item tom-select const defaultIds = tomSelectEl.dataset?.saved ? JSON.parse(tomSelectEl.dataset.saved) : 0; let options = []; // Format response data set option tom-select if (response.data[dataStruct.dataType].length > 0) { options = response.data[dataStruct.dataType].map(item => ({ value: item[dataStruct.keyGetValue.value], text: getTextOption(item) })); } // Setting option tom-select const settingOption = { items: defaultIds, render: { item(data, escape) { return `` + `
  • ${data.text}
  • `; } }, onChange: data => { if (data.length < 1) { tomSelectEl.value = ''; } }, ...customOptions, options }; if (null != tomSelectEl.tomSelectInstance) { tomSelectEl.tomSelectInstance.addOptions(options); return options; } tomSelectEl.tomSelectInstance = _utils_admin_js__WEBPACK_IMPORTED_MODULE_0__.AdminUtilsFunctions.buildTomSelect(tomSelectEl, settingOption, fetchAPI, {}, callBack); return options; }; //Init Tom-select with available options const initTomSelectWithOption = (tomSelectEl, settingTomSelect = {}) => { if (!tomSelectEl) { return null; } if (null != tomSelectEl.tomSelectInstance) { return null; } tomSelectEl.tomSelectInstance = _utils_admin_js__WEBPACK_IMPORTED_MODULE_0__.AdminUtilsFunctions.buildTomSelect(tomSelectEl, settingTomSelect); }; // Init Tom-select const initTomSelect = (tomSelectEl, customOptions = {}, customParams = {}) => { var _dataStruct$dataSendA, _dataStruct$urlApi; if (!tomSelectEl) { return; } if (tomSelectEl.classList.contains('loaded')) { return; } tomSelectEl.classList.add('loaded'); const defaultIds = tomSelectEl.dataset?.saved ? JSON.parse(tomSelectEl.dataset.saved) : 0; const dataStruct = tomSelectEl?.dataset?.struct ? JSON.parse(tomSelectEl.dataset.struct) : ''; if (!dataStruct) { initTomSelectWithOption(tomSelectEl); return; } const getParentElByTagName = (tag, el) => { const newEl = el.parentElement; if (newEl.tagName.toLowerCase() === tag) { return newEl; } if (newEl.tagName.toLowerCase() === 'html') { return false; } return getParentElByTagName(tag, newEl); }; const formParent = getParentElByTagName('form', tomSelectEl); if (formParent) { const elInput = formParent.querySelector('input[name="' + tomSelectEl.getAttribute('name') + '"]'); if (elInput) { elInput.remove(); } } const dataSendApi = (_dataStruct$dataSendA = dataStruct.dataSendApi) !== null && _dataStruct$dataSendA !== void 0 ? _dataStruct$dataSendA : ''; const urlApi = (_dataStruct$urlApi = dataStruct.urlApi) !== null && _dataStruct$urlApi !== void 0 ? _dataStruct$urlApi : ''; const settingTomSelect = { ...dataStruct.setting, ...customOptions }; if (!urlApi) { initTomSelectWithOption(tomSelectEl, settingTomSelect); return; } const fetchFunction = (keySearch = '', customParams, callback) => { const url = urlApi; const dataSend = { current_ids: defaultIds, ...dataSendApi, ...customParams }; dataSend.search = keySearch; const params = { headers: { 'Content-Type': 'application/json', 'X-WP-Nonce': lpData.nonce }, method: 'POST', body: JSON.stringify(dataSend) }; _utils_admin_js__WEBPACK_IMPORTED_MODULE_0__.Utils.lpFetchAPI(url, params, callback); }; const callBackApi = { success: response => { handleResponse(response, tomSelectEl, dataStruct, fetchFunction, settingTomSelect, callBackApi); } }; // Fetch data for first load tom-select // Get ids selected, and show list without ids selected with limit. let idNotIn = []; if (typeof defaultIds === 'object') { idNotIn = Object.entries(defaultIds).map(([key, value]) => ({ key, value })); } if (dataSendApi?.id_not_in) { idNotIn = [...idNotIn, ...dataSendApi.id_not_in]; } customParams.id_not_in = idNotIn.join(','); fetchFunction('', customParams, callBackApi); }; // Init Tom-select user in admin const searchUserOnListPost = () => { if (lpData.show_search_author_field === '0') { return; } const elPostFilter = document.querySelector('#posts-filter'); if (!elPostFilter) { return; } let elSearchPost = elPostFilter.querySelector('.search-box'); if (!elSearchPost) { elPostFilter.insertAdjacentHTML('afterbegin', lpData.show_search_author_field); elSearchPost = elPostFilter.querySelector('.search-box'); } if (!elSearchPost) { return; } const selectNew = elSearchPost.querySelector('select#author'); if (selectNew) { return; } const createSelectUserHtml = () => { let defaultId = ''; const authorIdFilter = lpData.urlParams.author; if (authorIdFilter) { defaultId = JSON.stringify(authorIdFilter); } const dataStruct = { urlApi: _utils_admin_js__WEBPACK_IMPORTED_MODULE_0__.Api.admin.apiSearchUsers, dataType: 'users', keyGetValue: { value: 'ID', text: '{{display_name}}(#{{ID}}) - {{user_email}}', key_render: { display_name: 'display_name', user_email: 'user_email', ID: 'ID' } }, setting: { placeholder: 'Choose user' } }; const dataStructJson = JSON.stringify(dataStruct); const htmlSelectUser = `` + ``; const elInputSearch = elSearchPost.querySelector('input[name="s"]'); if (elInputSearch) { elInputSearch.insertAdjacentHTML('afterend', htmlSelectUser); } // Remove input hide default of WP. const elInputAuthor = elPostFilter.querySelector('input[name="author"]'); if (elInputAuthor) { elInputAuthor.remove(); } }; createSelectUserHtml(); }; const initElsTomSelect = () => { const tomSelectEls = document.querySelectorAll('select.lp-tom-select:not(.loaded)'); if (tomSelectEls.length) { tomSelectEls.forEach(tomSelectEl => { // Not build elements tom-select in Widget left classic of WordPress. if (tomSelectEl.closest('.widget-liquid-left')) { return; } initTomSelect(tomSelectEl); }); } }; /***/ }, /***/ "./assets/src/js/admin/share/dropdown-pages.js" /*!*****************************************************!*\ !*** ./assets/src/js/admin/share/dropdown-pages.js ***! \*****************************************************/ (__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ DropdownPages: () => (/* binding */ DropdownPages) /* harmony export */ }); /* harmony import */ var lpAssetsJsPath_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lpAssetsJsPath/utils.js */ "./assets/src/js/utils.js"); /* harmony import */ var lpAssetsJsPath_lpToastify_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lpAssetsJsPath/lpToastify.js */ "./assets/src/js/lpToastify.js"); /** * Dropdown Pages * * @since 4.2.5.1 * @version 1.0.0 */ class DropdownPages { static selectors = { elDropdown: '.learn-press-dropdown-pages', elSelect: 'select', elListWrap: '.list-pages-wrapper', elActions: '.quick-add-page-actions', elForm: '.quick-add-page-inline', elButtonQuickAdd: '.button-quick-add-page', elInput: '.quick-add-page-inline input[type="text"]', elButtonSubmit: '.quick-add-page-inline button', elButtonCancel: '.quick-add-page-inline a' }; constructor() { this.elDropdowns = []; } init() { this.elDropdowns = document.querySelectorAll(DropdownPages.selectors.elDropdown); if (!this.elDropdowns.length) { return; } this.events(); } events() { // Check and attach events only once if (DropdownPages._loadedEvents) { return; } DropdownPages._loadedEvents = this; // Change events lpAssetsJsPath_utils_js__WEBPACK_IMPORTED_MODULE_0__.eventHandlers('change', [{ selector: DropdownPages.selectors.elDropdown, class: this, callBack: this.handleChangeSelect.name }]); // Click events lpAssetsJsPath_utils_js__WEBPACK_IMPORTED_MODULE_0__.eventHandlers('click', [{ selector: DropdownPages.selectors.elButtonSubmit, class: this, callBack: this.handleSubmit.name }, { selector: DropdownPages.selectors.elButtonCancel, class: this, callBack: this.handleCancel.name }, { selector: DropdownPages.selectors.elButtonQuickAdd, class: this, callBack: this.handleQuickAdd.name }]); // Keydown events lpAssetsJsPath_utils_js__WEBPACK_IMPORTED_MODULE_0__.eventHandlers('keydown', [{ selector: DropdownPages.selectors.elInput, class: this, callBack: this.handleInputEnter.name, checkIsEventEnter: true }, { selector: DropdownPages.selectors.elInput, class: this, callBack: this.handleInputEscape.name }]); } handleChangeSelect(args) { const { e } = args; const elSelect = e.target; if (!elSelect.matches(DropdownPages.selectors.elSelect)) { return; } const elDropdown = elSelect.closest(DropdownPages.selectors.elDropdown); if (!elDropdown) { return; } const elActions = elDropdown.querySelector(DropdownPages.selectors.elActions); if (elActions) { elActions.classList.add('hide-if-js'); } if (parseInt(elSelect.value, 10)) { if (elActions) { const editLink = elActions.querySelector('a.edit-page'); const viewLink = elActions.querySelector('a.view-page'); if (editLink) { editLink.href = `post.php?post=${elSelect.value}&action=edit`; } if (viewLink) { viewLink.href = `${window.lpGlobalSettings.siteurl}?page_id=${elSelect.value}`; } elActions.classList.remove('hide-if-js'); } elSelect.setAttribute('data-selected', elSelect.value); } } openQuickAddForm(elDropdown) { const elListWrap = elDropdown.querySelector(DropdownPages.selectors.elListWrap); const elForm = elDropdown.querySelector(DropdownPages.selectors.elForm); if (elListWrap) { elListWrap.classList.add('hide-if-js'); } if (elForm) { elForm.classList.remove('hide-if-js'); const elInput = elForm.querySelector('input'); if (elInput) { elInput.value = ''; elInput.focus(); } } } handleSubmit(args) { const { e } = args; e.preventDefault(); const elButton = e.target.closest(DropdownPages.selectors.elButtonSubmit); if (!elButton) { return; } const elForm = elButton.closest(DropdownPages.selectors.elForm); if (!elForm) { return; } const elDropdown = elForm.closest(DropdownPages.selectors.elDropdown); if (!elDropdown) { return; } const elInput = elForm.querySelector('input'); const elListWrap = elDropdown.querySelector(DropdownPages.selectors.elListWrap); const pageName = elInput ? elInput.value.trim() : ''; if (!pageName) { alert('Please enter the name of page'); if (elInput) { elInput.focus(); } return; } elButton.disabled = true; let fieldName = ''; const elFieldName = elDropdown.querySelector('select'); fieldName = elFieldName ? elFieldName.name : ''; if (!window.lpGlobalSettings || !window.lpGlobalSettings.ajax || !window.lpDataAdmin || !window.lpDataAdmin.nonce) { elButton.disabled = false; return; } const formData = new FormData(); formData.append('action', 'learnpress_create_page'); formData.append('page_name', pageName); formData.append('field_name', fieldName); formData.append('nonce', window.lpDataAdmin.nonce); fetch(window.lpGlobalSettings.ajax, { method: 'POST', body: formData }).then(response => response.json()).then(response => { const { message, status, data } = response; if (status === 'success') { elForm.classList.add('hide-if-js'); lpAssetsJsPath_lpToastify_js__WEBPACK_IMPORTED_MODULE_1__.show(message, 'success'); setTimeout(() => { window.location.reload(); }, 1000); } else { throw new Error(message); } }).catch(error => { lpAssetsJsPath_lpToastify_js__WEBPACK_IMPORTED_MODULE_1__.show(error.message, 'error'); }).finally(() => { elButton.disabled = false; if (elListWrap) { elListWrap.classList.remove('hide-if-js'); } }); } addNewPageToList(args) { const { ID, name, positions } = args; const option = document.createElement('option'); option.value = ID; option.textContent = name; const position = positions.indexOf(ID + ''); document.querySelectorAll(`${DropdownPages.selectors.elDropdown} ${DropdownPages.selectors.elSelect}`).forEach(select => { const newOption = option.cloneNode(true); if (position === 0) { const options = select.querySelectorAll('option'); for (const opt of options) { if (parseInt(opt.value, 10)) { opt.before(newOption); break; } } } else if (position === positions.length - 1) { select.appendChild(newOption); } else { const prevOption = select.querySelector(`option[value="${positions[position - 1]}"]`); if (prevOption) { prevOption.after(newOption); } else { select.appendChild(newOption); } } }); } handleCancel(args) { const { e } = args; e.preventDefault(); const elCancel = e.target.closest(DropdownPages.selectors.elButtonCancel); if (!elCancel) { return; } const elForm = elCancel.closest(DropdownPages.selectors.elForm); if (!elForm) { return; } const elDropdown = elForm.closest(DropdownPages.selectors.elDropdown); if (!elDropdown) { return; } const elSelect = elDropdown.querySelector(DropdownPages.selectors.elSelect); const elListWrap = elDropdown.querySelector(DropdownPages.selectors.elListWrap); const selected = elSelect ? elSelect.getAttribute('data-selected') : ''; elForm.classList.add('hide-if-js'); if (elSelect) { elSelect.value = selected + ''; elSelect.removeAttribute('disabled'); elSelect.dispatchEvent(new Event('change', { bubbles: true })); } if (elListWrap) { elListWrap.classList.remove('hide-if-js'); } } handleQuickAdd(args) { const { e } = args; const elButton = e.target.closest(DropdownPages.selectors.elButtonQuickAdd); if (!elButton) { return; } const elDropdown = elButton.closest(DropdownPages.selectors.elDropdown); if (!elDropdown) { return; } this.openQuickAddForm(elDropdown); } handleInputEnter(args) { const { e } = args; e.preventDefault(); const elInput = e.target; const elForm = elInput.closest(DropdownPages.selectors.elForm); if (!elForm) { return; } const elButton = elForm.querySelector('button'); if (elButton) { elButton.click(); } } handleInputEscape(args) { const { e } = args; if (e.key !== 'Escape') { return; } const elInput = e.target; const elForm = elInput.closest(DropdownPages.selectors.elForm); if (!elForm) { return; } const elCancel = elForm.querySelector('a'); if (elCancel) { elCancel.click(); } } } /***/ }, /***/ "./assets/src/js/admin/utils-admin.js" /*!********************************************!*\ !*** ./assets/src/js/admin/utils-admin.js ***! \********************************************/ (__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ AdminUtilsFunctions: () => (/* binding */ AdminUtilsFunctions), /* harmony export */ Api: () => (/* reexport safe */ _api_js__WEBPACK_IMPORTED_MODULE_2__["default"]), /* harmony export */ Utils: () => (/* reexport module object */ _utils_js__WEBPACK_IMPORTED_MODULE_0__) /* harmony export */ }); /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ "./assets/src/js/utils.js"); /* harmony import */ var tom_select__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tom-select */ "./node_modules/tom-select/dist/esm/tom-select.complete.js"); /* harmony import */ var _api_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../api.js */ "./assets/src/js/api.js"); /** * Library run on Admin * * @since 4.2.6.9 * @version 1.0.1 */ const AdminUtilsFunctions = { buildTomSelect(elTomSelect, options, fetchAPI, dataSend, callBackHandleData) { if (!elTomSelect) { return; } const optionDefault = { plugins: { remove_button: { title: 'Remove this item' }, dropdown_input: {} }, onInitialize() {}, onItemAdd(e) { // Get list without current item. if (fetchAPI) { const selectedOptions = Array.from(elTomSelect.selectedOptions); const selectedValues = selectedOptions.map(option => option.value); selectedValues.push(e); dataSend.id_not_in = selectedValues.join(','); fetchAPI('', dataSend, callBackHandleData); } } }; if (fetchAPI) { optionDefault.load = (keySearch, callbackTom) => { const selectedOptions = Array.from(elTomSelect.selectedOptions); const selectedValues = selectedOptions.map(option => option.value); dataSend.id_not_in = selectedValues.join(','); fetchAPI(keySearch, dataSend, AdminUtilsFunctions.callBackTomSelectSearchAPI(callbackTom, callBackHandleData)); }; } options = { ...optionDefault, ...options }; const items_selected = options.options; /*if ( options?.options?.length > 20 ) { const chunkSize = 20; const length = options.options.length; let i = 0; const chunkedOptions = { ...options }; chunkedOptions.options = items_selected.slice( i, chunkSize ); const tomSelect = new TomSelect( elTomSelect, chunkedOptions ); i += chunkSize; const interval = setInterval( () => { if ( i > ( length - 1 ) ) { clearInterval( interval ); } const optionsSlice = items_selected.slice( i, i + chunkSize ); i += chunkSize; tomSelect.addOptions( optionsSlice ); tomSelect.setValue( options.items ); }, 200 ); return tomSelect; }*/ return new tom_select__WEBPACK_IMPORTED_MODULE_1__["default"](elTomSelect, options); }, callBackTomSelectSearchAPI(callbackTom, callBackHandleData) { return { success: response => { const options = callBackHandleData.success(response); callbackTom(options); } }; }, fetchCourses(keySearch = '', dataSend = {}, callback) { const url = _api_js__WEBPACK_IMPORTED_MODULE_2__["default"].admin.apiSearchCourses; dataSend.search = keySearch; const params = { headers: { 'Content-Type': 'application/json', 'X-WP-Nonce': lpDataAdmin.nonce }, method: 'POST', body: JSON.stringify(dataSend) }; _utils_js__WEBPACK_IMPORTED_MODULE_0__.lpFetchAPI(url, params, callback); }, fetchUsers(keySearch = '', dataSend = {}, callback) { const url = _api_js__WEBPACK_IMPORTED_MODULE_2__["default"].admin.apiSearchUsers; dataSend.search = keySearch; const params = { headers: { 'Content-Type': 'application/json', 'X-WP-Nonce': lpDataAdmin.nonce }, method: 'POST', body: JSON.stringify(dataSend) }; _utils_js__WEBPACK_IMPORTED_MODULE_0__.lpFetchAPI(url, params, callback); } }; /***/ }, /***/ "./assets/src/js/api.js" /*!******************************!*\ !*** ./assets/src/js/api.js ***! \******************************/ (__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /** * List API on backend * * @since 4.2.6 * @version 1.0.2 */ const lplistAPI = {}; let lp_rest_url; if ('undefined' !== typeof lpDataAdmin) { lp_rest_url = lpDataAdmin.lp_rest_url; lplistAPI.admin = { apiAdminNotice: lp_rest_url + 'lp/v1/admin/tools/admin-notices', apiAddons: lp_rest_url + 'lp/v1/addon/all', apiAddonAction: lp_rest_url + 'lp/v1/addon/action-n', apiAddonsPurchase: lp_rest_url + 'lp/v1/addon/info-addons-purchase', apiSearchCourses: lp_rest_url + 'lp/v1/admin/tools/search-course', apiSearchUsers: lp_rest_url + 'lp/v1/admin/tools/search-user', apiAssignUserCourse: lp_rest_url + 'lp/v1/admin/tools/assign-user-course', apiUnAssignUserCourse: lp_rest_url + 'lp/v1/admin/tools/unassign-user-course' }; } if ('undefined' !== typeof lpData) { lp_rest_url = lpData.lp_rest_url; lplistAPI.frontend = { apiWidgets: lp_rest_url + 'lp/v1/widgets/api', apiCourses: lp_rest_url + 'lp/v1/courses/archive-course', // Deprecated API, don't load from v4.3.7 apiAJAX: lp_rest_url + 'lp/v1/load_content_via_ajax/', // Deprecated since 4.3.0 apiProfileCoverImage: lp_rest_url + 'lp/v1/profile/cover-image' }; } if (lp_rest_url) { lplistAPI.apiCourses = lp_rest_url + 'lp/v1/courses/'; lplistAPI.apiEditCoursesArchiveBlock = lp_rest_url + 'lp/v1/courses/edit-archive-block'; lplistAPI.apiCoursesSuggest = lp_rest_url + 'lp/v1/courses/courses-suggest'; } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (lplistAPI); /***/ }, /***/ "./assets/src/js/lpToastify.js" /*!*************************************!*\ !*** ./assets/src/js/lpToastify.js ***! \*************************************/ (__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ show: () => (/* binding */ show) /* harmony export */ }); /* harmony import */ var toastify_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! toastify-js */ "./node_modules/toastify-js/src/toastify.js"); /* harmony import */ var toastify_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(toastify_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var toastify_js_src_toastify_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! toastify-js/src/toastify.css */ "./node_modules/toastify-js/src/toastify.css"); /** * Utils functions * * @param url * @param data * @param functions * @since 4.3.0 * @version 1.0.0 */ const argsToastify = { text: '', gravity: lpData.toast.gravity, // `top` or `bottom` position: lpData.toast.position, // `left`, `center` or `right` className: `${lpData.toast.classPrefix}`, close: lpData.toast.close == 1, stopOnFocus: lpData.toast.stopOnFocus == 1, duration: lpData.toast.duration }; const show = (message, status = 'success', argsCustom) => { let args = argsToastify; if (argsCustom) { args = { ...args, ...argsCustom }; } const toastify = new (toastify_js__WEBPACK_IMPORTED_MODULE_0___default())({ ...args, text: message, className: `${lpData.toast.classPrefix} ${status}` }); toastify.showToast(); }; /***/ }, /***/ "./assets/src/js/utils.js" /*!********************************!*\ !*** ./assets/src/js/utils.js ***! \********************************/ (__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ debounce: () => (/* binding */ debounce), /* harmony export */ eventHandlers: () => (/* binding */ eventHandlers), /* harmony export */ fullScreenView: () => (/* binding */ fullScreenView), /* harmony export */ getDataOfForm: () => (/* binding */ getDataOfForm), /* harmony export */ getFieldKeysOfForm: () => (/* binding */ getFieldKeysOfForm), /* harmony export */ listenElementCreated: () => (/* binding */ listenElementCreated), /* harmony export */ listenElementViewed: () => (/* binding */ listenElementViewed), /* harmony export */ lpAddQueryArgs: () => (/* binding */ lpAddQueryArgs), /* harmony export */ lpAjaxParseJsonOld: () => (/* binding */ lpAjaxParseJsonOld), /* harmony export */ lpClassName: () => (/* binding */ lpClassName), /* harmony export */ lpFetchAPI: () => (/* binding */ lpFetchAPI), /* harmony export */ lpGetCurrentURLNoParam: () => (/* binding */ lpGetCurrentURLNoParam), /* harmony export */ lpOnElementReady: () => (/* binding */ lpOnElementReady), /* harmony export */ lpSetLoadingEl: () => (/* binding */ lpSetLoadingEl), /* harmony export */ lpShowHideEl: () => (/* binding */ lpShowHideEl), /* harmony export */ mergeDataWithDatForm: () => (/* binding */ mergeDataWithDatForm), /* harmony export */ toggleCollapse: () => (/* binding */ toggleCollapse), /* harmony export */ toggleEnable: () => (/* binding */ toggleEnable) /* harmony export */ }); /** * Utils functions * * @param url * @param data * @param functions * @since 4.2.5.1 * @version 1.0.7 */ const lpClassName = { hidden: 'lp-hidden', loading: 'loading', elCollapse: 'lp-collapse', elSectionToggle: '.lp-section-toggle', elTriggerToggle: '.lp-trigger-toggle', elBtnFullScreen: '.lp-btn-full-screen-view', elFullScreen: 'lp-full-screen-view', elBtnFullScreenClose: 'lp-full-screen-view__close' }; const lpFetchAPI = (url, data = {}, functions = {}) => { if ('function' === typeof functions.before) { functions.before(); } fetch(url, { method: 'GET', ...data }).then(response => response.json()).then(response => { if ('function' === typeof functions.success) { functions.success(response); } }).catch(err => { if ('function' === typeof functions.error) { functions.error(err); } }).finally(() => { if ('function' === typeof functions.completed) { functions.completed(); } }); }; /** * Get current URL without params. * * @since 4.2.5.1 */ const lpGetCurrentURLNoParam = () => { let currentUrl = window.location.href; const hasParams = currentUrl.includes('?'); if (hasParams) { currentUrl = currentUrl.split('?')[0]; } return currentUrl; }; const lpAddQueryArgs = (endpoint, args) => { const url = new URL(endpoint); Object.keys(args).forEach(arg => { url.searchParams.set(arg, args[arg]); }); return url; }; /** * Listen element viewed. * * @param el * @param callback * @since 4.2.5.8 */ const listenElementViewed = (el, callback) => { const observerSeeItem = new IntersectionObserver(function (entries) { for (const entry of entries) { if (entry.isIntersecting) { callback(entry); } } }); observerSeeItem.observe(el); }; /** * Listen element created. * * @param callback * @since 4.2.5.8 */ const listenElementCreated = callback => { const observerCreateItem = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { if (mutation.addedNodes) { mutation.addedNodes.forEach(function (node) { if (node.nodeType === 1) { callback(node); } }); } }); }); observerCreateItem.observe(document, { childList: true, subtree: true }); // End. }; /** * Listen element created. * * @param selector * @param callback * @since 4.2.7.1 */ const lpOnElementReady = (selector, callback) => { const element = document.querySelector(selector); if (element) { callback(element); return; } const observer = new MutationObserver((mutations, obs) => { const element = document.querySelector(selector); if (element) { obs.disconnect(); callback(element); } }); observer.observe(document.documentElement, { childList: true, subtree: true }); }; // Parse JSON from string with content include LP_AJAX_START. const lpAjaxParseJsonOld = data => { if (typeof data !== 'string') { return data; } const m = String.raw({ raw: data }).match(/<-- LP_AJAX_START -->(.*)<-- LP_AJAX_END -->/s); try { if (m) { data = JSON.parse(m[1].replace(/(?:\r\n|\r|\n)/g, '')); } else { data = JSON.parse(data); } } catch (e) { data = {}; } return data; }; // status 0: hide, 1: show const lpShowHideEl = (el, status = 0) => { if (!el) { return; } if (!status) { el.classList.add(lpClassName.hidden); } else { el.classList.remove(lpClassName.hidden); } }; // status 0: hide, 1: show const lpSetLoadingEl = (el, status) => { if (!el) { return; } if (!status) { el.classList.remove(lpClassName.loading); } else { el.classList.add(lpClassName.loading); } }; // Toggle collapse section const toggleCollapse = (e, target, elTriggerClassName = '', elsExclude = [], callback) => { if (!elTriggerClassName) { elTriggerClassName = lpClassName.elTriggerToggle; } // Exclude elements, which should not trigger the collapse toggle if (elsExclude && elsExclude.length > 0) { for (const elExclude of elsExclude) { if (target.closest(elExclude)) { return; } } } const elTrigger = target.closest(elTriggerClassName); if (!elTrigger) { return; } //console.log( 'elTrigger', elTrigger ); const elSectionToggle = elTrigger.closest(`${lpClassName.elSectionToggle}`); if (!elSectionToggle) { return; } elSectionToggle.classList.toggle(`${lpClassName.elCollapse}`); if ('function' === typeof callback) { callback(elSectionToggle); } }; // Get data of form const getDataOfForm = form => { const dataSend = {}; const formData = new FormData(form); for (const pair of formData.entries()) { const key = pair[0]; const value = formData.getAll(key); if (!dataSend.hasOwnProperty(key)) { // Convert value array to string. dataSend[key] = value.join(','); } } return dataSend; }; // Get field keys of form const getFieldKeysOfForm = form => { const keys = []; const elements = form.elements; for (let i = 0; i < elements.length; i++) { const name = elements[i].name; if (name && !keys.includes(name)) { keys.push(name); } } return keys; }; // Merge data handle with data form. const mergeDataWithDatForm = (elForm, dataHandle) => { const dataForm = getDataOfForm(elForm); const keys = getFieldKeysOfForm(elForm); keys.forEach(key => { if (!dataForm.hasOwnProperty(key)) { delete dataHandle[key]; } else if (dataForm[key][0] === '') { delete dataForm[key]; delete dataHandle[key]; } }); dataHandle = { ...dataHandle, ...dataForm }; return dataHandle; }; /** * Event trigger * For each list of event handlers, listen event on document. * * eventName: 'click', 'change', ... * eventHandlers = [ { selector: '.lp-button', callBack: function(){}, class: object } ] * * @param eventName * @param eventHandlers */ const eventHandlers = (eventName, eventHandlers) => { document.addEventListener(eventName, e => { const target = e.target; let args = { e, target }; eventHandlers.forEach(eventHandler => { args = { ...args, ...eventHandler }; //console.log( args ); // Check condition before call back if (eventHandler.conditionBeforeCallBack) { if (eventHandler.conditionBeforeCallBack(args) !== true) { return; } } // Special check for keydown event with checkIsEventEnter = true if (eventName === 'keydown' && eventHandler.checkIsEventEnter) { if (e.key !== 'Enter') { return; } } if (target.closest(eventHandler.selector)) { if (eventHandler.class) { // Call method of class, function callBack will understand exactly {this} is class object. eventHandler.class[eventHandler.callBack](args); } else { // For send args is objected, {this} is eventHandler object, not class object. eventHandler.callBack(args); } } }); }); }; /** * Debounce - delays function execution until after `wait` ms of inactivity. * * Each call resets the timer. Only the last call in a burst executes. * * USE CASES: * - Search inputs, form validation, window resize * - Multiple elements need independent timers * - When you need to call with different arguments * * EXAMPLES: * const debouncedSearch = debounce( (query) => fetchResults(query), 300 ); * searchInput.addEventListener('input', (e) => debouncedSearch(e.target.value)); * * const debouncedResize = debounce( recalculateLayout, 250 ); * window.addEventListener('resize', debouncedResize); * * ⚠️ Create ONCE outside event handlers, not inside. * * @param {Function} func - Function to debounce (can be anonymous) * @param {number} wait - Milliseconds to wait (default: 500) * @return {Function} Debounced wrapper function * @since 4.3.7 * @version 1.0.0 */ const debounce = (func, wait = 500) => { let timer; return args => { clearTimeout(timer); timer = setTimeout(() => func(args), wait); }; }; /** * Initialize lp-toggle-enable components. * * Finds all `.lp-toggle-enable` elements and wires up toggle behavior. * Reads initial state from `data-enabled` attribute ("true"/"false"). * Calls `data-on-toggle` callback (if provided via options) on state change. * * HTML structure: * * * @param {string} selector CSS selector for toggle elements (default: '.lp-toggle-enable') * @param {Function} onToggle Optional callback( el, isEnabled ) called on state change * @since 4.4.5 * @version 1.0.0 */ window.lpToggleEnableInit = 0; const toggleEnable = (onToggle = null) => { if (window.lpToggleEnableInit) { return; } window.lpToggleEnableInit = 1; const selector = '.lp-toggle-enable'; const updateUI = (toggle, isEnabled) => { toggle.classList.toggle('is-enabled', isEnabled); const input = toggle.querySelector('.lp-toggle-enable__input'); if (input) { input.checked = isEnabled; input.value = isEnabled ? '1' : '0'; } }; // Delegate click handling via eventHandlers. eventHandlers('click', [{ selector, callBack: args => { const { e, target } = args; const toggle = target.closest(selector); if (!toggle || toggle.classList.contains('is-disabled')) { return; } e.preventDefault(); const isEnabled = !toggle.classList.contains('is-enabled'); updateUI(toggle, isEnabled); if ('function' === typeof onToggle) { onToggle(toggle, isEnabled); } } }]); }; /** * Initialize custom fullscreen view buttons. * * Delegates clicks on `.lp-btn-full-screen-view` buttons to * `lpToggleFullscreenView`. Reads the `data-target` attribute to find the * target element. Falls back to the button's parent element when * `data-target` is not provided. * * @since 4.4.5 * @version 1.0.0 */ window.lpFullScreenViewInit = 0; const fullScreenView = () => { if (window.lpFullScreenViewInit) { return; } window.lpFullScreenViewInit = 1; let lastScrollY = 0; const lpToggleFullscreenView = (elTarget, elBtnFullScreen = null) => { const isFullscreen = elTarget.classList.contains(lpClassName.elFullScreen); if (isFullscreen) { elTarget.classList.remove(lpClassName.elFullScreen); document.documentElement.classList.remove('lp-full-screen-active'); window.scrollTo(0, lastScrollY); } else { lastScrollY = window.scrollY; elTarget.classList.add(lpClassName.elFullScreen); document.documentElement.classList.add('lp-full-screen-active'); } if (!isFullscreen) { if (!elTarget.querySelector(`.${lpClassName.elBtnFullScreenClose}`)) { const closeButton = document.createElement('button'); closeButton.type = 'button'; closeButton.className = lpClassName.elBtnFullScreenClose; closeButton.setAttribute('aria-label', 'Close'); closeButton.innerHTML = lpData.i18n.closeButtonFullScreen || 'Close ×'; closeButton.addEventListener('click', e => { e.preventDefault(); lpToggleFullscreenView(elTarget); }); elTarget.appendChild(closeButton); } } else { const closeButton = elTarget.querySelector(`.${lpClassName.elBtnFullScreenClose}`); if (closeButton) { closeButton.remove(); } } }; eventHandlers('click', [{ selector: lpClassName.elBtnFullScreen, callBack: args => { const { e, target } = args; const elBtnFullScreen = target.closest(lpClassName.elBtnFullScreen); if (!elBtnFullScreen) { console.log('No full screen button found'); return; } e.preventDefault(); let elTarget = null; const targetSelector = elBtnFullScreen.dataset.targetFullscreen; console.log(targetSelector); if (targetSelector) { elTarget = document.querySelector(targetSelector); } if (!elTarget) { console.log('No target element found'); return; } lpToggleFullscreenView(elTarget, elBtnFullScreen); } }]); }; /***/ }, /***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/toastify-js/src/toastify.css" /*!*****************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/toastify-js/src/toastify.css ***! \*****************************************************************************************/ (module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js"); /* harmony import */ var _css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); // Imports var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); // Module ___CSS_LOADER_EXPORT___.push([module.id, `/*! * Toastify js 1.12.0 * https://github.com/apvarun/toastify-js * @license MIT licensed * * Copyright (C) 2018 Varun A P */ .toastify { padding: 12px 20px; color: #ffffff; display: inline-block; box-shadow: 0 3px 6px -1px rgba(0, 0, 0, 0.12), 0 10px 36px -4px rgba(77, 96, 232, 0.3); background: -webkit-linear-gradient(315deg, #73a5ff, #5477f5); background: linear-gradient(135deg, #73a5ff, #5477f5); position: fixed; opacity: 0; transition: all 0.4s cubic-bezier(0.215, 0.61, 0.355, 1); border-radius: 2px; cursor: pointer; text-decoration: none; max-width: calc(50% - 20px); z-index: 2147483647; } .toastify.on { opacity: 1; } .toast-close { background: transparent; border: 0; color: white; cursor: pointer; font-family: inherit; font-size: 1em; opacity: 0.4; padding: 0 5px; } .toastify-right { right: 15px; } .toastify-left { left: 15px; } .toastify-top { top: -150px; } .toastify-bottom { bottom: -150px; } .toastify-rounded { border-radius: 25px; } .toastify-avatar { width: 1.5em; height: 1.5em; margin: -7px 5px; border-radius: 2px; } .toastify-center { margin-left: auto; margin-right: auto; left: 0; right: 0; max-width: fit-content; max-width: -moz-fit-content; } @media only screen and (max-width: 360px) { .toastify-right, .toastify-left { margin-left: auto; margin-right: auto; left: 0; right: 0; max-width: fit-content; } } `, "",{"version":3,"sources":["webpack://./node_modules/toastify-js/src/toastify.css"],"names":[],"mappings":"AAAA;;;;;;EAME;;AAEF;IACI,kBAAkB;IAClB,cAAc;IACd,qBAAqB;IACrB,uFAAuF;IACvF,6DAA6D;IAC7D,qDAAqD;IACrD,eAAe;IACf,UAAU;IACV,wDAAwD;IACxD,kBAAkB;IAClB,eAAe;IACf,qBAAqB;IACrB,2BAA2B;IAC3B,mBAAmB;AACvB;;AAEA;IACI,UAAU;AACd;;AAEA;IACI,uBAAuB;IACvB,SAAS;IACT,YAAY;IACZ,eAAe;IACf,oBAAoB;IACpB,cAAc;IACd,YAAY;IACZ,cAAc;AAClB;;AAEA;IACI,WAAW;AACf;;AAEA;IACI,UAAU;AACd;;AAEA;IACI,WAAW;AACf;;AAEA;IACI,cAAc;AAClB;;AAEA;IACI,mBAAmB;AACvB;;AAEA;IACI,YAAY;IACZ,aAAa;IACb,gBAAgB;IAChB,kBAAkB;AACtB;;AAEA;IACI,iBAAiB;IACjB,kBAAkB;IAClB,OAAO;IACP,QAAQ;IACR,sBAAsB;IACtB,2BAA2B;AAC/B;;AAEA;IACI;QACI,iBAAiB;QACjB,kBAAkB;QAClB,OAAO;QACP,QAAQ;QACR,sBAAsB;IAC1B;AACJ","sourcesContent":["/*!\n * Toastify js 1.12.0\n * https://github.com/apvarun/toastify-js\n * @license MIT licensed\n *\n * Copyright (C) 2018 Varun A P\n */\n\n.toastify {\n padding: 12px 20px;\n color: #ffffff;\n display: inline-block;\n box-shadow: 0 3px 6px -1px rgba(0, 0, 0, 0.12), 0 10px 36px -4px rgba(77, 96, 232, 0.3);\n background: -webkit-linear-gradient(315deg, #73a5ff, #5477f5);\n background: linear-gradient(135deg, #73a5ff, #5477f5);\n position: fixed;\n opacity: 0;\n transition: all 0.4s cubic-bezier(0.215, 0.61, 0.355, 1);\n border-radius: 2px;\n cursor: pointer;\n text-decoration: none;\n max-width: calc(50% - 20px);\n z-index: 2147483647;\n}\n\n.toastify.on {\n opacity: 1;\n}\n\n.toast-close {\n background: transparent;\n border: 0;\n color: white;\n cursor: pointer;\n font-family: inherit;\n font-size: 1em;\n opacity: 0.4;\n padding: 0 5px;\n}\n\n.toastify-right {\n right: 15px;\n}\n\n.toastify-left {\n left: 15px;\n}\n\n.toastify-top {\n top: -150px;\n}\n\n.toastify-bottom {\n bottom: -150px;\n}\n\n.toastify-rounded {\n border-radius: 25px;\n}\n\n.toastify-avatar {\n width: 1.5em;\n height: 1.5em;\n margin: -7px 5px;\n border-radius: 2px;\n}\n\n.toastify-center {\n margin-left: auto;\n margin-right: auto;\n left: 0;\n right: 0;\n max-width: fit-content;\n max-width: -moz-fit-content;\n}\n\n@media only screen and (max-width: 360px) {\n .toastify-right, .toastify-left {\n margin-left: auto;\n margin-right: auto;\n left: 0;\n right: 0;\n max-width: fit-content;\n }\n}\n"],"sourceRoot":""}]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); /***/ }, /***/ "./node_modules/css-loader/dist/runtime/api.js" /*!*****************************************************!*\ !*** ./node_modules/css-loader/dist/runtime/api.js ***! \*****************************************************/ (module) { "use strict"; /* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ module.exports = function (cssWithMappingToString) { var list = []; // return the list of modules as css string list.toString = function toString() { return this.map(function (item) { var content = ""; var needLayer = typeof item[5] !== "undefined"; if (item[4]) { content += "@supports (".concat(item[4], ") {"); } if (item[2]) { content += "@media ".concat(item[2], " {"); } if (needLayer) { content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {"); } content += cssWithMappingToString(item); if (needLayer) { content += "}"; } if (item[2]) { content += "}"; } if (item[4]) { content += "}"; } return content; }).join(""); }; // import a list of modules into the list list.i = function i(modules, media, dedupe, supports, layer) { if (typeof modules === "string") { modules = [[null, modules, undefined]]; } var alreadyImportedModules = {}; if (dedupe) { for (var k = 0; k < this.length; k++) { var id = this[k][0]; if (id != null) { alreadyImportedModules[id] = true; } } } for (var _k = 0; _k < modules.length; _k++) { var item = [].concat(modules[_k]); if (dedupe && alreadyImportedModules[item[0]]) { continue; } if (typeof layer !== "undefined") { if (typeof item[5] === "undefined") { item[5] = layer; } else { item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}"); item[5] = layer; } } if (media) { if (!item[2]) { item[2] = media; } else { item[1] = "@media ".concat(item[2], " {").concat(item[1], "}"); item[2] = media; } } if (supports) { if (!item[4]) { item[4] = "".concat(supports); } else { item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}"); item[4] = supports; } } list.push(item); } }; return list; }; /***/ }, /***/ "./node_modules/css-loader/dist/runtime/sourceMaps.js" /*!************************************************************!*\ !*** ./node_modules/css-loader/dist/runtime/sourceMaps.js ***! \************************************************************/ (module) { "use strict"; module.exports = function (item) { var content = item[1]; var cssMapping = item[3]; if (!cssMapping) { return content; } if (typeof btoa === "function") { var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping)))); var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64); var sourceMapping = "/*# ".concat(data, " */"); return [content].concat([sourceMapping]).join("\n"); } return [content].join("\n"); }; /***/ }, /***/ "./node_modules/toastify-js/src/toastify.css" /*!***************************************************!*\ !*** ./node_modules/toastify-js/src/toastify.css ***! \***************************************************/ (__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); /* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js"); /* harmony import */ var _style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js"); /* harmony import */ var _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"); /* harmony import */ var _style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js"); /* harmony import */ var _style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js"); /* harmony import */ var _style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var _css_loader_dist_cjs_js_toastify_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../css-loader/dist/cjs.js!./toastify.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/toastify-js/src/toastify.css"); var options = {}; options.styleTagTransform = (_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default()); options.setAttributes = (_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default()); options.insert = _style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head"); options.domAPI = (_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default()); options.insertStyleElement = (_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default()); var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_toastify_css__WEBPACK_IMPORTED_MODULE_6__["default"], options); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_toastify_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _css_loader_dist_cjs_js_toastify_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _css_loader_dist_cjs_js_toastify_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined); /***/ }, /***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js" /*!****************************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***! \****************************************************************************/ (module) { "use strict"; var stylesInDOM = []; function getIndexByIdentifier(identifier) { var result = -1; for (var i = 0; i < stylesInDOM.length; i++) { if (stylesInDOM[i].identifier === identifier) { result = i; break; } } return result; } function modulesToDom(list, options) { var idCountMap = {}; var identifiers = []; for (var i = 0; i < list.length; i++) { var item = list[i]; var id = options.base ? item[0] + options.base : item[0]; var count = idCountMap[id] || 0; var identifier = "".concat(id, " ").concat(count); idCountMap[id] = count + 1; var indexByIdentifier = getIndexByIdentifier(identifier); var obj = { css: item[1], media: item[2], sourceMap: item[3], supports: item[4], layer: item[5] }; if (indexByIdentifier !== -1) { stylesInDOM[indexByIdentifier].references++; stylesInDOM[indexByIdentifier].updater(obj); } else { var updater = addElementStyle(obj, options); options.byIndex = i; stylesInDOM.splice(i, 0, { identifier: identifier, updater: updater, references: 1 }); } identifiers.push(identifier); } return identifiers; } function addElementStyle(obj, options) { var api = options.domAPI(options); api.update(obj); var updater = function updater(newObj) { if (newObj) { if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) { return; } api.update(obj = newObj); } else { api.remove(); } }; return updater; } module.exports = function (list, options) { options = options || {}; list = list || []; var lastIdentifiers = modulesToDom(list, options); return function update(newList) { newList = newList || []; for (var i = 0; i < lastIdentifiers.length; i++) { var identifier = lastIdentifiers[i]; var index = getIndexByIdentifier(identifier); stylesInDOM[index].references--; } var newLastIdentifiers = modulesToDom(newList, options); for (var _i = 0; _i < lastIdentifiers.length; _i++) { var _identifier = lastIdentifiers[_i]; var _index = getIndexByIdentifier(_identifier); if (stylesInDOM[_index].references === 0) { stylesInDOM[_index].updater(); stylesInDOM.splice(_index, 1); } } lastIdentifiers = newLastIdentifiers; }; }; /***/ }, /***/ "./node_modules/style-loader/dist/runtime/insertBySelector.js" /*!********************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/insertBySelector.js ***! \********************************************************************/ (module) { "use strict"; var memo = {}; /* istanbul ignore next */ function getTarget(target) { if (typeof memo[target] === "undefined") { var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { try { // This will throw an exception if access to iframe is blocked // due to cross-origin restrictions styleTarget = styleTarget.contentDocument.head; } catch (e) { // istanbul ignore next styleTarget = null; } } memo[target] = styleTarget; } return memo[target]; } /* istanbul ignore next */ function insertBySelector(insert, style) { var target = getTarget(insert); if (!target) { throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); } target.appendChild(style); } module.exports = insertBySelector; /***/ }, /***/ "./node_modules/style-loader/dist/runtime/insertStyleElement.js" /*!**********************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/insertStyleElement.js ***! \**********************************************************************/ (module) { "use strict"; /* istanbul ignore next */ function insertStyleElement(options) { var element = document.createElement("style"); options.setAttributes(element, options.attributes); options.insert(element, options.options); return element; } module.exports = insertStyleElement; /***/ }, /***/ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js" /*!**********************************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***! \**********************************************************************************/ (module, __unused_webpack_exports, __webpack_require__) { "use strict"; /* istanbul ignore next */ function setAttributesWithoutAttributes(styleElement) { var nonce = true ? __webpack_require__.nc : 0; if (nonce) { styleElement.setAttribute("nonce", nonce); } } module.exports = setAttributesWithoutAttributes; /***/ }, /***/ "./node_modules/style-loader/dist/runtime/styleDomAPI.js" /*!***************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/styleDomAPI.js ***! \***************************************************************/ (module) { "use strict"; /* istanbul ignore next */ function apply(styleElement, options, obj) { var css = ""; if (obj.supports) { css += "@supports (".concat(obj.supports, ") {"); } if (obj.media) { css += "@media ".concat(obj.media, " {"); } var needLayer = typeof obj.layer !== "undefined"; if (needLayer) { css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {"); } css += obj.css; if (needLayer) { css += "}"; } if (obj.media) { css += "}"; } if (obj.supports) { css += "}"; } var sourceMap = obj.sourceMap; if (sourceMap && typeof btoa !== "undefined") { css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */"); } // For old IE /* istanbul ignore if */ options.styleTagTransform(css, styleElement, options.options); } function removeStyleElement(styleElement) { // istanbul ignore if if (styleElement.parentNode === null) { return false; } styleElement.parentNode.removeChild(styleElement); } /* istanbul ignore next */ function domAPI(options) { if (typeof document === "undefined") { return { update: function update() {}, remove: function remove() {} }; } var styleElement = options.insertStyleElement(options); return { update: function update(obj) { apply(styleElement, options, obj); }, remove: function remove() { removeStyleElement(styleElement); } }; } module.exports = domAPI; /***/ }, /***/ "./node_modules/style-loader/dist/runtime/styleTagTransform.js" /*!*********************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/styleTagTransform.js ***! \*********************************************************************/ (module) { "use strict"; /* istanbul ignore next */ function styleTagTransform(css, styleElement) { if (styleElement.styleSheet) { styleElement.styleSheet.cssText = css; } else { while (styleElement.firstChild) { styleElement.removeChild(styleElement.firstChild); } styleElement.appendChild(document.createTextNode(css)); } } module.exports = styleTagTransform; /***/ }, /***/ "./node_modules/toastify-js/src/toastify.js" /*!**************************************************!*\ !*** ./node_modules/toastify-js/src/toastify.js ***! \**************************************************/ (module) { /*! * Toastify js 1.12.0 * https://github.com/apvarun/toastify-js * @license MIT licensed * * Copyright (C) 2018 Varun A P */ (function(root, factory) { if ( true && module.exports) { module.exports = factory(); } else { root.Toastify = factory(); } })(this, function(global) { // Object initialization var Toastify = function(options) { // Returning a new init object return new Toastify.lib.init(options); }, // Library version version = "1.12.0"; // Set the default global options Toastify.defaults = { oldestFirst: true, text: "Toastify is awesome!", node: undefined, duration: 3000, selector: undefined, callback: function () { }, destination: undefined, newWindow: false, close: false, gravity: "toastify-top", positionLeft: false, position: '', backgroundColor: '', avatar: "", className: "", stopOnFocus: true, onClick: function () { }, offset: {x: 0, y: 0}, escapeMarkup: true, ariaLive: 'polite', style: {background: ''} }; // Defining the prototype of the object Toastify.lib = Toastify.prototype = { toastify: version, constructor: Toastify, // Initializing the object with required parameters init: function(options) { // Verifying and validating the input object if (!options) { options = {}; } // Creating the options object this.options = {}; this.toastElement = null; // Validating the options this.options.text = options.text || Toastify.defaults.text; // Display message this.options.node = options.node || Toastify.defaults.node; // Display content as node this.options.duration = options.duration === 0 ? 0 : options.duration || Toastify.defaults.duration; // Display duration this.options.selector = options.selector || Toastify.defaults.selector; // Parent selector this.options.callback = options.callback || Toastify.defaults.callback; // Callback after display this.options.destination = options.destination || Toastify.defaults.destination; // On-click destination this.options.newWindow = options.newWindow || Toastify.defaults.newWindow; // Open destination in new window this.options.close = options.close || Toastify.defaults.close; // Show toast close icon this.options.gravity = options.gravity === "bottom" ? "toastify-bottom" : Toastify.defaults.gravity; // toast position - top or bottom this.options.positionLeft = options.positionLeft || Toastify.defaults.positionLeft; // toast position - left or right this.options.position = options.position || Toastify.defaults.position; // toast position - left or right this.options.backgroundColor = options.backgroundColor || Toastify.defaults.backgroundColor; // toast background color this.options.avatar = options.avatar || Toastify.defaults.avatar; // img element src - url or a path this.options.className = options.className || Toastify.defaults.className; // additional class names for the toast this.options.stopOnFocus = options.stopOnFocus === undefined ? Toastify.defaults.stopOnFocus : options.stopOnFocus; // stop timeout on focus this.options.onClick = options.onClick || Toastify.defaults.onClick; // Callback after click this.options.offset = options.offset || Toastify.defaults.offset; // toast offset this.options.escapeMarkup = options.escapeMarkup !== undefined ? options.escapeMarkup : Toastify.defaults.escapeMarkup; this.options.ariaLive = options.ariaLive || Toastify.defaults.ariaLive; this.options.style = options.style || Toastify.defaults.style; if(options.backgroundColor) { this.options.style.background = options.backgroundColor; } // Returning the current object for chaining functions return this; }, // Building the DOM element buildToast: function() { // Validating if the options are defined if (!this.options) { throw "Toastify is not initialized"; } // Creating the DOM object var divElement = document.createElement("div"); divElement.className = "toastify on " + this.options.className; // Positioning toast to left or right or center if (!!this.options.position) { divElement.className += " toastify-" + this.options.position; } else { // To be depreciated in further versions if (this.options.positionLeft === true) { divElement.className += " toastify-left"; console.warn('Property `positionLeft` will be depreciated in further versions. Please use `position` instead.') } else { // Default position divElement.className += " toastify-right"; } } // Assigning gravity of element divElement.className += " " + this.options.gravity; if (this.options.backgroundColor) { // This is being deprecated in favor of using the style HTML DOM property console.warn('DEPRECATION NOTICE: "backgroundColor" is being deprecated. Please use the "style.background" property.'); } // Loop through our style object and apply styles to divElement for (var property in this.options.style) { divElement.style[property] = this.options.style[property]; } // Announce the toast to screen readers if (this.options.ariaLive) { divElement.setAttribute('aria-live', this.options.ariaLive) } // Adding the toast message/node if (this.options.node && this.options.node.nodeType === Node.ELEMENT_NODE) { // If we have a valid node, we insert it divElement.appendChild(this.options.node) } else { if (this.options.escapeMarkup) { divElement.innerText = this.options.text; } else { divElement.innerHTML = this.options.text; } if (this.options.avatar !== "") { var avatarElement = document.createElement("img"); avatarElement.src = this.options.avatar; avatarElement.className = "toastify-avatar"; if (this.options.position == "left" || this.options.positionLeft === true) { // Adding close icon on the left of content divElement.appendChild(avatarElement); } else { // Adding close icon on the right of content divElement.insertAdjacentElement("afterbegin", avatarElement); } } } // Adding a close icon to the toast if (this.options.close === true) { // Create a span for close element var closeElement = document.createElement("button"); closeElement.type = "button"; closeElement.setAttribute("aria-label", "Close"); closeElement.className = "toast-close"; closeElement.innerHTML = "✖"; // Triggering the removal of toast from DOM on close click closeElement.addEventListener( "click", function(event) { event.stopPropagation(); this.removeElement(this.toastElement); window.clearTimeout(this.toastElement.timeOutValue); }.bind(this) ); //Calculating screen width var width = window.innerWidth > 0 ? window.innerWidth : screen.width; // Adding the close icon to the toast element // Display on the right if screen width is less than or equal to 360px if ((this.options.position == "left" || this.options.positionLeft === true) && width > 360) { // Adding close icon on the left of content divElement.insertAdjacentElement("afterbegin", closeElement); } else { // Adding close icon on the right of content divElement.appendChild(closeElement); } } // Clear timeout while toast is focused if (this.options.stopOnFocus && this.options.duration > 0) { var self = this; // stop countdown divElement.addEventListener( "mouseover", function(event) { window.clearTimeout(divElement.timeOutValue); } ) // add back the timeout divElement.addEventListener( "mouseleave", function() { divElement.timeOutValue = window.setTimeout( function() { // Remove the toast from DOM self.removeElement(divElement); }, self.options.duration ) } ) } // Adding an on-click destination path if (typeof this.options.destination !== "undefined") { divElement.addEventListener( "click", function(event) { event.stopPropagation(); if (this.options.newWindow === true) { window.open(this.options.destination, "_blank"); } else { window.location = this.options.destination; } }.bind(this) ); } if (typeof this.options.onClick === "function" && typeof this.options.destination === "undefined") { divElement.addEventListener( "click", function(event) { event.stopPropagation(); this.options.onClick(); }.bind(this) ); } // Adding offset if(typeof this.options.offset === "object") { var x = getAxisOffsetAValue("x", this.options); var y = getAxisOffsetAValue("y", this.options); var xOffset = this.options.position == "left" ? x : "-" + x; var yOffset = this.options.gravity == "toastify-top" ? y : "-" + y; divElement.style.transform = "translate(" + xOffset + "," + yOffset + ")"; } // Returning the generated element return divElement; }, // Displaying the toast showToast: function() { // Creating the DOM object for the toast this.toastElement = this.buildToast(); // Getting the root element to with the toast needs to be added var rootElement; if (typeof this.options.selector === "string") { rootElement = document.getElementById(this.options.selector); } else if (this.options.selector instanceof HTMLElement || (typeof ShadowRoot !== 'undefined' && this.options.selector instanceof ShadowRoot)) { rootElement = this.options.selector; } else { rootElement = document.body; } // Validating if root element is present in DOM if (!rootElement) { throw "Root element is not defined"; } // Adding the DOM element var elementToInsert = Toastify.defaults.oldestFirst ? rootElement.firstChild : rootElement.lastChild; rootElement.insertBefore(this.toastElement, elementToInsert); // Repositioning the toasts in case multiple toasts are present Toastify.reposition(); if (this.options.duration > 0) { this.toastElement.timeOutValue = window.setTimeout( function() { // Remove the toast from DOM this.removeElement(this.toastElement); }.bind(this), this.options.duration ); // Binding `this` for function invocation } // Supporting function chaining return this; }, hideToast: function() { if (this.toastElement.timeOutValue) { clearTimeout(this.toastElement.timeOutValue); } this.removeElement(this.toastElement); }, // Removing the element from the DOM removeElement: function(toastElement) { // Hiding the element // toastElement.classList.remove("on"); toastElement.className = toastElement.className.replace(" on", ""); // Removing the element from DOM after transition end window.setTimeout( function() { // remove options node if any if (this.options.node && this.options.node.parentNode) { this.options.node.parentNode.removeChild(this.options.node); } // Remove the element from the DOM, only when the parent node was not removed before. if (toastElement.parentNode) { toastElement.parentNode.removeChild(toastElement); } // Calling the callback function this.options.callback.call(toastElement); // Repositioning the toasts again Toastify.reposition(); }.bind(this), 400 ); // Binding `this` for function invocation }, }; // Positioning the toasts on the DOM Toastify.reposition = function() { // Top margins with gravity var topLeftOffsetSize = { top: 15, bottom: 15, }; var topRightOffsetSize = { top: 15, bottom: 15, }; var offsetSize = { top: 15, bottom: 15, }; // Get all toast messages on the DOM var allToasts = document.getElementsByClassName("toastify"); var classUsed; // Modifying the position of each toast element for (var i = 0; i < allToasts.length; i++) { // Getting the applied gravity if (containsClass(allToasts[i], "toastify-top") === true) { classUsed = "toastify-top"; } else { classUsed = "toastify-bottom"; } var height = allToasts[i].offsetHeight; classUsed = classUsed.substr(9, classUsed.length-1) // Spacing between toasts var offset = 15; var width = window.innerWidth > 0 ? window.innerWidth : screen.width; // Show toast in center if screen with less than or equal to 360px if (width <= 360) { // Setting the position allToasts[i].style[classUsed] = offsetSize[classUsed] + "px"; offsetSize[classUsed] += height + offset; } else { if (containsClass(allToasts[i], "toastify-left") === true) { // Setting the position allToasts[i].style[classUsed] = topLeftOffsetSize[classUsed] + "px"; topLeftOffsetSize[classUsed] += height + offset; } else { // Setting the position allToasts[i].style[classUsed] = topRightOffsetSize[classUsed] + "px"; topRightOffsetSize[classUsed] += height + offset; } } } // Supporting function chaining return this; }; // Helper function to get offset. function getAxisOffsetAValue(axis, options) { if(options.offset[axis]) { if(isNaN(options.offset[axis])) { return options.offset[axis]; } else { return options.offset[axis] + 'px'; } } return '0px'; } function containsClass(elem, yourClass) { if (!elem || typeof yourClass !== "string") { return false; } else if ( elem.className && elem.className .trim() .split(/\s+/gi) .indexOf(yourClass) > -1 ) { return true; } else { return false; } } // Setting up the prototype for the init object Toastify.lib.init.prototype = Toastify.lib; // Returning the Toastify function to be assigned to the window object/module return Toastify; }); /***/ }, /***/ "./node_modules/@orchidjs/sifter/dist/esm/sifter.js" /*!**********************************************************!*\ !*** ./node_modules/@orchidjs/sifter/dist/esm/sifter.js ***! \**********************************************************/ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Sifter: () => (/* binding */ Sifter), /* harmony export */ cmp: () => (/* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_0__.cmp), /* harmony export */ getAttr: () => (/* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_0__.getAttr), /* harmony export */ getAttrNesting: () => (/* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_0__.getAttrNesting), /* harmony export */ getPattern: () => (/* reexport safe */ _orchidjs_unicode_variants__WEBPACK_IMPORTED_MODULE_1__.getPattern), /* harmony export */ iterate: () => (/* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_0__.iterate), /* harmony export */ propToArray: () => (/* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_0__.propToArray), /* harmony export */ scoreValue: () => (/* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_0__.scoreValue) /* harmony export */ }); /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.js */ "./node_modules/@orchidjs/sifter/dist/esm/utils.js"); /* harmony import */ var _orchidjs_unicode_variants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @orchidjs/unicode-variants */ "./node_modules/@orchidjs/unicode-variants/dist/esm/index.js"); /* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./types.js */ "./node_modules/@orchidjs/sifter/dist/esm/types.js"); /** * sifter.js * Copyright (c) 2013–2020 Brian Reavis & contributors * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this * file except in compliance with the License. You may obtain a copy of the License at: * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF * ANY KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. * * @author Brian Reavis */ class Sifter { items; // []|{}; settings; /** * Textually searches arrays and hashes of objects * by property (or multiple properties). Designed * specifically for autocomplete. * */ constructor(items, settings) { this.items = items; this.settings = settings || { diacritics: true }; } ; /** * Splits a search string into an array of individual * regexps to be used to match results. * */ tokenize(query, respect_word_boundaries, weights) { if (!query || !query.length) return []; const tokens = []; const words = query.split(/\s+/); var field_regex; if (weights) { field_regex = new RegExp('^(' + Object.keys(weights).map(_orchidjs_unicode_variants__WEBPACK_IMPORTED_MODULE_1__.escape_regex).join('|') + ')\:(.*)$'); } words.forEach((word) => { let field_match; let field = null; let regex = null; // look for "field:query" tokens if (field_regex && (field_match = word.match(field_regex))) { field = field_match[1]; word = field_match[2]; } if (word.length > 0) { if (this.settings.diacritics) { regex = (0,_orchidjs_unicode_variants__WEBPACK_IMPORTED_MODULE_1__.getPattern)(word) || null; } else { regex = (0,_orchidjs_unicode_variants__WEBPACK_IMPORTED_MODULE_1__.escape_regex)(word); } if (regex && respect_word_boundaries) regex = "\\b" + regex; } tokens.push({ string: word, regex: regex ? new RegExp(regex, 'iu') : null, field: field, }); }); return tokens; } ; /** * Returns a function to be used to score individual results. * * Good matches will have a higher score than poor matches. * If an item is not a match, 0 will be returned by the function. * * @returns {T.ScoreFn} */ getScoreFunction(query, options) { var search = this.prepareSearch(query, options); return this._getScoreFunction(search); } /** * @returns {T.ScoreFn} * */ _getScoreFunction(search) { const tokens = search.tokens, token_count = tokens.length; if (!token_count) { return function () { return 0; }; } const fields = search.options.fields, weights = search.weights, field_count = fields.length, getAttrFn = search.getAttrFn; if (!field_count) { return function () { return 1; }; } /** * Calculates the score of an object * against the search query. * */ const scoreObject = (function () { if (field_count === 1) { return function (token, data) { const field = fields[0].field; return (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.scoreValue)(getAttrFn(data, field), token, weights[field] || 1); }; } return function (token, data) { var sum = 0; // is the token specific to a field? if (token.field) { const value = getAttrFn(data, token.field); if (!token.regex && value) { sum += (1 / field_count); } else { sum += (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.scoreValue)(value, token, 1); } } else { (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.iterate)(weights, (weight, field) => { sum += (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.scoreValue)(getAttrFn(data, field), token, weight); }); } return sum / field_count; }; })(); if (token_count === 1) { return function (data) { return scoreObject(tokens[0], data); }; } if (search.options.conjunction === 'and') { return function (data) { var score, sum = 0; for (let token of tokens) { score = scoreObject(token, data); if (score <= 0) return 0; sum += score; } return sum / token_count; }; } else { return function (data) { var sum = 0; (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.iterate)(tokens, (token) => { sum += scoreObject(token, data); }); return sum / token_count; }; } } ; /** * Returns a function that can be used to compare two * results, for sorting purposes. If no sorting should * be performed, `null` will be returned. * * @return function(a,b) */ getSortFunction(query, options) { var search = this.prepareSearch(query, options); return this._getSortFunction(search); } _getSortFunction(search) { var implicit_score, sort_flds = []; const self = this, options = search.options, sort = (!search.query && options.sort_empty) ? options.sort_empty : options.sort; if (typeof sort == 'function') { return sort.bind(this); } /** * Fetches the specified sort field value * from a search result item. * */ const get_field = function (name, result) { if (name === '$score') return result.score; return search.getAttrFn(self.items[result.id], name); }; // parse options if (sort) { for (let s of sort) { if (search.query || s.field !== '$score') { sort_flds.push(s); } } } // the "$score" field is implied to be the primary // sort field, unless it's manually specified if (search.query) { implicit_score = true; for (let fld of sort_flds) { if (fld.field === '$score') { implicit_score = false; break; } } if (implicit_score) { sort_flds.unshift({ field: '$score', direction: 'desc' }); } // without a search.query, all items will have the same score } else { sort_flds = sort_flds.filter((fld) => fld.field !== '$score'); } // build function const sort_flds_count = sort_flds.length; if (!sort_flds_count) { return null; } return function (a, b) { var result, field; for (let sort_fld of sort_flds) { field = sort_fld.field; let multiplier = sort_fld.direction === 'desc' ? -1 : 1; result = multiplier * (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.cmp)(get_field(field, a), get_field(field, b)); if (result) return result; } return 0; }; } ; /** * Parses a search query and returns an object * with tokens and fields ready to be populated * with results. * */ prepareSearch(query, optsUser) { const weights = {}; var options = Object.assign({}, optsUser); (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.propToArray)(options, 'sort'); (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.propToArray)(options, 'sort_empty'); // convert fields to new format if (options.fields) { (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.propToArray)(options, 'fields'); const fields = []; options.fields.forEach((field) => { if (typeof field == 'string') { field = { field: field, weight: 1 }; } fields.push(field); weights[field.field] = ('weight' in field) ? field.weight : 1; }); options.fields = fields; } return { options: options, query: query.toLowerCase().trim(), tokens: this.tokenize(query, options.respect_word_boundaries, weights), total: 0, items: [], weights: weights, getAttrFn: (options.nesting) ? _utils_js__WEBPACK_IMPORTED_MODULE_0__.getAttrNesting : _utils_js__WEBPACK_IMPORTED_MODULE_0__.getAttr, }; } ; /** * Searches through all items and returns a sorted array of matches. * */ search(query, options) { var self = this, score, search; search = this.prepareSearch(query, options); options = search.options; query = search.query; // generate result scoring function const fn_score = options.score || self._getScoreFunction(search); // perform search and sort if (query.length) { (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.iterate)(self.items, (item, id) => { score = fn_score(item); if (options.filter === false || score > 0) { search.items.push({ 'score': score, 'id': id }); } }); } else { (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.iterate)(self.items, (_, id) => { search.items.push({ 'score': 1, 'id': id }); }); } const fn_sort = self._getSortFunction(search); if (fn_sort) search.items.sort(fn_sort); // apply limits search.total = search.items.length; if (typeof options.limit === 'number') { search.items = search.items.slice(0, options.limit); } return search; } ; } //# sourceMappingURL=sifter.js.map /***/ }, /***/ "./node_modules/@orchidjs/sifter/dist/esm/types.js" /*!*********************************************************!*\ !*** ./node_modules/@orchidjs/sifter/dist/esm/types.js ***! \*********************************************************/ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); //# sourceMappingURL=types.js.map /***/ }, /***/ "./node_modules/@orchidjs/sifter/dist/esm/utils.js" /*!*********************************************************!*\ !*** ./node_modules/@orchidjs/sifter/dist/esm/utils.js ***! \*********************************************************/ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ cmp: () => (/* binding */ cmp), /* harmony export */ getAttr: () => (/* binding */ getAttr), /* harmony export */ getAttrNesting: () => (/* binding */ getAttrNesting), /* harmony export */ iterate: () => (/* binding */ iterate), /* harmony export */ propToArray: () => (/* binding */ propToArray), /* harmony export */ scoreValue: () => (/* binding */ scoreValue) /* harmony export */ }); /* harmony import */ var _orchidjs_unicode_variants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @orchidjs/unicode-variants */ "./node_modules/@orchidjs/unicode-variants/dist/esm/index.js"); /** * A property getter resolving dot-notation * @param {Object} obj The root object to fetch property on * @param {String} name The optionally dotted property name to fetch * @return {Object} The resolved property value */ const getAttr = (obj, name) => { if (!obj) return; return obj[name]; }; /** * A property getter resolving dot-notation * @param {Object} obj The root object to fetch property on * @param {String} name The optionally dotted property name to fetch * @return {Object} The resolved property value */ const getAttrNesting = (obj, name) => { if (!obj) return; var part, names = name.split("."); while ((part = names.shift()) && (obj = obj[part])) ; return obj; }; /** * Calculates how close of a match the * given value is against a search token. * */ const scoreValue = (value, token, weight) => { var score, pos; if (!value) return 0; value = value + ''; if (token.regex == null) return 0; pos = value.search(token.regex); if (pos === -1) return 0; score = token.string.length / value.length; if (pos === 0) score += 0.5; return score * weight; }; /** * Cast object property to an array if it exists and has a value * */ const propToArray = (obj, key) => { var value = obj[key]; if (typeof value == 'function') return value; if (value && !Array.isArray(value)) { obj[key] = [value]; } }; /** * Iterates over arrays and hashes. * * ``` * iterate(this.items, function(item, id) { * // invoked for each item * }); * ``` * */ const iterate = (object, callback) => { if (Array.isArray(object)) { object.forEach(callback); } else { for (var key in object) { if (object.hasOwnProperty(key)) { callback(object[key], key); } } } }; const cmp = (a, b) => { if (typeof a === 'number' && typeof b === 'number') { return a > b ? 1 : (a < b ? -1 : 0); } a = (0,_orchidjs_unicode_variants__WEBPACK_IMPORTED_MODULE_0__.asciifold)(a + '').toLowerCase(); b = (0,_orchidjs_unicode_variants__WEBPACK_IMPORTED_MODULE_0__.asciifold)(b + '').toLowerCase(); if (a > b) return 1; if (b > a) return -1; return 0; }; //# sourceMappingURL=utils.js.map /***/ }, /***/ "./node_modules/@orchidjs/unicode-variants/dist/esm/index.js" /*!*******************************************************************!*\ !*** ./node_modules/@orchidjs/unicode-variants/dist/esm/index.js ***! \*******************************************************************/ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ _asciifold: () => (/* binding */ _asciifold), /* harmony export */ asciifold: () => (/* binding */ asciifold), /* harmony export */ code_points: () => (/* binding */ code_points), /* harmony export */ escape_regex: () => (/* reexport safe */ _regex_js__WEBPACK_IMPORTED_MODULE_0__.escape_regex), /* harmony export */ generateMap: () => (/* binding */ generateMap), /* harmony export */ generateSets: () => (/* binding */ generateSets), /* harmony export */ generator: () => (/* binding */ generator), /* harmony export */ getPattern: () => (/* binding */ getPattern), /* harmony export */ initialize: () => (/* binding */ initialize), /* harmony export */ mapSequence: () => (/* binding */ mapSequence), /* harmony export */ normalize: () => (/* binding */ normalize), /* harmony export */ substringsToPattern: () => (/* binding */ substringsToPattern), /* harmony export */ unicode_map: () => (/* binding */ unicode_map) /* harmony export */ }); /* harmony import */ var _regex_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./regex.js */ "./node_modules/@orchidjs/unicode-variants/dist/esm/regex.js"); /* harmony import */ var _strings_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./strings.js */ "./node_modules/@orchidjs/unicode-variants/dist/esm/strings.js"); const code_points = [[0, 65535]]; const accent_pat = '[\u0300-\u036F\u{b7}\u{2be}\u{2bc}]'; let unicode_map; let multi_char_reg; const max_char_length = 3; const latin_convert = {}; const latin_condensed = { '/': '⁄∕', '0': '߀', "a": "ⱥɐɑ", "aa": "ꜳ", "ae": "æǽǣ", "ao": "ꜵ", "au": "ꜷ", "av": "ꜹꜻ", "ay": "ꜽ", "b": "ƀɓƃ", "c": "ꜿƈȼↄ", "d": "đɗɖᴅƌꮷԁɦ", "e": "ɛǝᴇɇ", "f": "ꝼƒ", "g": "ǥɠꞡᵹꝿɢ", "h": "ħⱨⱶɥ", "i": "ɨı", "j": "ɉȷ", "k": "ƙⱪꝁꝃꝅꞣ", "l": "łƚɫⱡꝉꝇꞁɭ", "m": "ɱɯϻ", "n": "ꞥƞɲꞑᴎлԉ", "o": "øǿɔɵꝋꝍᴑ", "oe": "œ", "oi": "ƣ", "oo": "ꝏ", "ou": "ȣ", "p": "ƥᵽꝑꝓꝕρ", "q": "ꝗꝙɋ", "r": "ɍɽꝛꞧꞃ", "s": "ßȿꞩꞅʂ", "t": "ŧƭʈⱦꞇ", "th": "þ", "tz": "ꜩ", "u": "ʉ", "v": "ʋꝟʌ", "vy": "ꝡ", "w": "ⱳ", "y": "ƴɏỿ", "z": "ƶȥɀⱬꝣ", "hv": "ƕ" }; for (let latin in latin_condensed) { let unicode = latin_condensed[latin] || ''; for (let i = 0; i < unicode.length; i++) { let char = unicode.substring(i, i + 1); latin_convert[char] = latin; } } const convert_pat = new RegExp(Object.keys(latin_convert).join('|') + '|' + accent_pat, 'gu'); /** * Initialize the unicode_map from the give code point ranges */ const initialize = (_code_points) => { if (unicode_map !== undefined) return; unicode_map = generateMap(_code_points || code_points); }; /** * Helper method for normalize a string * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize */ const normalize = (str, form = 'NFKD') => str.normalize(form); /** * Remove accents without reordering string * calling str.normalize('NFKD') on \u{594}\u{595}\u{596} becomes \u{596}\u{594}\u{595} * via https://github.com/krisk/Fuse/issues/133#issuecomment-318692703 */ const asciifold = (str) => { return Array.from(str).reduce( /** * @param {string} result * @param {string} char */ (result, char) => { return result + _asciifold(char); }, ''); }; const _asciifold = (str) => { str = normalize(str) .toLowerCase() .replace(convert_pat, (/** @type {string} */ char) => { return latin_convert[char] || ''; }); //return str; return normalize(str, 'NFC'); }; /** * Generate a list of unicode variants from the list of code points */ function* generator(code_points) { for (const [code_point_min, code_point_max] of code_points) { for (let i = code_point_min; i <= code_point_max; i++) { let composed = String.fromCharCode(i); let folded = asciifold(composed); if (folded == composed.toLowerCase()) { continue; } // skip when folded is a string longer than 3 characters long // bc the resulting regex patterns will be long // eg: // folded صلى الله عليه وسلم length 18 code point 65018 // folded جل جلاله length 8 code point 65019 if (folded.length > max_char_length) { continue; } if (folded.length == 0) { continue; } yield { folded: folded, composed: composed, code_point: i }; } } } /** * Generate a unicode map from the list of code points */ const generateSets = (code_points) => { const unicode_sets = {}; const addMatching = (folded, to_add) => { /** @type {Set} */ const folded_set = unicode_sets[folded] || new Set(); const patt = new RegExp('^' + (0,_regex_js__WEBPACK_IMPORTED_MODULE_0__.setToPattern)(folded_set) + '$', 'iu'); if (to_add.match(patt)) { return; } folded_set.add((0,_regex_js__WEBPACK_IMPORTED_MODULE_0__.escape_regex)(to_add)); unicode_sets[folded] = folded_set; }; for (let value of generator(code_points)) { addMatching(value.folded, value.folded); addMatching(value.folded, value.composed); } return unicode_sets; }; /** * Generate a unicode map from the list of code points * ae => (?:(?:ae|Æ|Ǽ|Ǣ)|(?:A|Ⓐ|A...)(?:E|ɛ|Ⓔ...)) */ const generateMap = (code_points) => { const unicode_sets = generateSets(code_points); const unicode_map = {}; let multi_char = []; for (let folded in unicode_sets) { let set = unicode_sets[folded]; if (set) { unicode_map[folded] = (0,_regex_js__WEBPACK_IMPORTED_MODULE_0__.setToPattern)(set); } if (folded.length > 1) { multi_char.push((0,_regex_js__WEBPACK_IMPORTED_MODULE_0__.escape_regex)(folded)); } } multi_char.sort((a, b) => b.length - a.length); const multi_char_patt = (0,_regex_js__WEBPACK_IMPORTED_MODULE_0__.arrayToPattern)(multi_char); multi_char_reg = new RegExp('^' + multi_char_patt, 'u'); return unicode_map; }; /** * Map each element of an array from its folded value to all possible unicode matches */ const mapSequence = (strings, min_replacement = 1) => { let chars_replaced = 0; strings = strings.map((str) => { if (unicode_map[str]) { chars_replaced += str.length; } return unicode_map[str] || str; }); if (chars_replaced >= min_replacement) { return (0,_regex_js__WEBPACK_IMPORTED_MODULE_0__.sequencePattern)(strings); } return ''; }; /** * Convert a short string and split it into all possible patterns * Keep a pattern only if min_replacement is met * * 'abc' * => [['abc'],['ab','c'],['a','bc'],['a','b','c']] * => ['abc-pattern','ab-c-pattern'...] */ const substringsToPattern = (str, min_replacement = 1) => { min_replacement = Math.max(min_replacement, str.length - 1); return (0,_regex_js__WEBPACK_IMPORTED_MODULE_0__.arrayToPattern)((0,_strings_js__WEBPACK_IMPORTED_MODULE_1__.allSubstrings)(str).map((sub_pat) => { return mapSequence(sub_pat, min_replacement); })); }; /** * Convert an array of sequences into a pattern * [{start:0,end:3,length:3,substr:'iii'}...] => (?:iii...) */ const sequencesToPattern = (sequences, all = true) => { let min_replacement = sequences.length > 1 ? 1 : 0; return (0,_regex_js__WEBPACK_IMPORTED_MODULE_0__.arrayToPattern)(sequences.map((sequence) => { let seq = []; const len = all ? sequence.length() : sequence.length() - 1; for (let j = 0; j < len; j++) { seq.push(substringsToPattern(sequence.substrs[j] || '', min_replacement)); } return (0,_regex_js__WEBPACK_IMPORTED_MODULE_0__.sequencePattern)(seq); })); }; /** * Return true if the sequence is already in the sequences */ const inSequences = (needle_seq, sequences) => { for (const seq of sequences) { if (seq.start != needle_seq.start || seq.end != needle_seq.end) { continue; } if (seq.substrs.join('') !== needle_seq.substrs.join('')) { continue; } let needle_parts = needle_seq.parts; const filter = (part) => { for (const needle_part of needle_parts) { if (needle_part.start === part.start && needle_part.substr === part.substr) { return false; } if (part.length == 1 || needle_part.length == 1) { continue; } // check for overlapping parts // a = ['::=','=='] // b = ['::','==='] // a = ['r','sm'] // b = ['rs','m'] if (part.start < needle_part.start && part.end > needle_part.start) { return true; } if (needle_part.start < part.start && needle_part.end > part.start) { return true; } } return false; }; let filtered = seq.parts.filter(filter); if (filtered.length > 0) { continue; } return true; } return false; }; class Sequence { parts; substrs; start; end; constructor() { this.parts = []; this.substrs = []; this.start = 0; this.end = 0; } add(part) { if (part) { this.parts.push(part); this.substrs.push(part.substr); this.start = Math.min(part.start, this.start); this.end = Math.max(part.end, this.end); } } last() { return this.parts[this.parts.length - 1]; } length() { return this.parts.length; } clone(position, last_piece) { let clone = new Sequence(); let parts = JSON.parse(JSON.stringify(this.parts)); let last_part = parts.pop(); for (const part of parts) { clone.add(part); } let last_substr = last_piece.substr.substring(0, position - last_part.start); let clone_last_len = last_substr.length; clone.add({ start: last_part.start, end: last_part.start + clone_last_len, length: clone_last_len, substr: last_substr }); return clone; } } /** * Expand a regular expression pattern to include unicode variants * eg /a/ becomes /aⓐaẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐɑAⒶAÀÁÂẦẤẪẨÃĀĂẰẮẴẲȦǠÄǞẢÅǺǍȀȂẠẬẶḀĄȺⱯ/ * * Issue: * ﺊﺋ [ 'ﺊ = \\u{fe8a}', 'ﺋ = \\u{fe8b}' ] * becomes: ئئ [ 'ي = \\u{64a}', 'ٔ = \\u{654}', 'ي = \\u{64a}', 'ٔ = \\u{654}' ] * * İIJ = IIJ = ⅡJ * * 1/2/4 */ const getPattern = (str) => { initialize(); str = asciifold(str); let pattern = ''; let sequences = [new Sequence()]; for (let i = 0; i < str.length; i++) { let substr = str.substring(i); let match = substr.match(multi_char_reg); const char = str.substring(i, i + 1); const match_str = match ? match[0] : null; // loop through sequences // add either the char or multi_match let overlapping = []; let added_types = new Set(); for (const sequence of sequences) { const last_piece = sequence.last(); if (!last_piece || last_piece.length == 1 || last_piece.end <= i) { // if we have a multi match if (match_str) { const len = match_str.length; sequence.add({ start: i, end: i + len, length: len, substr: match_str }); added_types.add('1'); } else { sequence.add({ start: i, end: i + 1, length: 1, substr: char }); added_types.add('2'); } } else if (match_str) { let clone = sequence.clone(i, last_piece); const len = match_str.length; clone.add({ start: i, end: i + len, length: len, substr: match_str }); overlapping.push(clone); } else { // don't add char // adding would create invalid patterns: 234 => [2,34,4] added_types.add('3'); } } // if we have overlapping if (overlapping.length > 0) { // ['ii','iii'] before ['i','i','iii'] overlapping = overlapping.sort((a, b) => { return a.length() - b.length(); }); for (let clone of overlapping) { // don't add if we already have an equivalent sequence if (inSequences(clone, sequences)) { continue; } sequences.push(clone); } continue; } // if we haven't done anything unique // clean up the patterns // helps keep patterns smaller // if str = 'r₨㎧aarss', pattern will be 446 instead of 655 if (i > 0 && added_types.size == 1 && !added_types.has('3')) { pattern += sequencesToPattern(sequences, false); let new_seq = new Sequence(); const old_seq = sequences[0]; if (old_seq) { new_seq.add(old_seq.last()); } sequences = [new_seq]; } } pattern += sequencesToPattern(sequences, true); return pattern; }; //# sourceMappingURL=index.js.map /***/ }, /***/ "./node_modules/@orchidjs/unicode-variants/dist/esm/regex.js" /*!*******************************************************************!*\ !*** ./node_modules/@orchidjs/unicode-variants/dist/esm/regex.js ***! \*******************************************************************/ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ arrayToPattern: () => (/* binding */ arrayToPattern), /* harmony export */ escape_regex: () => (/* binding */ escape_regex), /* harmony export */ hasDuplicates: () => (/* binding */ hasDuplicates), /* harmony export */ maxValueLength: () => (/* binding */ maxValueLength), /* harmony export */ sequencePattern: () => (/* binding */ sequencePattern), /* harmony export */ setToPattern: () => (/* binding */ setToPattern), /* harmony export */ unicodeLength: () => (/* binding */ unicodeLength) /* harmony export */ }); /** * Convert array of strings to a regular expression * ex ['ab','a'] => (?:ab|a) * ex ['a','b'] => [ab] */ const arrayToPattern = (chars) => { chars = chars.filter(Boolean); if (chars.length < 2) { return chars[0] || ''; } return (maxValueLength(chars) == 1) ? '[' + chars.join('') + ']' : '(?:' + chars.join('|') + ')'; }; const sequencePattern = (array) => { if (!hasDuplicates(array)) { return array.join(''); } let pattern = ''; let prev_char_count = 0; const prev_pattern = () => { if (prev_char_count > 1) { pattern += '{' + prev_char_count + '}'; } }; array.forEach((char, i) => { if (char === array[i - 1]) { prev_char_count++; return; } prev_pattern(); pattern += char; prev_char_count = 1; }); prev_pattern(); return pattern; }; /** * Convert array of strings to a regular expression * ex ['ab','a'] => (?:ab|a) * ex ['a','b'] => [ab] */ const setToPattern = (chars) => { let array = Array.from(chars); return arrayToPattern(array); }; /** * https://stackoverflow.com/questions/7376598/in-javascript-how-do-i-check-if-an-array-has-duplicate-values */ const hasDuplicates = (array) => { return (new Set(array)).size !== array.length; }; /** * https://stackoverflow.com/questions/63006601/why-does-u-throw-an-invalid-escape-error */ const escape_regex = (str) => { return (str + '').replace(/([\$\(\)\*\+\.\?\[\]\^\{\|\}\\])/gu, '\\$1'); }; /** * Return the max length of array values */ const maxValueLength = (array) => { return array.reduce((longest, value) => Math.max(longest, unicodeLength(value)), 0); }; const unicodeLength = (str) => { return Array.from(str).length; }; //# sourceMappingURL=regex.js.map /***/ }, /***/ "./node_modules/@orchidjs/unicode-variants/dist/esm/strings.js" /*!*********************************************************************!*\ !*** ./node_modules/@orchidjs/unicode-variants/dist/esm/strings.js ***! \*********************************************************************/ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ allSubstrings: () => (/* binding */ allSubstrings) /* harmony export */ }); /** * Get all possible combinations of substrings that add up to the given string * https://stackoverflow.com/questions/30169587/find-all-the-combination-of-substrings-that-add-up-to-the-given-string */ const allSubstrings = (input) => { if (input.length === 1) return [[input]]; let result = []; const start = input.substring(1); const suba = allSubstrings(start); suba.forEach(function (subresult) { let tmp = subresult.slice(0); tmp[0] = input.charAt(0) + tmp[0]; result.push(tmp); tmp = subresult.slice(0); tmp.unshift(input.charAt(0)); result.push(tmp); }); return result; }; //# sourceMappingURL=strings.js.map /***/ }, /***/ "./node_modules/tom-select/dist/esm/constants.js" /*!*******************************************************!*\ !*** ./node_modules/tom-select/dist/esm/constants.js ***! \*******************************************************/ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ IS_MAC: () => (/* binding */ IS_MAC), /* harmony export */ KEY_A: () => (/* binding */ KEY_A), /* harmony export */ KEY_BACKSPACE: () => (/* binding */ KEY_BACKSPACE), /* harmony export */ KEY_DELETE: () => (/* binding */ KEY_DELETE), /* harmony export */ KEY_DOWN: () => (/* binding */ KEY_DOWN), /* harmony export */ KEY_ESC: () => (/* binding */ KEY_ESC), /* harmony export */ KEY_LEFT: () => (/* binding */ KEY_LEFT), /* harmony export */ KEY_RETURN: () => (/* binding */ KEY_RETURN), /* harmony export */ KEY_RIGHT: () => (/* binding */ KEY_RIGHT), /* harmony export */ KEY_SHORTCUT: () => (/* binding */ KEY_SHORTCUT), /* harmony export */ KEY_TAB: () => (/* binding */ KEY_TAB), /* harmony export */ KEY_UP: () => (/* binding */ KEY_UP) /* harmony export */ }); const KEY_A = 65; const KEY_RETURN = 13; const KEY_ESC = 27; const KEY_LEFT = 37; const KEY_UP = 38; const KEY_RIGHT = 39; const KEY_DOWN = 40; const KEY_BACKSPACE = 8; const KEY_DELETE = 46; const KEY_TAB = 9; const IS_MAC = typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent); const KEY_SHORTCUT = IS_MAC ? 'metaKey' : 'ctrlKey'; // ctrl key or apple key for ma //# sourceMappingURL=constants.js.map /***/ }, /***/ "./node_modules/tom-select/dist/esm/contrib/highlight.js" /*!***************************************************************!*\ !*** ./node_modules/tom-select/dist/esm/contrib/highlight.js ***! \***************************************************************/ (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ highlight: () => (/* binding */ highlight), /* harmony export */ removeHighlight: () => (/* binding */ removeHighlight) /* harmony export */ }); /* harmony import */ var _vanilla_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../vanilla.js */ "./node_modules/tom-select/dist/esm/vanilla.js"); /** * highlight v3 | MIT license | Johann Burkard * Highlights arbitrary terms in a node. * * - Modified by Marshal 2011-6-24 (added regex) * - Modified by Brian Reavis 2012-8-27 (cleanup) */ const highlight = (element, regex) => { if (regex === null) return; // convet string to regex if (typeof regex === 'string') { if (!regex.length) return; regex = new RegExp(regex, 'i'); } // Wrap matching part of text node with highlighting , e.g. // Soccer -> Soccer for regex = /soc/i const highlightText = (node) => { var match = node.data.match(regex); if (match && node.data.length > 0) { var spannode = document.createElement('span'); spannode.className = 'highlight'; var middlebit = node.splitText(match.index); middlebit.splitText(match[0].length); var middleclone = middlebit.cloneNode(true); spannode.appendChild(middleclone); (0,_vanilla_js__WEBPACK_IMPORTED_MODULE_0__.replaceNode)(middlebit, spannode); return 1; } return 0; }; // Recurse element node, looking for child text nodes to highlight, unless element // is childless,