{"version":3,"file":"street-suggest.min.js","names":["configs","window","createUUID","crypto","randomUUID","e","runAutoSuggestScript","config","key","JSON","stringify","sessionBasedAutocomplete","location","search","indexOf","console","log","$","activateSuggestInputLength","streetInput","concat","streetId","streetNrInput","streetNrId","plzInput","plzId","cityInput","cityId","stateInput","stateId","countryInput","countryId","sessionToken","suggestContainer","appendTo","suggestListController","getSuggestionList","input","AbortController","promise","fetch","language","signal","then","response","json","result","predictions","Promise","resolve","getSuggestDetails","placeID","calcPositionOfSuggest","display","arguments","length","undefined","inputRef","suggestContainerRef","inputPos","getBoundingClientRect","top","scrollY","height","left","scrollX","style","position","zIndex","width","createSuggestList","suggests","empty","forEach","suggest","li","description","click","applySuggest","append","place_id","place","handleSuggestSelect","is_street_number_hidden","is_street_number_before_street","componentForm","street_number","route","locality","administrative_area_level_1","country","postal_code","elementsMap","sanitizedValues","country_input","document","getElementById","zipcode_input","getValueOfField","id","field","value","previous_country","previous_zipcode","country_name","address_components","item","addressType","types","val","is_country_changed","is_zipcode_changed","Object","keys","elementId","disabled","trigger","initAutoCompleteAttribute","attr","disableBrowserSuggest","enableBrowserSuggest","checkInputBrowserSuggest","enterTimeout","hasAutoFill","bind","clearTimeout","abort","setTimeout","originalEvent","animationName"],"sources":["../../app/libs/legacy-street-suggest/legacy-street-suggest.ts"],"sourcesContent":["/* eslint-disable */\n\n/**\n * Generated Code - Original file ist legacy-street-suggest.ts\n */\n\nimport {\n InterfacePlaceDetail,\n InterfacePlacesList,\n} from '../orderform-widgets/src/lib/components/inputs-generator/address-suggest-plugin/interface';\n\ninterface AutoSuggestConfig {\n streetId: string;\n streetNrId: string;\n plzId: string;\n cityId: string;\n stateId: string;\n countryId: string;\n is_street_number_hidden: boolean;\n is_street_number_before_street: boolean;\n language: string;\n}\n\ndeclare const $;\n\nconst configs: AutoSuggestConfig[] = window['AutoSuggestConfigs'] || [];\nwindow['initedConfigs'] = window['initedConfigs'] || {};\n\nconst createUUID = () => {\n try {\n return crypto.randomUUID();\n } catch (e) {\n return 'uuid-not-supported';\n }\n};\n\nfunction runAutoSuggestScript(config: AutoSuggestConfig) {\n const key = JSON.stringify(config); // generate key by config\n const sessionBasedAutocomplete = false;\n\n if (window.location.search.indexOf('test_skip_autocomplete=1') >= 0) {\n return;\n }\n\n /**\n * Prevent multible loads by configuration\n */\n if (window['initedConfigs'][key]) {\n console.log('prevent multible load for', key);\n return false;\n } else {\n window['initedConfigs'][key] = true;\n }\n\n if (config && $) {\n const activateSuggestInputLength = 2;\n const streetInput = $(`#${config.streetId}`);\n const streetNrInput = $(`#${config.streetNrId}`);\n const plzInput = $(`#${config.plzId}`);\n const cityInput = $(`#${config.cityId}`);\n const stateInput = $(`#${config.stateId}`);\n const countryInput = $(`#${config.countryId}`);\n let sessionToken = createUUID();\n\n /**\n * Create initial container for street results\n * and add this to body\n */\n const suggestContainer = $(\n ''\n ).appendTo('body');\n\n // Expose a hook for JavaScript when auto fill is shown.\n // JavaScript can capture 'animationstart' events\n $(``).appendTo('head');\n\n let suggestListController: AbortController;\n const getSuggestionList = (\n input: string,\n sessionToken: string\n ): Promise => {\n suggestListController = new AbortController();\n const promise = fetch(\n `/v2/api/public/autocomplete?input=${input}&language=${\n config.language\n }&types=address${\n sessionBasedAutocomplete ? '&sessiontoken=' + sessionToken : ''\n }`,\n {\n signal: suggestListController.signal,\n }\n ).then((response) => response.json());\n return promise\n .then(\n (result: InterfacePlacesList.RootObject) => result?.predictions || []\n )\n .catch(() => {\n return Promise.resolve([]);\n });\n };\n\n /**\n * Get place details for list item by place ID\n * @param placeID\n * @param sessionToken\n */\n const getSuggestDetails = (\n placeID: string,\n sessionToken: string\n ): Promise => {\n return fetch(\n `/v2/api/public/autocomplete/place?place_id=${placeID}&language=${\n config.language\n }&fields=address_components${\n sessionBasedAutocomplete ? '&sessiontoken=' + sessionToken : ''\n }`\n )\n .then((response) => response.json())\n .then((result: InterfacePlaceDetail.RootObject) => result.result);\n };\n\n /**\n * calculate position of the suggest container\n * @param display\n */\n const calcPositionOfSuggest = (display: 'block' | 'none' = 'block') => {\n const inputRef = streetInput[0];\n const suggestContainerRef = suggestContainer[0];\n const inputPos = inputRef.getBoundingClientRect();\n const top = inputPos.top + window.scrollY + inputPos.height;\n const left = inputPos.left + window.scrollX;\n suggestContainerRef.style.display = display;\n suggestContainerRef.style.position = 'absolute';\n suggestContainerRef.style.zIndex = '999';\n suggestContainerRef.style.top = top + 'px';\n suggestContainerRef.style.left = left + 'px';\n suggestContainerRef.style.width = inputPos.width + 'px';\n };\n\n /**\n * Update list container with new results\n * @param suggests\n */\n const createSuggestList = (\n suggests: InterfacePlacesList.Prediction[] = []\n ) => {\n suggestContainer.empty();\n suggests.forEach((suggest) => {\n const li = $(`
  • ${suggest.description}
  • `).click(() => {\n applySuggest(suggest);\n });\n suggestContainer.append(li);\n });\n };\n\n /**\n * Click on list item\n * @param suggest\n */\n const applySuggest = (suggest: InterfacePlacesList.Prediction) => {\n // MockResult\n getSuggestDetails(suggest.place_id, sessionToken).then((place) => {\n handleSuggestSelect(\n config.streetId,\n config.streetNrId,\n config.plzId,\n config.cityId,\n config.stateId,\n config.countryId,\n config.is_street_number_hidden,\n config.is_street_number_before_street,\n place\n );\n /*\n * Die Sitzung endet bei Google, wenn die Details abgefragt wurden.\n * Deshalb wird an dieser Stelle ein neues Token erzeugt.\n */\n sessionToken = createUUID();\n });\n };\n\n /**\n * Apply data of place to the fields (CI Fields)\n * @param streetId\n * @param streetNrId\n * @param plzId\n * @param cityId\n * @param stateId\n * @param countryId\n * @param is_street_number_hidden\n * @param is_street_number_before_street\n * @param place\n */\n const handleSuggestSelect = (\n streetId,\n streetNrId,\n plzId,\n cityId,\n stateId,\n countryId,\n is_street_number_hidden,\n is_street_number_before_street,\n place: InterfacePlaceDetail.Result\n ) => {\n /**\n * Default values & mappings\n */\n const componentForm = {\n street_number: 'short_name',\n route: 'long_name',\n locality: 'long_name',\n administrative_area_level_1: 'short_name',\n country: 'short_name',\n postal_code: 'short_name',\n };\n const elementsMap = {\n street_number: streetNrId,\n route: streetId,\n locality: cityId,\n administrative_area_level_1: stateId,\n country: countryId,\n postal_code: plzId,\n };\n const sanitizedValues = {\n street_number: '',\n route: '',\n locality: '',\n administrative_area_level_1: '',\n country: '',\n postal_code: '',\n };\n\n /**\n * Country element for event emit on change\n */\n const country_input = document.getElementById(\n elementsMap.country\n ) as HTMLSelectElement;\n const zipcode_input: HTMLElement = document.getElementById(\n elementsMap.postal_code\n );\n\n const getValueOfField = (id: string) => {\n const field = document.getElementById(id) as HTMLInputElement;\n return field.value;\n };\n const previous_country = getValueOfField(elementsMap.country);\n const previous_zipcode = getValueOfField(elementsMap.postal_code);\n\n let country_name = '';\n\n place.address_components.forEach((item) => {\n const addressType = item.types[0];\n if (componentForm[addressType]) {\n const val = item[componentForm[addressType]];\n if (typeof sanitizedValues[addressType] != 'undefined') {\n sanitizedValues[addressType] = val;\n if (addressType === 'country') {\n country_name = item['long_name'];\n }\n }\n }\n });\n\n // if suggest without country found, do nothing\n if (!sanitizedValues.country) {\n return;\n }\n\n // const is_country_valid = previous_country === sanitizedValues.country;\n // if (!is_country_valid) {\n // // @ts-ignore\n // var message = window.lang_form.form_err_no_delivery_to_country.replace(\n // /\\%s/,\n // country_name ? country_name : sanitizedValues.country\n // );\n // country_input.value = previous_country;\n // // @ts-ignore\n // window.setFormStatus(streetNrId, 'error', message);\n // return;\n // }\n\n const is_country_changed = sanitizedValues?.country != previous_country;\n const is_zipcode_changed =\n sanitizedValues?.postal_code != previous_zipcode;\n\n if (is_street_number_hidden) {\n const street_number = sanitizedValues.street_number;\n if (street_number) {\n sanitizedValues.route = is_street_number_before_street\n ? street_number + ' ' + sanitizedValues.route\n : sanitizedValues.route + ' ' + street_number;\n }\n }\n\n Object.keys(sanitizedValues).forEach((addressType) => {\n const val = sanitizedValues[addressType];\n const elementId = elementsMap[addressType];\n const input = document.getElementById(elementId) as HTMLInputElement;\n if (elementId && input) {\n input.disabled = false;\n input.value = val;\n $(input).trigger('focusout');\n }\n });\n\n if (is_country_changed) {\n $(country_input).trigger('change');\n }\n\n if (is_zipcode_changed) {\n $(zipcode_input).trigger('change');\n }\n };\n\n const initAutoCompleteAttribute = streetInput.attr('autocomplete');\n const disableBrowserSuggest = () => {\n streetInput.attr('autocomplete', 'new-password');\n };\n\n const enableBrowserSuggest = () => {\n if (initAutoCompleteAttribute) {\n streetInput.attr('autocomplete', initAutoCompleteAttribute);\n }\n };\n\n const checkInputBrowserSuggest = (value: string) => {\n if (value?.length > activateSuggestInputLength) {\n disableBrowserSuggest();\n } else {\n enableBrowserSuggest();\n }\n };\n\n /**\n * On enter to request for list\n */\n let enterTimeout = null,\n hasAutoFill = false;\n streetInput.bind('keyup', function () {\n if (hasAutoFill) {\n return;\n }\n const value = $(this).val();\n\n checkInputBrowserSuggest(value);\n\n // show results\n if (value.length > activateSuggestInputLength) {\n calcPositionOfSuggest('block');\n } else {\n calcPositionOfSuggest('none');\n return;\n }\n\n clearTimeout(enterTimeout);\n // Abort prev request if exists\n if (suggestListController) {\n suggestListController.abort();\n }\n enterTimeout = setTimeout(() => {\n getSuggestionList(value, sessionToken).then((suggests) => {\n createSuggestList(suggests);\n });\n }, 250);\n });\n\n streetInput.bind('animationstart', function (e) {\n switch (e.originalEvent.animationName) {\n case 'onAutoFillStart':\n hasAutoFill = true;\n clearTimeout(enterTimeout);\n break;\n case 'onAutoFillCancel':\n hasAutoFill = false;\n break;\n }\n });\n\n // display list on focus!!!\n streetInput.bind('focus', function () {\n calcPositionOfSuggest('block');\n });\n\n // hide list on focus!!!\n streetInput.bind('blur', function () {\n setTimeout(() => calcPositionOfSuggest('none'), 250);\n });\n\n /**\n * Initial start if value exists\n */\n if (streetInput.val()) {\n checkInputBrowserSuggest(streetInput.val());\n\n /**\n * get direct suggestion list\n */\n getSuggestionList(streetInput.val(), sessionToken).then((suggests) => {\n createSuggestList(suggests);\n });\n }\n }\n}\n\nconfigs.forEach((config) => runAutoSuggestScript(config));\n\n/* eslint-enable */\n"],"mappings":"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","ignoreList":[]}