{"version":3,"file":"js/application-96926a7e1c13a11bf28d.js","mappings":"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","sources":["webpack://heim-front/./app/packs/src/utils/ads_utils.ts","webpack://heim-front/./app/packs/src/polyfill/closest.ts","webpack://heim-front/./app/packs/entrypoints/application.ts","webpack://heim-front/./app/packs/src/utils/form_utils.ts","webpack://heim-front/./app/packs/src/utils/viewpoint_utils.ts","webpack://heim-front/./app/packs/src/utils/ga_utils.ts","webpack://heim-front/./app/packs/src/utils/image_utils.ts"],"sourcesContent":["export default (): any => {\n const loadAds = () => {\n if ((window as any).adsbygoogle) {\n const ads = document.getElementsByTagName('ins');\n for (let i = 0, l = ads.length; i < l; i += 1) {\n try {\n const adsbygoogle = (window as any).adsbygoogle || [];\n adsbygoogle.push({});\n } catch (e) {\n // noop\n }\n }\n }\n if ((window as any).googletag) {\n // NOTE: 下部固定オーバーレイ\n const divGptAd1684463101354 = document.getElementById('div-gpt-ad-1684463101354-0');\n if (divGptAd1684463101354 && !divGptAd1684463101354.innerHTML) {\n googletag.cmd.push(function () {\n googletag.display('div-gpt-ad-1684463101354-0');\n });\n if (divGptAd1684463101354.parentElement) {\n const fixedBanner = document.getElementsByClassName('p-fixedBanner');\n if (fixedBanner[0]) {\n divGptAd1684463101354.parentElement.style.display = 'none';\n } else {\n divGptAd1684463101354.parentElement.style.display = 'block';\n }\n }\n }\n }\n };\n return {\n loadAds,\n };\n};\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nexport default function polyfill(window: any) {\n const ElementPrototype = window.Element.prototype;\n\n if (typeof ElementPrototype.matches !== 'function') {\n ElementPrototype.matches =\n ElementPrototype.msMatchesSelector ||\n ElementPrototype.mozMatchesSelector ||\n ElementPrototype.webkitMatchesSelector ||\n function matches(selector: string) {\n const element = this;\n const elements = (element.document || element.ownerDocument).querySelectorAll(selector);\n let index = 0;\n\n while (elements[index] && elements[index] !== element) {\n index += 1;\n }\n\n return Boolean(elements[index]);\n };\n }\n\n if (typeof ElementPrototype.closest !== 'function') {\n ElementPrototype.closest = function closest(selector: string) {\n let element = this;\n\n while (element && element.nodeType === 1) {\n if (element.matches(selector)) {\n return element;\n }\n\n element = element.parentNode;\n }\n\n return null;\n };\n }\n}\n","/* eslint no-console:0 */\n\nimport 'core-js/stable';\nimport 'regenerator-runtime/runtime';\nimport { computed, createApp, defineAsyncComponent, nextTick, onMounted, ref, watch } from 'vue';\nimport Rails from 'rails-ujs';\nimport Vue3TouchEvents from 'vue3-touch-events';\nimport polyfill from '../src/polyfill/closest';\nimport adsUtils from '../src/utils/ads_utils';\nimport GaUtils from '../src/utils/ga_utils';\nimport ImageUtils from '../src/utils/image_utils';\nimport type { Ref } from 'vue';\n\npolyfill(window);\n\n// NOTE: Call before main code\nRails.start();\n\n// Init\n/* eslint-disable no-new */\nconst app = createApp({\n components: {\n SeeMoreButton: defineAsyncComponent(\n () => import(/* webpackChunkName: \"see_more_button\" */ '../src/components/see_more_button.vue'),\n ),\n JumpToTopButton: defineAsyncComponent(\n () => import(/* webpackChunkName: \"jump_to_top_button\" */ '../src/components/jump_to_top_button.vue'),\n ),\n SwipeImages: defineAsyncComponent(\n () => import(/* webpackChunkName: \"swipe_images\" */ '../src/components/swipe_images.vue'),\n ),\n Announcement: defineAsyncComponent(\n () => import(/* webpackChunkName: \"announcement\" */ '../src/components/announcement.vue'),\n ),\n UserProfileModal: defineAsyncComponent(\n () => import(/* webpackChunkName: \"user_profile_modal\" */ '../src/components/users/user_profile_modal.vue'),\n ),\n ShopPriceListModal: defineAsyncComponent(\n () =>\n import(/* webpackChunkName: \"shop_price_list_modal\" */ '../src/components/products/shop_price_list_modal.vue'),\n ),\n LightboxImages: defineAsyncComponent(\n () => import(/* webpackChunkName: \"light_box_images\" */ '../src/components/lightbox.vue'),\n ),\n },\n setup() {\n const { fitToWidthImage, fitImageSize, addFittingImageSizeClass } = ImageUtils();\n const { gaEvent } = GaUtils();\n const { loadAds } = adsUtils();\n const clientWidth = ref((window as any).document.body.clientWidth);\n const appPromotionBarRef = ref();\n const headerRef = ref();\n const userDescriptionRef = ref();\n const userDescriptionSpRef = ref();\n const userNameRef = ref();\n const userProfileImageRef = ref();\n const headerUserProfileImageRef = ref();\n const headerUserProfileImageSpRef = ref();\n const isMenuDisplaying = ref(false);\n const isModalDisplaying = ref(false);\n const scrollY = ref(0);\n\n const isMobile = computed(() => clientWidth.value <= 768);\n const isTablet = computed(() => clientWidth.value > 768 && clientWidth.value < 1025);\n const isDesktop = computed(() => clientWidth.value >= 1025);\n\n const getRefDomEle = (refTag: Ref) => refTag.value as unknown as HTMLElement;\n const adsPageScrollFollowing = (targetSelector: string) => {\n const target = document.querySelector(targetSelector);\n if (!target) return;\n const side = target.querySelector('.l-side');\n if (!side) return;\n const sideAds = side.querySelector('ins');\n if (!sideAds) return;\n const $headerEle = document.querySelector('.l-header');\n const $breadcrumbEle = document.querySelector('.p-breadcrumb');\n if ($headerEle && $breadcrumbEle) {\n const headerHeight: number = $headerEle.clientHeight;\n const navHeight: number = $breadcrumbEle.clientHeight;\n const contentStart: number = headerHeight + navHeight;\n const contentHeight: number = target.clientHeight;\n const contentEnd: number = contentStart + contentHeight;\n const bottomPadding = 20;\n if (window.pageYOffset < contentStart) {\n sideAds.style.position = 'relative';\n sideAds.style.top = 'auto';\n sideAds.style.bottom = '0';\n } else if (\n window.pageYOffset >= contentStart &&\n window.pageYOffset > contentEnd - sideAds.clientHeight - bottomPadding - 10\n ) {\n sideAds.style.position = 'absolute';\n sideAds.style.top = 'auto';\n sideAds.style.bottom = `${bottomPadding}px`;\n } else {\n sideAds.style.position = 'fixed';\n sideAds.style.top = '74px';\n sideAds.style.bottom = '0';\n }\n }\n };\n const setPageScrollEvents = () => {\n document.body.onscroll = () => {\n adsPageScrollFollowing('.ads-following');\n };\n };\n\n const setCategoryMenuEvents = () => {\n if (document.getElementById('category-menu')) {\n document.body.addEventListener('keyup', (event) => {\n if (event.code === 'Escape') {\n isMenuDisplaying.value = false;\n }\n });\n\n document.addEventListener('click', (event: Event) => {\n let target = event.target as HTMLElement;\n let isClickedInMenu = false;\n while (target.parentElement) {\n if (target.parentElement.getAttribute('id') === 'category-menu') {\n isClickedInMenu = true;\n break;\n }\n target = target.parentElement;\n }\n if (!isClickedInMenu) {\n isMenuDisplaying.value = false;\n }\n });\n }\n };\n const onScroll = () => {\n const appPromotionBar = getRefDomEle(appPromotionBarRef);\n if (!appPromotionBar) {\n return;\n }\n if (window.scrollY > appPromotionBar.getBoundingClientRect().height) {\n scrollY.value = window.scrollY;\n }\n };\n\n watch(scrollY, (newValue, oldValue) => {\n const appPromotionBar = getRefDomEle(appPromotionBarRef);\n if (appPromotionBar) {\n if (headerRef.value) {\n headerRef.value.style.top =\n newValue < oldValue ? '0px' : `-${appPromotionBar.getBoundingClientRect().height}px`;\n }\n }\n });\n\n onMounted(() => {\n // Set scroll events\n setPageScrollEvents();\n // Load ads\n loadAds();\n setTimeout(() => {\n loadAds();\n }, 1000);\n // set resize event\n nextTick(() => {\n window.addEventListener('resize', () => {\n clientWidth.value = window.document.body.clientWidth;\n });\n });\n // set ESC press event to close category menu\n setCategoryMenuEvents();\n // show app promotion bar\n if (isMobile.value || isTablet.value) {\n window.addEventListener('load', onScroll);\n window.addEventListener('scroll', onScroll);\n }\n });\n\n const sanitize = (str: string) => {\n const dummy = document.createElement('dummy');\n dummy.innerHTML = str;\n const scripts = dummy.getElementsByTagName('script');\n for (let i = 0, l = scripts.length; i < l; i += 1) {\n dummy.removeChild(scripts[i]);\n }\n return dummy.innerText;\n };\n const autolink = async (str: string) => {\n const module = await import(/* webpackChunkName: \"Autolinker\" */ 'autolinker');\n return module.default.link(str, {\n phone: false,\n stripPrefix: false,\n stripTrailingSlash: false,\n className: '',\n replaceFn: (match: any) => {\n const tag = match.buildTag();\n tag.setAttr('rel', 'nofollow noopener');\n return tag;\n },\n });\n };\n const onRefreshProfile = (event: { description: string; name: string; image: { url: string } }) => {\n // for emit('refresh-profile') in child components\n const userDescription = getRefDomEle(userDescriptionRef) as HTMLParagraphElement;\n const userDescriptionSp = getRefDomEle(userDescriptionSpRef) as HTMLParagraphElement;\n const userName = getRefDomEle(userNameRef) as HTMLParagraphElement;\n const userProfileImage = getRefDomEle(userProfileImageRef) as HTMLImageElement;\n const headerUserProfileImage = getRefDomEle(headerUserProfileImageRef) as HTMLImageElement;\n const headerUserProfileImageSp = getRefDomEle(headerUserProfileImageSpRef) as HTMLImageElement;\n autolink(sanitize(event.description)).then((description: string) => {\n userDescription.innerHTML = description;\n userDescriptionSp.innerHTML = description;\n });\n if (userName) {\n userName.innerText = event.name;\n }\n if (userProfileImage) {\n userProfileImage.srcset = event.image.url;\n }\n if (headerUserProfileImage) {\n headerUserProfileImage.srcset = event.image.url;\n }\n if (headerUserProfileImageSp) {\n headerUserProfileImageSp.srcset = event.image.url;\n }\n };\n\n const toggleCategoryMenu = () => {\n if (isMobile.value) {\n isModalDisplaying.value = !isModalDisplaying.value;\n } else {\n isMenuDisplaying.value = !isMenuDisplaying.value;\n }\n };\n const postSearchForm = (e: Event) => {\n const target = e.target as HTMLInputElement;\n const sort: string = target.value;\n const qs: string = window.location.search.slice(1);\n const qss: Array = qs.split('&');\n const queries: any = { sort: '' };\n for (let i = 0, l = qss.length; i < l; i += 1) {\n const [key, value] = qss[i].split('=');\n queries[key] = value;\n }\n queries.sort = sort;\n window.location.search = Object.keys(queries)\n .map((key) => `${key}=${queries[key]}`)\n .join('&');\n };\n const toggleCategoryAccordion = (e: Event) => {\n const currentTarget = e.currentTarget as HTMLElement;\n const $closestEle = currentTarget.closest('ul');\n if (!$closestEle) return;\n\n const parentCategory = $closestEle.children as HTMLCollectionOf;\n if (currentTarget.className !== 'is-active') {\n currentTarget.classList.add('is-active');\n for (let i = 0; i < parentCategory.length; i += 1) {\n const item = parentCategory.item(i);\n if (item && item.localName === 'ul') {\n item.style.display = 'block';\n }\n }\n } else {\n currentTarget.classList.remove('is-active');\n for (let i = 0; i < parentCategory.length; i += 1) {\n const item = parentCategory.item(i);\n if (item && item.localName === 'ul') {\n item.style.display = 'none';\n }\n }\n }\n };\n\n return {\n isMenuDisplaying,\n isModalDisplaying,\n clientWidth,\n userNameRef,\n appPromotionBarRef,\n headerRef,\n userDescriptionRef,\n userDescriptionSpRef,\n userProfileImageRef,\n headerUserProfileImageRef,\n headerUserProfileImageSpRef,\n isMobile,\n isTablet,\n isDesktop,\n gaEvent,\n fitToWidthImage,\n fitImageSize,\n addFittingImageSizeClass,\n onRefreshProfile,\n toggleCategoryAccordion,\n postSearchForm,\n toggleCategoryMenu,\n };\n },\n});\napp.use(Vue3TouchEvents);\napp.mount('#body-wrapper');\n","export function enableSubmitButton(): void {\n const buttons = document.querySelectorAll('input[type=\"submit\"]');\n for (let i = 0, l = buttons.length; i < l; i += 1) {\n buttons[i].removeAttribute('disabled');\n }\n}\n\nexport function disableSubmitButton(): void {\n const buttons = document.querySelectorAll('input[type=\"submit\"]');\n for (let i = 0, l = buttons.length; i < l; i += 1) {\n buttons[i].setAttribute('disabled', 'disabled');\n }\n}\n\nexport function formCsrfToken(): string {\n const metaElement = document.querySelector('meta[name=\"csrf-token\"]') as HTMLMetaElement;\n return metaElement.content;\n}\n\nexport function formApiKey(): string {\n const metaElement = document.querySelector('meta[name=\"api-key\"]') as HTMLMetaElement;\n return metaElement.content;\n}\n\nexport function isNewOrCreateAction(actionName: string | undefined): boolean {\n return actionName === 'new' || actionName === 'create';\n}\n\nexport function editOrUpdateAction(actionName: string | undefined): boolean {\n return actionName === 'edit' || actionName === 'update';\n}\n\nexport function formMethod(actionName: string): string {\n if (actionName === 'new' || actionName === 'create') {\n return 'post';\n }\n return 'patch';\n}\n","enum DeviceType {\n Mobile = 'mobile',\n Tablet = 'tablet',\n Desktop = 'desktop',\n}\n\nexport function detectWindowSize(): string {\n const size = window.innerWidth;\n if (size <= 768) {\n return DeviceType.Mobile;\n }\n if (size > 768 && size < 1024) {\n return DeviceType.Tablet;\n }\n return DeviceType.Desktop;\n}\n\nexport function isMobile(): boolean {\n return detectWindowSize() === DeviceType.Mobile;\n}\n\nexport function isTablet(): boolean {\n return detectWindowSize() === DeviceType.Tablet;\n}\n\nexport function isDesktop(): boolean {\n return detectWindowSize() === DeviceType.Desktop;\n}\n","import { detectWindowSize } from 'src/utils/viewpoint_utils';\n\nexport default (): any => {\n const gaEvent = (action: string, label: string, value?: string): void => {\n (window as any).gtag('event', action, { event_category: detectWindowSize(), event_label: label, value: value });\n };\n return {\n gaEvent,\n };\n};\n","import superagent from 'superagent/dist/superagent';\nimport SparkMD5 from 'spark-md5';\nimport { ref } from 'vue';\nimport { disableSubmitButton, enableSubmitButton } from 'src/utils/form_utils';\nimport { ImageContainer } from '../types/types';\n\nexport default (propContainer?: ImageContainer, emit?: NonNullable): any => {\n const isUploading = ref(false);\n const isMouseOver = ref(false);\n const isDragging = ref(false);\n const imageElementRef = ref(null);\n const ulElementRef = ref(null);\n const container = propContainer || { images: [] }; // propContainer is `reacitve` object, it's okay to mutate\n const showUploadingCircle = (): void => {\n isUploading.value = true;\n };\n const hideUploadingCircle = (): void => {\n isUploading.value = false;\n };\n const showDraggingOverlay = (): void => {\n isDragging.value = true;\n };\n const hideDraggingOverlay = (): void => {\n isDragging.value = false;\n };\n\n const fitImageSize = (e: Event | null, img: HTMLImageElement): void => {\n const image = img || (e.target as HTMLImageElement);\n // 実際の画像サイズで比較を行うため、一旦styleにnullを入れる\n image.style.width = null;\n image.style.height = null;\n if (image.height >= image.width) {\n image.style.width = 'auto';\n image.style.height = '100%';\n } else {\n image.style.width = '100%';\n image.style.height = 'auto';\n }\n };\n\n const addFittingImageSizeClass = (e: Event): void => {\n const image = e.target as HTMLImageElement;\n const picture = image.parentElement;\n const figure = picture.parentElement;\n if (image.height > image.width || image.height === image.width) {\n figure.classList.remove('is-horizontalImage');\n } else {\n figure.classList.add('is-horizontalImage');\n }\n picture.style.transition = 'opacity 300ms';\n picture.style.opacity = '1';\n figure.style.background = 'none';\n };\n\n const changeThumbnail = (e: Event): void => {\n // FIXME: update old code\n const mainImg = imageElementRef.value; // NOTE: old: $ref.img\n\n if (!mainImg.src && !mainImg.srcset) {\n return;\n }\n const currentAnchor = e.currentTarget as HTMLAnchorElement;\n const currentImg = currentAnchor.firstChild as HTMLImageElement;\n\n mainImg.src = currentImg.src;\n mainImg.srcset = currentImg.srcset;\n fitImageSize(null, mainImg);\n\n const imgsLink = (ulElementRef as unknown as Element).value.querySelectorAll('a');\n imgsLink.forEach((el: HTMLAnchorElement) => el.classList.remove('is-active'));\n currentAnchor.classList.add('is-active');\n };\n\n const clearSetFile = (event: Event): void => {\n // NOTE: For reattempting uploading\n const target = event.target as HTMLInputElement;\n if (target) {\n target.value = '';\n }\n };\n\n const clearImage = (index: number): void => {\n container.images.splice(index, 1);\n };\n\n // const rectangleMediumImage = (index: number) => {\n // const str = `${container.images[index].url}=${['c', `s320`].join('-')}`;\n // return str;\n // };\n\n const fitToWidthSingleImage = (image: any): string => {\n const imageUrl = image.url || '';\n if (imageUrl !== '' || imageUrl.indexOf('amazon.com') > 0 || imageUrl.indexOf('img.muji.com') > 0) {\n return imageUrl;\n }\n return `${image.url}=s320`;\n };\n\n const fitToWidthImage = (index: number): string => {\n const imageUrl = container.images[index].url || '';\n if (imageUrl !== '' || imageUrl.indexOf('amazon.com') > 0 || imageUrl.indexOf('img.muji.com') > 0) {\n return imageUrl;\n }\n return `${container.images[index].url}=s320`;\n };\n\n const changeOrder = (image: Partial<{ sort_order: number }>, direction: string): boolean => {\n const currentIndex = container.images.indexOf(image);\n if (direction === 'up') {\n if (currentIndex === 0) {\n return false;\n }\n const previmage = container.images[currentIndex - 1];\n container.images.splice(currentIndex - 1, 2, image, previmage);\n } else if (direction === 'down') {\n if (currentIndex === container.images.length - 1) {\n return false;\n }\n const nextimage = container.images[currentIndex + 1];\n container.images.splice(currentIndex, 2, nextimage, image);\n }\n for (let i = 0, l = container.images.length; i < l; i += 1) {\n container.images[i].sort_order = i + 1;\n }\n return true;\n };\n\n const directUploadImage = (event: Event): void => {\n const input = event.target as HTMLInputElement;\n const uploadImageFiles = Array.from(input.files);\n const maxUploadNum = 4;\n if ((container.images || []).length + uploadImageFiles.length > maxUploadNum) {\n alert(`投稿できる画像は、${maxUploadNum}枚までです。`); // eslint-disable-line no-alert\n hideUploadingCircle();\n enableSubmitButton();\n return;\n }\n uploadImageFiles.forEach((file: File) => {\n const reader = new FileReader() as any;\n const contentType = file.type;\n reader.onload = async (e: Event) => {\n const arrayBuf = e.target.result;\n (window as any).arrayBuf = arrayBuf;\n let resDirectUpload;\n try {\n resDirectUpload = await superagent\n .post(`/api/user_images/direct_upload`)\n .set('X-Csrf-Token', (document.querySelector('meta[name=\"csrf-token\"]') as HTMLMetaElement).content)\n .timeout(30000)\n .send({\n checksum: btoa(SparkMD5.ArrayBuffer.hash(arrayBuf, true)),\n content_type: contentType,\n });\n hideUploadingCircle();\n emit('uploaded');\n enableSubmitButton();\n } catch (err) {\n input.files = null;\n hideUploadingCircle();\n enableSubmitButton();\n }\n const directUpload = resDirectUpload.body.direct_upload;\n await superagent\n .put(directUpload.direct_upload_url)\n .set({\n accept: 'application/xml',\n 'content-type': directUpload.content_type,\n 'content-md5': directUpload.checksum,\n 'x-goog-acl': 'public-read',\n })\n .timeout(30000)\n .send(file.slice());\n const imageUrl = new URL(directUpload.direct_upload_url);\n imageUrl.search = '';\n if (input.multiple && container.images) {\n container.images.push({\n url: imageUrl.href,\n origin_url: imageUrl.href,\n name: directUpload.filename,\n sort_order: container.images.length + 1,\n });\n } else {\n container.image = {\n url: imageUrl.href,\n origin_url: imageUrl.href,\n name: directUpload.filename,\n sort_order: 1,\n };\n }\n };\n reader.readAsArrayBuffer(file);\n });\n emit('uploading');\n hideDraggingOverlay();\n showUploadingCircle();\n disableSubmitButton();\n };\n\n return {\n isUploading,\n isMouseOver,\n isDragging,\n imageElementRef,\n ulElementRef,\n showUploadingCircle,\n hideUploadingCircle,\n showDraggingOverlay,\n hideDraggingOverlay,\n fitImageSize,\n addFittingImageSizeClass,\n changeThumbnail,\n clearSetFile,\n clearImage,\n fitToWidthImage,\n fitToWidthSingleImage,\n changeOrder,\n directUploadImage,\n };\n};\n"],"names":["window","ElementPrototype","Element","prototype","matches","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","selector","element","this","elements","document","ownerDocument","querySelectorAll","index","Boolean","closest","nodeType","parentNode","polyfill","Rails","app","createApp","components","SeeMoreButton","defineAsyncComponent","JumpToTopButton","SwipeImages","Announcement","UserProfileModal","ShopPriceListModal","LightboxImages","setup","fitToWidthImage","fitImageSize","addFittingImageSizeClass","ImageUtils","gaEvent","GaUtils","loadAds","adsbygoogle","i","l","getElementsByTagName","length","push","e","googletag","divGptAd1684463101354","getElementById","innerHTML","cmd","display","parentElement","getElementsByClassName","style","clientWidth","ref","body","appPromotionBarRef","headerRef","userDescriptionRef","userDescriptionSpRef","userNameRef","userProfileImageRef","headerUserProfileImageRef","headerUserProfileImageSpRef","isMenuDisplaying","isModalDisplaying","scrollY","isMobile","computed","value","isTablet","isDesktop","getRefDomEle","refTag","setPageScrollEvents","onscroll","targetSelector","target","querySelector","side","sideAds","$headerEle","$breadcrumbEle","contentStart","clientHeight","contentEnd","bottomPadding","pageYOffset","position","top","bottom","adsPageScrollFollowing","onScroll","appPromotionBar","getBoundingClientRect","height","watch","newValue","oldValue","onMounted","setTimeout","nextTick","addEventListener","event","code","isClickedInMenu","getAttribute","onRefreshProfile","userDescription","userDescriptionSp","userName","userProfileImage","headerUserProfileImage","headerUserProfileImageSp","async","default","link","str","phone","stripPrefix","stripTrailingSlash","className","replaceFn","match","tag","buildTag","setAttr","autolink","dummy","createElement","scripts","removeChild","innerText","sanitize","description","then","name","srcset","image","url","toggleCategoryAccordion","currentTarget","$closestEle","parentCategory","children","classList","add","item","localName","remove","postSearchForm","sort","qss","location","search","slice","split","queries","key","Object","keys","map","join","toggleCategoryMenu","use","Vue3TouchEvents","mount","enableSubmitButton","buttons","removeAttribute","disableSubmitButton","setAttribute","formCsrfToken","content","formApiKey","isNewOrCreateAction","actionName","editOrUpdateAction","formMethod","DeviceType","detectWindowSize","size","innerWidth","Mobile","Tablet","Desktop","action","label","gtag","event_category","event_label","propContainer","emit","isUploading","isMouseOver","isDragging","imageElementRef","ulElementRef","container","images","showUploadingCircle","hideUploadingCircle","hideDraggingOverlay","img","width","showDraggingOverlay","picture","figure","transition","opacity","background","changeThumbnail","mainImg","src","currentAnchor","currentImg","firstChild","forEach","el","clearSetFile","clearImage","splice","imageUrl","indexOf","fitToWidthSingleImage","changeOrder","direction","currentIndex","previmage","nextimage","sort_order","directUploadImage","input","uploadImageFiles","Array","from","files","alert","file","reader","FileReader","contentType","type","onload","arrayBuf","result","resDirectUpload","superagent","set","timeout","send","checksum","btoa","SparkMD5","content_type","err","directUpload","direct_upload","direct_upload_url","accept","URL","multiple","href","origin_url","filename","readAsArrayBuffer"],"sourceRoot":""}