jamespot-react-core 1.1.116 → 1.1.118

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/build/562.bundle.js +235 -0
  2. package/build/562.bundle.js.map +1 -0
  3. package/build/app.bundle.js +541 -571
  4. package/build/app.bundle.js.map +1 -1
  5. package/build/assets/gif.605d1d151a01356b376d5c4ac2f40d19.png +0 -0
  6. package/build/socket.sharedworker.dd3721cc98a91b6cf80a.js +2 -0
  7. package/build/socket.sharedworker.dd3721cc98a91b6cf80a.js.map +1 -0
  8. package/build/src/components/Empty.d.ts +2 -1
  9. package/build/src/components/ExtensionProvider.component.d.ts +2 -2
  10. package/build/src/components/IfAppIsActivated.component.d.ts +1 -1
  11. package/build/src/components/RTProvider.component.d.ts +1 -1
  12. package/build/src/components/Toaster.d.ts +2 -1
  13. package/build/src/components/TwoColLayout.d.ts +5 -5
  14. package/build/src/components/editors/Editor.d.ts +2 -1
  15. package/build/src/components/editors/EditorPopup.d.ts +2 -1
  16. package/build/src/components/editors/EditorTabWidgets.d.ts +2 -1
  17. package/build/src/components/editors/EditorTabWrapper.d.ts +2 -1
  18. package/build/src/components/editors/EditorWrapper.d.ts +2 -1
  19. package/build/src/components/editors/EditorsPortal.d.ts +3 -2
  20. package/build/src/components/editors/style.d.ts +2 -2
  21. package/build/src/components/widgets/Widget.d.ts +3 -2
  22. package/build/src/components/widgets/WidgetLayer/WidgetLayer.d.ts +3 -3
  23. package/build/src/components/widgets/WidgetList/WidgetList.d.ts +5 -3
  24. package/build/src/components/widgets/WidgetState.d.ts +2 -1
  25. package/build/src/components/widgets/WidgetWrapperCore.d.ts +2 -1
  26. package/build/src/components/widgets/components/WidgetUploader.d.ts +15 -0
  27. package/build/src/components/widgets/utils.d.ts +0 -7
  28. package/build/src/components/widgets/wrapper/JRCWidgetArticleAttachmentWrapper.d.ts +10 -0
  29. package/build/src/components/widgets/wrapper/JRCWidgetArticleGalleryWrapper.d.ts +8 -0
  30. package/build/src/components/widgets/wrapper/JRCWidgetArticleImageWrapper.d.ts +8 -0
  31. package/build/src/components/widgets/wrapper/JRCWidgetArticleTitleWrapper.d.ts +11 -0
  32. package/build/src/displayer/DisplayForm.component.d.ts +2 -2
  33. package/build/src/displayer/components/DisplayRender.d.ts +8 -8
  34. package/build/src/displayer/components/inputs/Date.d.ts +3 -2
  35. package/build/src/displayer/components/inputs/DefaultInput.d.ts +2 -1
  36. package/build/src/displayer/components/inputs/InputEmail.d.ts +2 -1
  37. package/build/src/displayer/components/inputs/InputRichText.d.ts +2 -1
  38. package/build/src/displayer/components/inputs/InputSelect.d.ts +3 -2
  39. package/build/src/displayer/components/inputs/InputTaxonomy.d.ts +3 -2
  40. package/build/src/displayer/components/inputs/InputTextarea.d.ts +2 -1
  41. package/build/src/displayer/components/inputs/OrientedLink.d.ts +2 -1
  42. package/build/src/displayer/components/inputs/Radio.d.ts +3 -2
  43. package/build/src/displayer/displayer.utils.d.ts +1 -1
  44. package/build/src/displayer/types.d.ts +14 -14
  45. package/build/src/displayer/useDisplay.d.ts +2 -1
  46. package/build/src/hooks/useWindowDimension.d.ts +2 -2
  47. package/build/src/redux/slice/Generic.actions.d.ts +1 -1
  48. package/build/src/registry/ext-component-list.d.ts +3 -1
  49. package/build/src/registry/types.d.ts +9 -9
  50. package/build/src/utils/translation.d.ts +3 -3
  51. package/build/src/utils/types.d.ts +18 -14
  52. package/package.json +93 -94
  53. package/build/155.bundle.js +0 -198
  54. package/build/155.bundle.js.map +0 -1
  55. package/build/socket.sharedworker.9cc9b5b3f5d4700f41ee.js +0 -2
  56. package/build/socket.sharedworker.9cc9b5b3f5d4700f41ee.js.map +0 -1
  57. package/build/src/components/widgets/WidgetInplace/WidgetInplace.style.d.ts +0 -1
  58. package/build/src/components/widgets/WidgetInplace/WidgetInplaceUpload.d.ts +0 -14
  59. package/build/src/components/widgets/WidgetInplace/WidgetInplaceWrapper.d.ts +0 -6
  60. package/build/src/redux/slice/Article.slice.d.ts +0 -97
  61. package/build/src/redux/slice/User.slice.d.ts +0 -97
  62. package/build/src/redux/store.d.ts +0 -121
  63. package/pnpm-lock.yaml +0 -11173
@@ -1 +0,0 @@
1
- {"version":3,"file":"155.bundle.js","mappings":"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","sources":["webpack://ReactCore/./src/displayer/DisplayForm.component.tsx","webpack://ReactCore/./src/components/Empty.tsx","webpack://ReactCore/./src/components/TwoColLayout.tsx","webpack://ReactCore/./src/components/widgets/WidgetState.tsx","webpack://ReactCore/./src/components/widgets/Widget.tsx","webpack://ReactCore/./src/components/widgets/const.ts","webpack://ReactCore/./src/components/widgets/WidgetInplace/WidgetInplaceUpload.tsx","webpack://ReactCore/./src/components/widgets/WidgetInplace/WidgetInplaceWrapper.tsx","webpack://ReactCore/./src/components/widgets/WidgetLayer/WidgetLayer.style.tsx","webpack://ReactCore/./src/components/widgets/WidgetLayer/WidgetLayer.tsx","webpack://ReactCore/./src/components/widgets/WidgetWrapperCore.tsx","webpack://ReactCore/./src/components/widgets/WidgetList/WidgetList.style.tsx","webpack://ReactCore/./src/components/widgets/WidgetList/WidgetList.tsx","webpack://ReactCore/./src/components/widgets/namespace.ts","webpack://ReactCore/./src/components/editors/style.tsx","webpack://ReactCore/./src/components/editors/const.ts","webpack://ReactCore/./src/components/editors/EditorPopup.tsx","webpack://ReactCore/./src/components/editors/Editor.tsx","webpack://ReactCore/./src/components/editors/EditorTabWidgets.tsx","webpack://ReactCore/./src/components/editors/EditorTabWrapper.tsx","webpack://ReactCore/./src/components/editors/EditorWrapper.tsx","webpack://ReactCore/./src/components/editors/EditorsPortal.tsx"],"sourcesContent":["import * as React from 'react';\nimport { DisplayFormRef, FieldsWith } from './types';\nimport { useForm, Control, FieldValues } from 'react-hook-form';\nimport { useDisplayForm } from './useDisplay';\nimport styled from 'styled-components';\n\nconst FormElm = styled.form<{ stretch?: boolean }>`\n ${(props) =>\n props.stretch &&\n `\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n `}\n`;\n\nconst FieldsetWrapper = styled.div<{ stretch?: boolean }>`\n ${(props) =>\n props.stretch &&\n `\n flex: 1;\n`}\n`;\n\nexport type DisplayFormProps<TFieldValues extends FieldValues> = {\n type: string;\n fields: FieldsWith<'input', TFieldValues>;\n extraInputs?: (control: Control<TFieldValues>) => React.ReactNode;\n defaultValues?: any;\n onSubmit: any;\n buttons: React.ReactNode;\n readOnly?: boolean;\n dataCy?: string;\n stretch?: boolean;\n children?: React.ReactNode;\n};\n\n/****\n * The jamespot model depend on the platform\n * For example a user can have the size attribute only for a given platform\n * The model specifics of a platform are stored in J.model\n *\n * This component display an array of attributes only if this attribute is activated on the platform\n */\nconst _DisplayForm = <TFieldValues extends FieldValues>(\n props: DisplayFormProps<TFieldValues>,\n ref: React.ForwardedRef<DisplayFormRef>,\n) => {\n const formRef = React.useRef<HTMLFormElement>(null);\n\n const [configuration, defaultValues] = useDisplayForm(props.fields, props.type);\n\n const { handleSubmit, control, reset, ...formFn } = useForm({\n defaultValues: {\n ...defaultValues,\n ...props.defaultValues,\n },\n criteriaMode: 'all',\n });\n\n React.useImperativeHandle(\n ref,\n () => ({\n ...formFn,\n handleSubmit,\n control,\n reset: () => {\n // in case the form is scrollable\n formRef?.current?.scrollTo(0, 0);\n // reset react-hook-form form\n reset();\n },\n }),\n [],\n );\n\n return (\n <FormElm stretch={props.stretch} onSubmit={handleSubmit(props.onSubmit)} ref={formRef}>\n <FieldsetWrapper stretch={props.stretch}>\n {configuration.map(({ Input, ...conf }) => (\n <Input\n key={conf.name}\n control={control}\n {...conf}\n dataCy={`${props.dataCy}-${conf.name}`}\n readOnly={props.readOnly}\n />\n ))}\n {props.extraInputs && props.extraInputs(control)}\n </FieldsetWrapper>\n {props.buttons}\n </FormElm>\n );\n};\n\nexport const DisplayForm = React.forwardRef<DisplayFormRef>(_DisplayForm as any) as <TFieldValues extends FieldValues>(\n props: DisplayFormProps<TFieldValues> & {\n ref?: React.ForwardedRef<DisplayFormRef>;\n },\n) => ReturnType<typeof _DisplayForm>;\n","import * as React from 'react';\n\n// FIXME move to j-react-components + display error if dev mode\nexport const Empty = () => <></>;\n","import * as React from 'react';\nimport { Outlet } from 'react-router-dom';\nimport { useIntl } from 'react-intl';\nimport type { JRCAppColumnProps } from 'jamespot-react-components';\nimport JRCore from 'App';\nimport { useLocation } from 'react-router-dom';\nimport { LayoutMode } from 'jamespot-react-components';\n\nconst Container = JRCore.registry.getLazyComponent('Container');\nconst AppColumn = JRCore.registry.getLazyComponent('AppColumn');\nconst MainColumn = JRCore.registry.getLazyComponent('MainColumn');\n\nexport type TwoColLayoutRoute = {\n path: string;\n key: string;\n icon: string;\n label: string;\n group?: string;\n};\n\nexport type TwoColLayoutRoutes<T extends TwoColLayoutRoute = TwoColLayoutRoute> = Record<string, T>;\n\nexport type TwoColLayoutProps = {\n extensionRoute: string;\n routes: TwoColLayoutRoutes;\n mode?: LayoutMode;\n description: JRCAppColumnProps['description'];\n};\n\nexport function TwoColLayout({ extensionRoute, routes, description, mode = 'center' }: TwoColLayoutProps) {\n const intl = useIntl();\n const { pathname } = useLocation();\n\n const ROUTES_ARRAY = Object.values(routes);\n const [activeTab, setActiveTab] = React.useState(ROUTES_ARRAY?.[0]?.key);\n\n const tabs = ROUTES_ARRAY.map((tab) => ({\n ...tab,\n label: intl.formatMessage({ id: tab.label }),\n href: `/ng/rr/${extensionRoute}/${tab.path}`,\n group: tab.group ? intl.formatMessage({ id: tab.group }) : undefined,\n }));\n\n React.useEffect(() => {\n const activeRoute = ROUTES_ARRAY.find((route) => pathname === `/ng/rr/${extensionRoute}/${route.path}`);\n if (activeRoute) setActiveTab(activeRoute.key);\n }, [pathname]);\n\n return (\n <React.Suspense fallback={<></>}>\n <Container mode={mode}>\n <AppColumn mode={mode} description={description} tabs={tabs} activeTab={activeTab || ''} />\n <MainColumn mode={mode}>\n <Outlet />\n </MainColumn>\n </Container>\n </React.Suspense>\n );\n}\n","import React from 'react';\nimport { useSelector } from 'react-redux';\n\nimport JRCore from 'App';\n\nconst JRCLoader = JRCore.registry.getLazyComponent('Loader');\n\nimport { WidgetKeys, WidgetsRootState } from 'jamespot-user-api';\nimport { Widget } from 'jamespot-front-business';\n\n/*\n Widget state\n*/\n\nexport const WidgetState = ({ name, uniqid, inplace }: { name: WidgetKeys; uniqid: string; inplace: boolean }) => {\n const state = useSelector((state: WidgetsRootState) => Widget.selectors.selectWidgetState(state, uniqid));\n const def = Widget.definition(name);\n\n if (state?.loading) {\n return (\n <div\n style={{\n position: 'absolute',\n inset: 0,\n backgroundColor: 'rgba(255,255,255,.7)',\n display: 'flex',\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n }}>\n <JRCLoader />\n </div>\n );\n }\n\n if (state?.hover) {\n return (\n <div\n style={{\n position: 'absolute',\n inset: 0,\n backgroundColor: 'rgba(255,255,255,.7)',\n display: 'flex',\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n }}></div>\n );\n }\n\n if (!state?.initialized && inplace) {\n return <></>;\n }\n\n if (!state?.initialized && !inplace) {\n return (\n <div\n style={{\n position: 'absolute',\n inset: 0,\n backgroundColor: 'rgba(255,255,255,1)',\n display: 'flex',\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n }}>\n <img src={def.img} />\n </div>\n );\n }\n\n return <></>;\n};\n","import React from 'react';\n\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { CombinedWidgetContent, CombinedWidgetType, WidgetDisplayMode, WidgetStateProps } from 'jamespot-user-api';\n\nimport JRCore from 'App';\nimport { Widget } from 'jamespot-front-business';\n\nconst JRCWidgetArticleButton = JRCore.registry.getLazyComponent('WidgetArticleButton');\nconst JRCWidgetArticleGallery = JRCore.registry.getLazyComponent('WidgetArticleGallery');\nconst JRCWidgetArticleAttachment = JRCore.registry.getLazyComponent('WidgetArticleAttachment');\nconst JRCWidgetArticleImage = JRCore.registry.getLazyComponent('WidgetArticleImage');\nconst JRCWidgetArticleTitle = JRCore.registry.getLazyComponent('WidgetArticleTitle');\nconst JRCWidgetArticleText = JRCore.registry.getLazyComponent('WidgetArticleText');\n/*\n Widget Factory (jamespot-react-core)\n*/\nexport const DisplayWidget = ({\n widget,\n width,\n inplace = false,\n isComponentVisible = false,\n mode = 'view',\n onClick,\n}: {\n widget: CombinedWidgetType;\n width?: number | undefined;\n inplace: boolean;\n isComponentVisible: boolean | undefined;\n mode: WidgetDisplayMode;\n onClick: () => void;\n}) => {\n const dispatch = useDispatch();\n const { name, uniqid } = widget;\n const token = useSelector(Widget.selectors.selectToken);\n\n const onChange = (content: CombinedWidgetContent, override?: boolean) =>\n dispatch(Widget.slice.actions.updateWidget({ uniqid, content, override }));\n\n const onStateChange = (states: WidgetStateProps) =>\n dispatch(Widget.slice.actions.setWidgetState({ uniqid, ...states }));\n\n switch (name) {\n default:\n return <>cannot display widget ({name})</>;\n case Widget.const.WIDGET_ARTICLE_BUTTON:\n return (\n <JRCWidgetArticleButton\n isComponentVisible={isComponentVisible}\n content={widget.content}\n inplace={inplace}\n mode={mode}\n onChange={onChange}\n onClick={onClick}\n onStateChange={onStateChange}\n />\n );\n case Widget.const.WIDGET_ARTICLE_GALLERY:\n return (\n <JRCWidgetArticleGallery\n width={width}\n token={token}\n isComponentVisible={isComponentVisible}\n content={widget.content}\n inplace={inplace}\n mode={mode}\n onChange={onChange}\n onStateChange={onStateChange}\n />\n );\n case Widget.const.WIDGET_ARTICLE_ATTACHMENT:\n return (\n <JRCWidgetArticleAttachment\n token={token}\n content={widget.content}\n isComponentVisible={isComponentVisible}\n inplace={inplace}\n mode={mode}\n onChange={onChange}\n onStateChange={onStateChange}\n />\n );\n case Widget.const.WIDGET_ARTICLE_IMAGE:\n return (\n <JRCWidgetArticleImage\n width={width ?? 800}\n token={token}\n content={widget.content}\n isComponentVisible={isComponentVisible}\n inplace={inplace}\n mode={mode}\n onChange={onChange}\n onClick={onClick}\n onStateChange={onStateChange}\n />\n );\n case Widget.const.WIDGET_ARTICLE_TITLE:\n return (\n <JRCWidgetArticleTitle\n isComponentVisible={isComponentVisible}\n content={widget.content}\n inplace={inplace}\n mode={mode}\n onChange={onChange}\n onStateChange={onStateChange}\n />\n );\n case Widget.const.WIDGET_ARTICLE_TEXT:\n return (\n <JRCWidgetArticleText\n content={widget.content}\n isComponentVisible={isComponentVisible}\n inplace={inplace}\n mode={mode}\n onChange={onChange}\n onStateChange={onStateChange}\n />\n );\n }\n};\n","export const Uploader: Record<string, { accept: string; label: string; description: string; multiple: boolean }> = {\n 'widget-article-image': {\n accept: 'image/png, image/jpeg, image/jpg',\n multiple: false,\n label: 'WIDGET_Article_Image_Empty_Label',\n description: 'WIDGET_Article_Image_Empty_Description',\n },\n 'widget-article-gallery': {\n accept: 'image/png, image/jpeg, image/jpg',\n multiple: true,\n label: 'WIDGET_Article_Gallery_Empty_Label',\n description: 'WIDGET_Article_Attachment_Empty_Description',\n },\n 'widget-article-attachment': {\n accept: '*',\n multiple: true,\n label: 'WIDGET_Article_Attachment_Empty_Label',\n description: 'WIDGET_Article_Attachment_Empty_Description',\n },\n};\n","import React from 'react';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\n\nimport JRCore from 'App';\nconst JRCFormFile = JRCore.registry.getLazyComponent('DEPRECATEDFormInputFile');\n\nimport { apiFileToWidgetFile, FileResponse, WidgetFileType, WidgetsRootState } from 'jamespot-user-api';\nimport { Widget } from 'jamespot-front-business';\n\nimport { JRCWidgetEmptyInplace } from 'jamespot-react-components';\n\ntype WidgetInplaceUploadProps = {\n uniqid: string;\n initialFiles: WidgetFileType[];\n accept: string;\n label: string;\n description: string;\n multiple: boolean;\n token: string;\n allowAutoOpening: boolean;\n onChange: (files: WidgetFileType[]) => void;\n};\n\nexport const WidgetInplaceUpload = ({\n uniqid,\n initialFiles,\n accept,\n label,\n description,\n multiple,\n token,\n allowAutoOpening,\n onChange,\n}: WidgetInplaceUploadProps) => {\n const dispatch = useDispatch();\n const isActive = useSelector(\n (state: WidgetsRootState) => state.widgets.currentEditableWidgetId === uniqid,\n shallowEqual,\n );\n const uploadRef = React.useRef<HTMLInputElement>(null);\n const [fileUploadStep, setFileUploadStep] = React.useState<number>(0);\n const [fileCount, setFileCount] = React.useState<number>(0);\n const [fileResponses, setFileResponses] = React.useState<WidgetFileType[]>(initialFiles ?? []);\n\n const onUploadStart = () => {\n dispatch(Widget.slice.actions.setWidgetState({ uniqid, loading: true }));\n };\n\n React.useEffect(() => {\n if (fileUploadStep === fileCount) {\n dispatch(Widget.slice.actions.setWidgetState({ uniqid, loading: false }));\n }\n }, [fileUploadStep]);\n\n React.useEffect(() => {\n onChange(fileResponses.map((fileResponse) => fileResponse));\n }, [fileResponses]);\n\n React.useEffect(() => {\n if (isActive && allowAutoOpening) {\n uploadRef.current?.click();\n dispatch(Widget.slice.actions.setWidgetState({ uniqid, mounted: true }));\n }\n }, [isActive]);\n\n return (\n <>\n <JRCWidgetEmptyInplace\n url={'widget-article-image-placeholder.png'}\n label={label}\n description={description}\n onClick={() => {\n if (isActive) {\n uploadRef.current?.click();\n }\n }}\n />\n <div style={{ height: 0, width: 0, overflow: 'hidden' }}>\n <JRCFormFile\n ref={uploadRef}\n id=\"widget-upload-file\"\n name=\"editorFiles\"\n content={''}\n accept={accept as any}\n multiple={multiple}\n token={token}\n onUploadStart={(count) => {\n if (count !== undefined) {\n setFileCount((prevCount) => prevCount + count);\n }\n onUploadStart();\n }}\n onUploadSuccess={(fileResponse: FileResponse | undefined) => {\n setFileUploadStep((prevStep) => prevStep + 1);\n if (fileResponse !== undefined) {\n setFileResponses((prevFileResponses) => [\n ...prevFileResponses,\n apiFileToWidgetFile(fileResponse),\n ]);\n }\n if (!multiple) {\n dispatch(Widget.slice.actions.setWidgetState({ uniqid, loading: false }));\n }\n }}\n />\n </div>\n </>\n );\n};\n","import React from 'react';\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\n\nimport styled from 'styled-components';\n\nimport { WidgetDisplayMode, WidgetsRootState } from 'jamespot-user-api';\nimport { Widget, WidgetEditor } from 'jamespot-front-business';\n\nimport { Uploader } from '../const';\nimport { WidgetInplaceUpload } from './WidgetInplaceUpload';\n\nexport const CSSUploadFileWrapper = styled.div`\n position: relative;\n inset: 0;\n display: flex;\n flex: 1;\n min-height: 180px;\n`;\n\nexport const WidgetInplaceWrapper = ({ uniqid, mode }: { uniqid: string; mode: WidgetDisplayMode }) => {\n const dispatch = useDispatch();\n const widgetWrapper = useSelector((state: WidgetsRootState) => Widget.selectors.selectWidget(state, uniqid));\n const isActive = useSelector(\n (state: WidgetsRootState) => state.widgets.currentEditableWidgetId === uniqid,\n shallowEqual,\n );\n const token = useSelector(Widget.selectors.selectToken);\n\n React.useEffect(() => {\n if (isActive && widgetWrapper?.widget.name) {\n dispatch(WidgetEditor.slice.actions.flushAllEditor());\n dispatch(WidgetEditor.slice.actions.registerEditor({ uniqid, name: widgetWrapper?.widget.name }));\n }\n }, [isActive]);\n\n if (widgetWrapper === undefined) {\n return <></>;\n }\n\n const label = Uploader && Uploader[widgetWrapper?.widget.name] ? Uploader[widgetWrapper?.widget.name].label : '';\n const description =\n Uploader && Uploader[widgetWrapper?.widget.name] ? Uploader[widgetWrapper?.widget.name].description : '';\n const accept = Uploader && Uploader[widgetWrapper?.widget.name] ? Uploader[widgetWrapper?.widget.name].accept : '';\n const multiple =\n Uploader && Uploader[widgetWrapper?.widget.name] ? Uploader[widgetWrapper?.widget.name].multiple : false;\n\n switch (widgetWrapper?.widget.name) {\n case 'widget-article-gallery':\n const galleryFiles = widgetWrapper.widget.content.files;\n return token !== undefined && mode === 'edit' ? (\n <div style={{ marginTop: galleryFiles?.length ? 24 : 0 }}>\n <CSSUploadFileWrapper>\n <WidgetInplaceUpload\n label={label}\n description={description}\n initialFiles={[]}\n accept={accept}\n multiple={multiple}\n uniqid={uniqid}\n token={token}\n allowAutoOpening={!galleryFiles?.length}\n onChange={(fs) => {\n if (Array.isArray(fs)) {\n fs.forEach((file) => {\n dispatch(\n Widget.slice.actions.updateWidget({\n uniqid,\n content: { files: galleryFiles ? [...galleryFiles, file] : [file] },\n }),\n );\n });\n }\n }}\n />\n </CSSUploadFileWrapper>\n </div>\n ) : (\n <></>\n );\n case 'widget-article-attachment':\n const files = widgetWrapper.widget.content.files;\n return token !== undefined && mode === 'edit' ? (\n <div style={{ marginTop: files?.length ? 24 : 0 }}>\n <CSSUploadFileWrapper>\n <WidgetInplaceUpload\n label={label}\n description={description}\n initialFiles={files ?? []}\n accept={accept}\n multiple={multiple}\n uniqid={uniqid}\n token={token}\n allowAutoOpening={!files?.length}\n onChange={(fs) => {\n if (Array.isArray(fs)) {\n dispatch(\n Widget.slice.actions.updateWidget({\n uniqid,\n content: { files: fs },\n }),\n );\n }\n }}\n />\n </CSSUploadFileWrapper>\n </div>\n ) : (\n <></>\n );\n case 'widget-article-image':\n return token !== undefined && mode === 'edit' && !widgetWrapper.widget.content.file ? (\n <>\n <CSSUploadFileWrapper>\n <WidgetInplaceUpload\n label={label}\n description={description}\n initialFiles={widgetWrapper.widget.content.file ?? []}\n accept={accept}\n multiple={false}\n uniqid={uniqid}\n token={token}\n allowAutoOpening={!widgetWrapper.widget.content.file}\n onChange={(fs) => {\n if (fs && fs[0]) {\n dispatch(Widget.slice.actions.updateWidget({ uniqid, content: { file: fs[0] } }));\n }\n }}\n />\n </CSSUploadFileWrapper>\n </>\n ) : (\n <div\n style={{ position: 'absolute', inset: 0 }}\n onClick={() => {\n dispatch(WidgetEditor.slice.actions.flushAllEditor());\n dispatch(\n WidgetEditor.slice.actions.registerEditor({ uniqid, name: widgetWrapper?.widget.name }),\n );\n }}></div>\n );\n }\n\n return <></>;\n};\n","import styled from 'styled-components';\n\nexport const CSSWidgetLayer = styled.div<{ opacity: number; backgroundColor: string; pointerEvents: string }>`\n position: absolute;\n inset: 0;\n opacity: ${(props) => props.opacity};\n background-color: ${(props) => props.backgroundColor};\n pointer-events: ${(props) => props.pointerEvents};\n`;\n","import React from 'react';\n\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\n\nimport { WidgetVector, WidgetsRootState, WidgetDisplayMode, WidgetKeys } from 'jamespot-user-api';\n\nimport { WidgetEditor, Widget } from 'jamespot-front-business';\nimport WidgetWrapperCore from '../WidgetWrapperCore';\nimport { CSSWidgetLayer } from './WidgetLayer.style';\nimport { BETA_JRCDoubleClick } from 'jamespot-react-components';\n\n/*\n Widget layering\n*/\n\nexport const WidgetLayer = ({ uniqid, mode }: { uniqid: string; mode: WidgetDisplayMode }) => {\n const layers = useSelector((state: WidgetsRootState) => state.widgets.ids[uniqid].widget.layers, shallowEqual);\n return (\n <>\n {layers?.map((layer, index) => {\n if (mode === 'edit') {\n return <Layer uniqid={layer} key={index} mode={'edit'} />;\n }\n\n return <Layer uniqid={layer} key={index} mode={'edit'} />;\n })}\n </>\n );\n};\n\nconst Layer = ({ uniqid, mode }: { uniqid: string; mode: WidgetDisplayMode }) => {\n const layer = useSelector((state: WidgetsRootState) => state.widgets.layers[uniqid]);\n if (mode === 'view') {\n return (\n <CSSWidgetLayer opacity={1} backgroundColor={'transparent'} pointerEvents={'none'}>\n {layer.widgets.map((widgetWrapper, index) => {\n return (\n <LayerWidget\n key={index}\n layerId={layer.uniqid}\n uniqid={widgetWrapper.widget.uniqid}\n mode={'view'}\n />\n );\n })}\n </CSSWidgetLayer>\n );\n }\n\n return (\n <CSSWidgetLayer\n opacity={layer.visible ? 1 : 0}\n backgroundColor={layer.visible ? 'rgba(255,255,255,.1)' : 'transparent'}\n pointerEvents={layer.locked ? 'none' : 'all'}>\n {layer.widgets.map((widgetWrapper, index) => {\n return (\n <LayerWidget\n key={index}\n layerId={layer.uniqid}\n uniqid={widgetWrapper.widget.uniqid}\n mode={'edit'}\n />\n );\n })}\n </CSSWidgetLayer>\n );\n};\n\n/*\n Widget from the layer\n*/\nconst LayerWidget = ({ uniqid, layerId, mode }: { uniqid: string; layerId: string; mode: WidgetDisplayMode }) => {\n const dispatch = useDispatch();\n const widgetWrapper = useSelector((state: WidgetsRootState) => state.widgets.ids[uniqid], shallowEqual);\n const layer = useSelector((state: WidgetsRootState) => state.widgets.layers[layerId]);\n\n if (!widgetWrapper) {\n return <></>;\n }\n\n if (!layer) {\n return <></>;\n }\n\n if (!layer.position) {\n return <></>;\n }\n\n const onDoubleTap = (uniqid: string, name: WidgetKeys) => {\n /*\n Open editor\n */\n dispatch(WidgetEditor.slice.actions.registerEditor({ uniqid, name }));\n };\n\n const onMouseUp = (position: WidgetVector) => {\n dispatch(Widget.slice.actions.updateLayer({ uniqid: layerId, props: { position } }));\n };\n\n if (mode === 'view') {\n return (\n <div style={{ position: 'absolute', top: layer.position.y, left: layer.position.x }}>\n <WidgetWrapperCore uniqid={uniqid} widget={widgetWrapper} mode={mode} inplace={true} />\n </div>\n );\n }\n\n return (\n <DraggableHandler\n position={{ x: layer.position.x, y: layer.position.y }}\n onMouseUp={(position: WidgetVector) => {\n if (\n (layer.position && layer.position.x !== position.x) ||\n (layer.position && layer.position.y !== position.y)\n ) {\n onMouseUp(position);\n }\n }}>\n <BETA_JRCDoubleClick\n onDoubleTap={() => onDoubleTap(widgetWrapper.widget.uniqid, widgetWrapper.widget.name)}>\n <WidgetWrapperCore uniqid={uniqid} widget={widgetWrapper} mode={mode} inplace={true} />\n </BETA_JRCDoubleClick>\n </DraggableHandler>\n );\n};\n\nexport type Vector = {\n x: number;\n y: number;\n};\n\n// TODO: COMBINE WITH THE ONE USED ON COLOR PICKER\n// TODO: COMBINE WITH THE ONE USED ON COLOR PICKER\n// TODO: COMBINE WITH THE ONE USED ON COLOR PICKER\nexport const DraggableHandler = ({\n position,\n children,\n onMouseUp,\n}: {\n position: Vector;\n children: React.ReactElement;\n onMouseUp: (position: Vector) => void;\n}) => {\n const [mouseIsDown, setMouseDown] = React.useState<boolean>(false);\n const [mouse, setMouse] = React.useState<Vector>({ x: 0, y: 0 });\n const [start, setStart] = React.useState<Vector>({ x: 0, y: 0 });\n const [child, setChild] = React.useState<Vector>({ x: position.x, y: position.y });\n\n const ref = React.useRef<HTMLDivElement>(null);\n\n const handleMouseDown = (event: any) => {\n setMouseDown(true);\n if (ref.current) {\n setMouse({ x: event.nativeEvent.clientX, y: event.nativeEvent.clientY });\n setStart({ x: child.x, y: child.y });\n }\n };\n\n const handleMouseMove = React.useCallback(\n (event: any) => {\n if (mouseIsDown && ref.current) {\n const dx = start.x + (event.clientX - mouse.x);\n const dy = start.y + (event.clientY - mouse.y);\n\n setChild({ x: dx, y: dy });\n }\n },\n [mouseIsDown],\n );\n\n const handleMouseUp = () => {\n setMouseDown(false);\n onMouseUp({ x: child.x, y: child.y });\n };\n\n React.useEffect(() => {\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }, [handleMouseMove]);\n\n return (\n <div style={{ position: 'absolute', top: child.y, left: child.x }} ref={ref} onMouseDown={handleMouseDown}>\n {children}\n </div>\n );\n};\n","import React from 'react';\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\n\nimport { WidgetDisplayMode, WidgetsRootState, WidgetWrapperProps } from 'jamespot-user-api';\nimport { WidgetState } from './WidgetState';\nimport { DisplayWidget } from './Widget';\nimport { Widget, WidgetEditor } from 'jamespot-front-business';\nimport { useComponentVisible } from './hooks';\nimport { WidgetInplaceWrapper } from './WidgetInplace/WidgetInplaceWrapper';\nimport { WidgetLayer } from './WidgetLayer/WidgetLayer';\n\n/*\n This is a widget wrapper\n*/\nexport const WidgetWrapperCore = ({\n uniqid,\n widget,\n inplace = true,\n mode,\n width,\n}: {\n uniqid: string;\n widget: WidgetWrapperProps;\n inplace?: boolean;\n mode: WidgetDisplayMode;\n width?: number | undefined;\n}) => {\n const dispatch = useDispatch();\n const widgetWrapper = useSelector((state: WidgetsRootState) => Widget.selectors.selectWidget(state, uniqid));\n const isBusy = useSelector(\n (state: WidgetsRootState) => Widget.selectors.selectWidgetState(state, uniqid)?.busy,\n shallowEqual,\n );\n const indexOrder = useSelector((state: WidgetsRootState) => state.widgets.editableMap[uniqid], shallowEqual);\n const currentEditableWidgetId = useSelector(\n (state: WidgetsRootState) => state.widgets.currentEditableWidgetId,\n shallowEqual,\n );\n const isActive = useSelector(\n (state: WidgetsRootState) => state.widgets.currentEditableWidgetId === uniqid,\n shallowEqual,\n );\n const { ref, isComponentVisible, setIsComponentVisible } = useComponentVisible(false);\n\n React.useEffect(() => {\n if (widget) {\n /*\n Register widget\n */\n dispatch(Widget.slice.actions.registerWidget({ uniqid, widget }));\n }\n }, []);\n\n React.useEffect(() => {\n if (!isComponentVisible) {\n if (uniqid === currentEditableWidgetId) {\n dispatch(Widget.slice.actions.setEditableWidgetId({ uniqid: undefined }));\n }\n }\n }, [isComponentVisible]);\n\n React.useEffect(() => {\n if (isComponentVisible !== isActive) {\n setIsComponentVisible(isActive);\n }\n }, [isActive]);\n\n if (widgetWrapper === undefined) {\n return <>This widget cannot be desplayed</>;\n }\n\n const onClick = () => {\n if (mode === 'edit') {\n registerEditor();\n } else {\n if (widgetWrapper.widget.name === 'widget-article-button') {\n switch (widgetWrapper.widget.content.openingType) {\n case 'link':\n if (widgetWrapper.widget.content.openingTypeLink) {\n window.open(\n widgetWrapper.widget.content.openingTypeLink.url,\n widgetWrapper.widget.content.openingTypeLink.target,\n );\n }\n break;\n }\n }\n }\n };\n\n const registerEditor = () => {\n if (mode === 'view') {\n return;\n }\n /*\n Register editor\n */\n const { widget } = widgetWrapper;\n dispatch(\n WidgetEditor.slice.actions.registerEditor({\n uniqid: widget.uniqid,\n name: widget.name,\n }),\n );\n };\n\n if (inplace && mode !== 'view') {\n return (\n <div\n style={{ minWidth: width !== undefined ? width : '100%' }}\n ref={ref}\n onClick={() => {\n setIsComponentVisible(true);\n if (indexOrder) {\n dispatch(Widget.slice.actions.setEditableIndex({ index: indexOrder.index }));\n dispatch(Widget.slice.actions.setEditableWidgetId({ uniqid }));\n }\n }}>\n <DisplayWidget\n width={width}\n widget={widgetWrapper.widget}\n inplace={inplace}\n isComponentVisible={isComponentVisible || isBusy || isActive ? true : false}\n mode={mode}\n onClick={onClick}\n />\n <WidgetInplaceWrapper uniqid={uniqid} mode={mode} />\n <WidgetLayer uniqid={uniqid} mode={mode} />\n <WidgetState name={widgetWrapper.widget.name} uniqid={widgetWrapper.widget.uniqid} inplace={inplace} />\n </div>\n );\n }\n\n return (\n <div\n style={{ flex: 1, display: 'flex', minWidth: width !== undefined ? width : '100%' }}\n onClick={registerEditor}>\n <DisplayWidget\n widget={widgetWrapper.widget}\n isComponentVisible={false}\n inplace={inplace}\n mode={mode}\n width={width}\n onClick={onClick}\n />\n <WidgetLayer uniqid={uniqid} mode={mode} />\n <WidgetState name={widgetWrapper.widget.name} uniqid={widgetWrapper.widget.uniqid} inplace={inplace} />\n </div>\n );\n};\n\nexport default WidgetWrapperCore;\n","import styled from 'styled-components';\n\nexport const CSSSquareWidgetWrapper = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n gap: 10px;\n justify-content: center;\n`;\n\nexport const CSSSquareWidget = styled.div<{ available: boolean }>`\n border: 1px solid ${(props) => props.theme.color.grey2};\n border-radius: 8px;\n cursor: pointer;\n padding: 12px;\n position: relative;\n opacity: ${(props) => (props.available ? '1' : '.4')};\n pointer-events: ${(props) => (props.available ? 'all' : 'none')};\n\n .show-on-hover {\n position: absolute;\n inset: 0;\n border-radius: 8px;\n justify-content: center;\n align-items: center;\n display: flex;\n opacity: 0;\n background-color: #ffffffe6;\n }\n\n &:hover {\n .show-on-hover {\n opacity: 1;\n }\n }\n`;\n\nexport const CSSWidgetButton = styled.div<{ open: boolean }>`\n border: 2px solid ${(props) => props.theme.color.primary};\n height: ${(props) => (props.open ? '320' : '54')}px;\n border-radius: 8px;\n display: flex;\n justify-content: top;\n flex-direction: column;\n transition: height 0.4s;\n overflow: hidden;\n flex-direction: column;\n`;\n\nexport const CSSWrapWidgetWrapper = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: center;\n gap: 10px;\n`;\n\nexport const CSSWrapTitle = styled.div`\n min-height: 50px;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n color: ${(props) => props.theme.color.primary};\n`;\n\nexport const CSSWrapWidget = styled.button<{ open: boolean; index: number }>`\n height: 72px;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 40%;\n border: 1px solid ${(props) => props.theme.color.grey2};\n border-radius: 8px;\n transition: opacity 0.4s ease ${(props) => props.index * 40}ms;\n opacity: ${(props) => (props.open ? 1 : 0)};\n`;\n","import React from 'react';\nimport { useIntl } from 'react-intl';\n\nimport { WidgetDefinitionProps, WidgetKeys, WidgetWrapperProps } from 'jamespot-user-api';\n\nimport JRCore from 'App';\nimport { JRCModalProps } from 'jamespot-react-components';\nimport { Widget } from 'jamespot-front-business';\nimport { getBuilderWidgets } from '../namespace';\nimport {\n CSSSquareWidget,\n CSSSquareWidgetWrapper,\n CSSWidgetButton,\n CSSWrapTitle,\n CSSWrapWidget,\n CSSWrapWidgetWrapper,\n} from './WidgetList.style';\n\nconst JRCButton = JRCore.registry.getLazyComponent('Button');\nconst JRCModal = JRCore.registry.getLazyComponent('Modal');\n\ntype WidgetListMode = 'button' | 'list' | 'gallery' | 'custom' | 'article';\n\n/*\n Widget Builder\n*/\nexport const WidgetList = ({\n mode,\n children,\n namespace = 'default',\n onChange,\n}: {\n mode?: WidgetListMode;\n children?: any;\n namespace?: string;\n onChange: (widget: WidgetWrapperProps) => void;\n}) => {\n const [isOpen, setOpen] = React.useState<boolean>(false);\n const widgets = getBuilderWidgets(namespace);\n const intl = useIntl();\n\n const args: JRCModalProps = {\n open: isOpen,\n title: 'widget builder',\n showIconClose: true,\n portalId: 'react-modal',\n isFullHeight: true,\n closeHandler: () => setOpen(false),\n };\n\n const onClick = (name: WidgetKeys) => {\n onChange(Widget.factory(name));\n setOpen(false);\n };\n\n return (\n <>\n <JRCModal {...args}>\n <CSSSquareWidgetWrapper>\n {widgets.map((widget, index: number) => {\n return (\n <CSSSquareWidget\n key={index}\n onClick={() => onClick(widget.name)}\n available={widget.available}>\n <img src={widget.img} />\n <div className=\"show-on-hover\">{intl.formatMessage({ id: widget.label })}</div>\n </CSSSquareWidget>\n );\n })}\n </CSSSquareWidgetWrapper>\n </JRCModal>\n {mode === 'custom' && children ? <div onClick={() => setOpen(true)}>{children}</div> : <></>}\n {mode === 'button' ? (\n <JRCButton onClick={() => setOpen(true)} variant={'outlined'} minWidth={'100%'}>\n {intl.formatMessage({ id: 'WIDGET_Add_Widget' })}\n </JRCButton>\n ) : (\n <></>\n )}\n {mode === 'gallery' ? (\n <CSSSquareWidgetWrapper>\n {widgets.map((widget, index: number) => {\n return (\n <CSSSquareWidget\n key={index}\n onClick={() => onClick(widget.name)}\n available={widget.available}>\n <img src={widget.img} />\n <div className=\"show-on-hover\">{intl.formatMessage({ id: widget.label })}</div>\n </CSSSquareWidget>\n );\n })}\n </CSSSquareWidgetWrapper>\n ) : (\n <></>\n )}\n {mode === 'article' ? <WidgetModeArticle widgets={widgets} onClick={onClick} /> : <></>}\n </>\n );\n};\n\nconst WidgetModeArticle = ({\n widgets,\n onClick,\n}: {\n widgets: WidgetDefinitionProps[];\n onClick: (name: WidgetKeys) => void;\n}) => {\n const [open, isOpen] = React.useState(false);\n const intl = useIntl();\n return (\n <>\n <CSSWidgetButton open={open}>\n <CSSWrapTitle onClick={() => isOpen(!open)}>\n {intl.formatMessage({ id: 'WIDGET_Add_Widget' })}\n </CSSWrapTitle>\n <CSSWrapWidgetWrapper>\n {widgets.map((widget, index) => {\n return (\n <CSSWrapWidget\n key={widget.name}\n open={open}\n index={index}\n onClick={() => onClick(widget.name)}>\n {intl.formatMessage({ id: widget.label })}\n </CSSWrapWidget>\n );\n })}\n </CSSWrapWidgetWrapper>\n </CSSWidgetButton>\n </>\n );\n};\n","import { Widget } from 'jamespot-front-business';\nimport { WidgetDefinitionProps } from 'jamespot-user-api';\n\nexport function getBuilderWidgets(namespace: string): WidgetDefinitionProps[] {\n switch (namespace) {\n case 'widget-article-image':\n return [\n Widget.definition(Widget.const.WIDGET_ARTICLE_TITLE),\n Widget.definition(Widget.const.WIDGET_ARTICLE_BUTTON),\n ];\n default:\n return [\n Widget.definition(Widget.const.WIDGET_ARTICLE_TITLE),\n Widget.definition(Widget.const.WIDGET_ARTICLE_TEXT),\n Widget.definition(Widget.const.WIDGET_ARTICLE_IMAGE),\n Widget.definition(Widget.const.WIDGET_ARTICLE_BUTTON),\n Widget.definition(Widget.const.WIDGET_ARTICLE_GALLERY),\n Widget.definition(Widget.const.WIDGET_ARTICLE_ATTACHMENT),\n ];\n }\n}\n","import styled from 'styled-components';\nimport { EDITOR_MENU_WIDTH, EDITOR_WIDTH } from './const';\n\nconst INPUT_HEIGHT = 50;\nconst RADIUS = 8;\n\nexport const CSSEditorComponentWrapper = styled.div`\n margin-bottom: 24px;\n`;\n\nexport const CSSEditorComponentLabel = styled.div`\n margin-bottom: 4px;\n`;\n\nexport const CSSEditorPortal = styled.div<{ on: boolean }>`\n position: absolute;\n background-color: ${(props) => (props.on ? 'rgba(0,0,0,.1)' : 'transparent')};\n inset: 0;\n pointer-events: ${(props) => (props.on ? 'all' : 'none')};\n flex: 1;\n display: flex;\n overflow: hidden;\n`;\n\nexport const CSSEditorHeader = styled.div`\n flex-direction: row;\n display: flex;\n min-height: 60px;\n border-bottom: 1px solid ${(props) => props.theme.color.grey2};\n`;\n\nexport const CSSEditorAction = styled.div`\n width: 60px;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport const CSSEditorLabel = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport const CSSEditor = styled.div<{ visible: boolean }>`\n position: absolute;\n top: 90px;\n right: ${(props) => (props.visible ? '0' : '-1000')}px;\n width: ${EDITOR_WIDTH}px;\n bottom: 0;\n display: flex;\n background-color: ${(props) => props.theme.color.white};\n flex-direction: row;\n transition: all 0.4s;\n box-shadow: -1px 1px 10px 0px rgb(0 0 0 / 20%);\n`;\n\nexport const CSSEditorContent = styled.div`\n flex: 1;\n display: flex;\n flex-direction: row;\n padding: 12px;\n overflow: auto;\n`;\n\nexport const CSSEditorMenu = styled.div`\n width: ${EDITOR_MENU_WIDTH}px;\n padding-top: 60px;\n display: flex;\n flex-direction: column;\n border-right: 1px solid ${(props) => props.theme.color.grey2};\n`;\n\nexport const CSSEditorMenuButton = styled.button<{ on?: boolean }>`\n border-radius: 4px;\n cursor: pointer;\n height: 42px;\n margin: 4px;\n width: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${(props) => (props.on ? props.theme.color.grey1 : props.theme.color.white)};\n &:hover {\n background-color: ${(props) => props.theme.color.grey1};\n }\n`;\n\nexport const CSSInputWrapper = styled.div`\n display: flex;\n border: 1px solid ${(props) => props.theme.color.grey1};\n border-radius: ${RADIUS}px;\n margin-bottom: 24px;\n input {\n width: 100%;\n border: 0;\n height: ${INPUT_HEIGHT}px;\n margin: 0;\n }\n`;\n\nexport const CSSEditorWidget = styled.div`\n display: flex;\n flex-direction: row;\n padding: 12px;\n background-color: ${(props) => props.theme.color.grey0};\n border-radius: 8px;\n margin-bottom: 4px;\n`;\n\nexport const CSSEditorWidgetLabel = styled.div`\n display: flex;\n flex: 1;\n align-items: center;\n`;\n\nexport const CSSEditorWidgetOption = styled.div`\n width: 40px;\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport const CSSEditorLayer = styled.div`\n flex-direction: row;\n display: flex;\n align-items: center;\n`;\n\nexport const CSSEditorLayerTitle = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n`;\n","export const EDITOR_TOP = 90;\nexport const EDITOR_WIDTH = 440;\nexport const EDITOR_MENU_WIDTH = 50;\n","import React from 'react';\n\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { JRCButton, JRCIcon } from 'jamespot-react-components';\n\nimport { CSSEditorAction, CSSEditorHeader, CSSEditorLabel, CSSEditorMenuButton } from './style';\nimport { WidgetEditor, EditorsRootState } from 'jamespot-front-business';\n\n/*\n Editor popup (center part)\n*/\nexport const EditorPopup = ({ uniqid }: { uniqid: string }) => {\n const dispatch = useDispatch();\n const editor = useSelector((state: EditorsRootState) => WidgetEditor.selectors.selectEditor(state, uniqid));\n\n const onClick = () => {\n dispatch(WidgetEditor.slice.actions.flushEditorPopup({ uniqid }));\n };\n\n const onSave = () => {\n dispatch(WidgetEditor.slice.actions.flushEditorPopup({ uniqid }));\n };\n\n if (editor && editor.popup && editor.view) {\n return (\n <div style={{ flex: 1, display: 'flex', flexDirection: 'column', backgroundColor: 'white', marginTop: 90 }}>\n <CSSEditorHeader>\n <CSSEditorAction />\n <CSSEditorLabel>Popup</CSSEditorLabel>\n <CSSEditorAction>\n <CSSEditorMenuButton onClick={onClick}>\n <JRCIcon name=\"icon-times\" color=\"grey2\" />\n </CSSEditorMenuButton>\n </CSSEditorAction>\n </CSSEditorHeader>\n <div style={{ flex: 1, display: 'flex' }}>{editor.view}</div>\n <CSSEditorHeader>\n <JRCButton onClick={onSave}>Save</JRCButton>\n </CSSEditorHeader>\n </div>\n );\n }\n\n return <></>;\n};\n","import React from 'react';\n\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { WidgetEditor, Widget } from 'jamespot-front-business';\n\nimport JRCore from 'App';\n\nimport { CombinedWidgetContent, WidgetsRootState, WidgetStateProps } from 'jamespot-user-api';\n\nconst JRCWidgetArticleTitleEditor = JRCore.registry.getLazyComponent('WidgetArticleTitleEditor');\nconst JRCWidgetArticleImageEditor = JRCore.registry.getLazyComponent('WidgetArticleImageEditor');\nconst JRCWidgetArticleTextEditor = JRCore.registry.getLazyComponent('WidgetArticleTextEditor');\nconst JRCWidgetArticleGalleryEditor = JRCore.registry.getLazyComponent('WidgetArticleGalleryEditor');\nconst JRCWidgetArticleButtonEditor = JRCore.registry.getLazyComponent('WidgetArticleButtonEditor');\nconst JRCWidgetArticleAttachmentEditor = JRCore.registry.getLazyComponent('WidgetArticleAttachmentEditor');\n\n/*\n Editor Factory\n*/\nexport const Editor = ({ uniqid }: { uniqid: string }) => {\n const dispatch = useDispatch();\n const token = useSelector(Widget.selectors.selectToken);\n const widgetWrapper = useSelector((state: WidgetsRootState) => Widget.selectors.selectWidget(state, uniqid));\n\n const onSave = (content: CombinedWidgetContent) => {\n /*\n Update widget & Flush editor\n */\n if (widgetWrapper) {\n dispatch(Widget.slice.actions.updateWidget({ uniqid, content }));\n }\n\n dispatch(WidgetEditor.slice.actions.flushEditor({ uniqid }));\n };\n\n const onChange = (content: CombinedWidgetContent, override?: boolean) =>\n dispatch(Widget.slice.actions.updateWidget({ uniqid, content, override }));\n\n const onStateChange = (states: WidgetStateProps, id?: string) => {\n /*\n Set widget state (busy, loading, initialized)\n */\n if (id !== undefined) {\n dispatch(Widget.slice.actions.setWidgetState({ uniqid: id, ...states }));\n } else {\n dispatch(Widget.slice.actions.setWidgetState({ uniqid, ...states }));\n }\n };\n\n const onOpen = (view: React.ReactElement) => {\n /*\n Register popup (central)\n */\n dispatch(WidgetEditor.slice.actions.registerEditorPopup({ uniqid, view }));\n };\n\n switch (widgetWrapper?.widget.name) {\n default:\n return <>cannot display editor</>;\n case Widget.const.WIDGET_ARTICLE_BUTTON:\n return (\n <JRCWidgetArticleButtonEditor\n content={widgetWrapper.widget.content}\n onChange={onChange}\n onSave={onSave}\n onStateChange={onStateChange}\n />\n );\n case Widget.const.WIDGET_ARTICLE_ATTACHMENT:\n return (\n <JRCWidgetArticleAttachmentEditor\n token={token}\n content={widgetWrapper.widget.content}\n onChange={onChange}\n onSave={onSave}\n onStateChange={onStateChange}\n onOpen={onOpen}\n />\n );\n case Widget.const.WIDGET_ARTICLE_GALLERY:\n return (\n <JRCWidgetArticleGalleryEditor\n token={token}\n content={widgetWrapper.widget.content}\n onChange={onChange}\n onSave={onSave}\n onStateChange={onStateChange}\n />\n );\n case Widget.const.WIDGET_ARTICLE_TEXT:\n return (\n <JRCWidgetArticleTextEditor\n onChange={onChange}\n onSave={onSave}\n content={widgetWrapper.widget.content}\n />\n );\n case Widget.const.WIDGET_ARTICLE_IMAGE:\n return (\n <JRCWidgetArticleImageEditor\n content={widgetWrapper.widget.content}\n token={token}\n onChange={onChange}\n onSave={onSave}\n onStateChange={onStateChange}\n />\n );\n case Widget.const.WIDGET_ARTICLE_TITLE:\n return (\n <JRCWidgetArticleTitleEditor\n onChange={onChange}\n onSave={onSave}\n content={widgetWrapper.widget.content}\n onOpen={onOpen}\n />\n );\n }\n};\n","import React from 'react';\n\nimport { shallowEqual, useDispatch, useSelector } from 'react-redux';\n\nimport { WidgetEditor, Widget } from 'jamespot-front-business';\n\nimport { WidgetKeys, WidgetsRootState } from 'jamespot-user-api';\nimport { useIntl } from 'react-intl';\nimport { CSSEditorWidget, CSSEditorWidgetLabel, CSSEditorWidgetOption } from './style';\nimport { BETA_JRCDragAndDrop, JRCIcon } from 'jamespot-react-components';\nimport { WidgetList } from 'registry/coreComponents';\n\n/*\n Editor widgets (widgets)\n*/\nexport const EditorTabWidgets = ({ uniqid }: { uniqid: string; namespace: string }) => {\n const dispatch = useDispatch();\n const intl = useIntl();\n const content = useSelector((state: WidgetsRootState) => Widget.selectors.selectWidgetContent(state, uniqid));\n\n const onClick = (uniqid: string, name: WidgetKeys) => {\n /*\n Register Editor\n */\n dispatch(WidgetEditor.slice.actions.registerEditor({ uniqid, name }));\n };\n\n return (\n <div style={{ flex: 1 }}>\n <Layers uniqid={uniqid} />\n {content && content.widgets ? (\n content.widgets.map((widgetWrapper, index: number) => {\n const def = Widget.definition(widgetWrapper.widget.name);\n return (\n <div key={index}>\n <CSSEditorWidget>\n <CSSEditorWidgetLabel\n onClick={() => onClick(widgetWrapper.widget.uniqid, widgetWrapper.widget.name)}>\n {intl.formatMessage({ id: def.label })}\n </CSSEditorWidgetLabel>\n <CSSEditorWidgetOption\n onClick={() => {\n if (content.widgets) {\n dispatch(\n Widget.slice.actions.updateWidget({\n uniqid,\n content: {\n ...content,\n widgets: [\n ...content.widgets.filter((_, n: number) => n !== index),\n ],\n },\n }),\n );\n }\n }}>\n <JRCIcon name={'icon-trash'} />\n </CSSEditorWidgetOption>\n </CSSEditorWidget>\n </div>\n );\n })\n ) : (\n <></>\n )}\n </div>\n );\n};\n\nconst Layers = ({ uniqid }: { uniqid: string }) => {\n const dispatch = useDispatch();\n const layers = useSelector((state: WidgetsRootState) => state.widgets.ids[uniqid].widget.layers, shallowEqual);\n\n //const flushEditor = () => dispatch(WidgetEditor.slice.actions.flushEditor({ uniqid }));\n\n return (\n <>\n <BETA_JRCDragAndDrop\n onDrag={() => {\n //console.log(dragIndex, hoverIndex)\n }}\n renderEl={(layer, index) => {\n return <EditorWidgetLayer uniqid={layer} key={index} />;\n }}\n elms={layers ? layers : []}\n />\n <WidgetList\n namespace={'default'}\n onChange={(widget) => {\n dispatch(Widget.slice.actions.registerLayer({ uniqid, widget }));\n }}\n mode={'button'}\n />\n </>\n );\n};\n\nconst EditorWidgetLayerLock = ({ uniqid }: { uniqid: string }) => {\n const dispatch = useDispatch();\n const layer = useSelector((state: WidgetsRootState) => state.widgets.layers[uniqid]);\n return (\n <div\n onClick={() => {\n dispatch(Widget.slice.actions.updateLayer({ uniqid, props: { locked: !layer.locked } }));\n }}>\n <JRCIcon name={layer.locked ? 'icon-lock' : 'icon-unlock'} />\n </div>\n );\n};\n\nconst EditorWidgetLayerVisibility = ({ uniqid }: { uniqid: string }) => {\n const dispatch = useDispatch();\n const layer = useSelector((state: WidgetsRootState) => state.widgets.layers[uniqid]);\n return (\n <div\n onClick={() => {\n dispatch(Widget.slice.actions.updateLayer({ uniqid, props: { visible: !layer.visible } }));\n }}>\n <JRCIcon name={layer.visible ? 'icon-eye' : 'icon-eye-slash'} />\n </div>\n );\n};\n\nconst EditorWidgetLayerFlush = ({ uniqid, layerId }: { uniqid: string; layerId: string }) => {\n const dispatch = useDispatch();\n return (\n <div\n onClick={() => {\n dispatch(Widget.slice.actions.flushLayer({ uniqid, layerId }));\n }}>\n <JRCIcon name={'icon-trash'} />\n </div>\n );\n};\n\nconst EditorWidgetLayer = ({ uniqid }: { uniqid: string }) => {\n const layer = useSelector((state: WidgetsRootState) => state.widgets.layers[uniqid]);\n return (\n <>\n {layer.title}\n {layer.widgets.map((widget, index) => {\n const def = Widget.definition(widget.widget.name);\n\n return (\n <div style={{ flexDirection: 'row', display: 'flex' }} key={index}>\n <div style={{ flex: 1, alignItems: 'center' }}>{def.label}</div>\n <EditorWidgetLayerLock uniqid={uniqid} />\n <EditorWidgetLayerVisibility uniqid={uniqid} />\n <EditorWidgetLayerFlush uniqid={widget.widget.uniqid} layerId={layer.uniqid} />\n </div>\n );\n })}\n </>\n );\n};\n","import React from 'react';\n\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport JRCore from 'App';\n\nconst JRCButton = JRCore.registry.getLazyComponent('Button');\n\nimport { useIntl } from 'react-intl';\nimport { WidgetEditor, Widget } from 'jamespot-front-business';\nimport { useForm } from 'react-hook-form';\nimport { JRCInputText } from 'jamespot-react-components';\nimport { WidgetsRootState } from 'jamespot-user-api';\n\n/*\n Editor tab wrapper (this is all the properties available on a widget wrapper)\n*/\nexport const EditorTabWrapper = ({ uniqid }: { uniqid: string }) => {\n const intl = useIntl();\n const dispatch = useDispatch();\n const wrapper = useSelector((state: WidgetsRootState) => Widget.selectors.selectWidget(state, uniqid));\n const [title, setTitle] = React.useState<string | undefined>(wrapper?.title);\n\n const onClick = () => {\n if (title !== undefined) {\n /*\n Update editor\n */\n dispatch(Widget.slice.actions.updateWidgetWrapper({ uniqid, title }));\n /*\n Flush editor\n */\n dispatch(WidgetEditor.slice.actions.flushEditor({ uniqid }));\n }\n };\n\n const { control, watch } = useForm({\n defaultValues: { text: title ?? '' },\n criteriaMode: 'all',\n });\n\n React.useEffect(() => {\n const subscription = watch((data: any) => {\n setTitle(data.text);\n });\n return () => subscription.unsubscribe();\n }, [watch]);\n\n return wrapper ? (\n <div style={{ flex: 1, display: 'flex', flexDirection: 'column' }}>\n <JRCInputText\n name={'text'}\n control={control}\n placeholder={intl.formatMessage({ id: 'EDITOR_Widget_Wrapper_Title' })}></JRCInputText>\n <JRCButton onClick={onClick} variant={'outlined'} minWidth={'100%'}>\n {intl.formatMessage({ id: 'EDITOR_Save_Widget' })}\n </JRCButton>\n </div>\n ) : (\n <>No wrapper</>\n );\n};\n","import React from 'react';\n\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { Editor } from './Editor';\n\nimport JRCore from 'App';\n\nconst JRCIcon = JRCore.registry.getLazyComponent('Icon');\n\nimport {\n CSSEditor,\n CSSEditorAction,\n CSSEditorContent,\n CSSEditorHeader,\n CSSEditorLabel,\n CSSEditorMenu,\n CSSEditorMenuButton,\n} from './style';\nimport { EDITOR_WIDTH } from './const';\n\nimport { useIntl } from 'react-intl';\nimport { WidgetEditor, EditorsRootState, Widget } from 'jamespot-front-business';\nimport { EditorTabWidgets } from './EditorTabWidgets';\nimport { EditorTabWrapper } from './EditorTabWrapper';\nimport { WidgetsRootState } from 'jamespot-user-api';\n\n/*\n Editor wrapper (right part)\n*/\nexport const EditorWrapper = ({ uniqid }: { uniqid: string }) => {\n const intl = useIntl();\n const dispatch = useDispatch();\n const editor = useSelector((state: EditorsRootState) => WidgetEditor.selectors.selectEditor(state, uniqid));\n\n const def = Widget.definition(editor?.name);\n\n const [visible, isVisibile] = React.useState<boolean>(false);\n const [tab, setTab] = React.useState<string>('default');\n\n const onClose = () => {\n dispatch(WidgetEditor.slice.actions.flushEditor({ uniqid }));\n };\n\n React.useEffect(() => {\n setTimeout(() => {\n isVisibile(true);\n }, 0);\n });\n\n return editor ? (\n <div style={{ width: EDITOR_WIDTH, position: 'relative' }}>\n <CSSEditor visible={visible}>\n <CSSEditorMenu>\n {def.panel.useWrapper ? (\n <CSSEditorMenuButton on={tab === 'wrapper'} onClick={() => setTab('wrapper')}>\n <JRCIcon name=\"icon-font\" color=\"grey2\" />\n </CSSEditorMenuButton>\n ) : (\n <></>\n )}\n {def.panel.useEditor ? (\n <CSSEditorMenuButton on={tab === 'default'} onClick={() => setTab('default')}>\n <JRCIcon name=\"icon-pen\" color=\"grey2\" />\n </CSSEditorMenuButton>\n ) : (\n <></>\n )}\n {def.panel.useWidgets ? (\n <EditorConditonalTab uniqid={uniqid}>\n <CSSEditorMenuButton on={tab === 'widgets'} onClick={() => setTab('widgets')}>\n <JRCIcon name=\"icon-sliders\" color=\"grey2\" />\n </CSSEditorMenuButton>\n </EditorConditonalTab>\n ) : (\n <></>\n )}\n </CSSEditorMenu>\n <div style={{ flex: 1, display: 'flex', flexDirection: 'column' }}>\n <CSSEditorHeader>\n <EditorPositionOption uniqid={uniqid} position={editor.position}></EditorPositionOption>\n <CSSEditorLabel>{intl.formatMessage({ id: def.label })}</CSSEditorLabel>\n <CSSEditorAction>\n <CSSEditorMenuButton onClick={onClose}>\n <JRCIcon name=\"icon-times\" color=\"grey2\" />\n </CSSEditorMenuButton>\n </CSSEditorAction>\n </CSSEditorHeader>\n <CSSEditorContent>\n {tab === 'default' && def.panel.useEditor ? <Editor uniqid={editor.uniqid} /> : <></>}\n {tab === 'wrapper' && def.panel.useWrapper ? (\n <EditorTabWrapper uniqid={editor.uniqid} />\n ) : (\n <></>\n )}\n {tab === 'widgets' && def.panel.useWidgets ? (\n <EditorTabWidgets uniqid={uniqid} namespace={def.name} />\n ) : (\n <></>\n )}\n </CSSEditorContent>\n </div>\n </CSSEditor>\n {editor?.popup ? (\n <div style={{ position: 'absolute', inset: 0, backgroundColor: '#000', opacity: '.7' }}></div>\n ) : (\n <></>\n )}\n </div>\n ) : (\n <></>\n );\n};\n\nconst EditorPositionOption = ({ uniqid, position }: { uniqid: string; position: 'left' | 'right' }) => {\n const dispatch = useDispatch();\n\n const onClick = () => {\n dispatch(\n WidgetEditor.slice.actions.setEditorPosition({ uniqid, position: position === 'left' ? 'right' : 'left' }),\n );\n };\n\n return (\n <CSSEditorAction>\n <CSSEditorMenuButton onClick={onClick}>\n <JRCIcon name={position === 'left' ? 'icon-angle-right' : 'icon-angle-left'} color=\"grey2\" />\n </CSSEditorMenuButton>\n </CSSEditorAction>\n );\n};\n\nconst EditorConditonalTab = ({ uniqid, children }: { uniqid: string; children: React.ReactElement }) => {\n const widgetState = useSelector((state: WidgetsRootState) => Widget.selectors.selectWidgetState(state, uniqid));\n\n if (widgetState?.initialized) {\n return children;\n }\n\n return <></>;\n};\n","import React from 'react';\n\nimport { useSelector } from 'react-redux';\n\nimport { EDITOR_TOP, EDITOR_WIDTH } from './const';\nimport { EditorPopup } from './EditorPopup';\nimport { EditorWrapper } from './EditorWrapper';\nimport { CSSEditorPortal } from './style';\nimport { WidgetEditor } from 'jamespot-front-business';\n\nimport styled from 'styled-components';\n\nexport const CSSEditorPortalWrapper = styled.div`\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 100;\n`;\n\nexport const CSSEditorPortalPopupWrapper = styled.div<{ on: boolean }>`\n flex: 1;\n display: flex;\n margintop: ${EDITOR_TOP}px;\n pointer-events: ${(props) => (props.on ? 'all' : 'none')};\n`;\n\nexport const CSSEditorPortalRow = styled.div`\n flex: 1;\n display: flex;\n flex-direction: row;\n pointer-events: none;\n`;\n\nexport const CSSEditorPortalFreeSpace = styled.div`\n width: ${EDITOR_WIDTH}px;\n pointer-events: none;\n`;\n\n/*\n Editors wrapper (tamplate)\n*/\nexport const EditorsPortal = () => {\n const editors = useSelector(WidgetEditor.selectors.selectEditors);\n return (\n <CSSEditorPortalWrapper>\n {editors.map((editor, index: number) => {\n if (editor.position === 'left') {\n return (\n <CSSEditorPortal on={false} key={index}>\n <CSSEditorPortalRow>\n <EditorWrapper uniqid={editor.uniqid}></EditorWrapper>\n <CSSEditorPortalPopupWrapper on={editor.popup !== undefined}>\n <EditorPopup uniqid={editor.uniqid} />\n </CSSEditorPortalPopupWrapper>\n <CSSEditorPortalFreeSpace />\n </CSSEditorPortalRow>\n </CSSEditorPortal>\n );\n }\n\n return (\n <CSSEditorPortal on={false} key={index}>\n <CSSEditorPortalRow>\n <CSSEditorPortalFreeSpace />\n <CSSEditorPortalPopupWrapper on={editor.popup !== undefined}>\n <EditorPopup uniqid={editor.uniqid} />\n </CSSEditorPortalPopupWrapper>\n <EditorWrapper uniqid={editor.uniqid}></EditorWrapper>\n </CSSEditorPortalRow>\n </CSSEditorPortal>\n );\n })}\n </CSSEditorPortalWrapper>\n );\n};\n"],"names":["FormElm","props","stretch","FieldsetWrapper","DisplayForm","ref","formRef","configuration","defaultValues","useDisplay","fields","type","useForm","criteriaMode","handleSubmit","control","reset","formFn","current","scrollTo","onSubmit","map","Input","conf","key","name","dataCy","readOnly","extraInputs","buttons","Empty","Container","AppColumn","MainColumn","TwoColLayout","extensionRoute","routes","description","mode","intl","useIntl","pathname","useLocation","ROUTES_ARRAY","Object","values","activeTab","setActiveTab","tabs","tab","label","formatMessage","id","href","path","group","undefined","activeRoute","find","route","fallback","Outlet","JRCLoader","WidgetState","uniqid","inplace","state","useSelector","def","loading","style","position","inset","backgroundColor","display","flex","justifyContent","alignItems","hover","initialized","src","img","JRCWidgetArticleButton","JRCWidgetArticleGallery","JRCWidgetArticleAttachment","JRCWidgetArticleImage","JRCWidgetArticleTitle","JRCWidgetArticleText","DisplayWidget","widget","width","isComponentVisible","onClick","dispatch","useDispatch","token","onChange","content","override","onStateChange","states","Uploader","accept","multiple","JRCFormFile","WidgetInplaceUpload","initialFiles","allowAutoOpening","isActive","widgets","currentEditableWidgetId","shallowEqual","uploadRef","fileUploadStep","setFileUploadStep","fileCount","setFileCount","fileResponses","setFileResponses","fileResponse","click","mounted","JRCWidgetEmptyInplace","url","height","overflow","onUploadStart","count","prevCount","onUploadSuccess","prevStep","prevFileResponses","apiFileToWidgetFile","CSSUploadFileWrapper","WidgetInplaceWrapper","widgetWrapper","galleryFiles","files","marginTop","length","fs","Array","isArray","forEach","file","CSSWidgetLayer","opacity","pointerEvents","WidgetLayer","layers","ids","layer","index","Layer","LayerWidget","layerId","visible","locked","top","y","left","x","DraggableHandler","onMouseUp","BETA_JRCDoubleClick","onDoubleTap","children","mouseIsDown","setMouseDown","mouse","setMouse","start","setStart","child","setChild","handleMouseMove","event","dx","clientX","dy","clientY","handleMouseUp","document","addEventListener","removeEventListener","onMouseDown","nativeEvent","WidgetWrapperCore","isBusy","busy","indexOrder","editableMap","setIsComponentVisible","registerEditor","openingType","openingTypeLink","window","open","target","minWidth","CSSSquareWidgetWrapper","CSSSquareWidget","theme","color","grey2","available","CSSWidgetButton","primary","CSSWrapWidgetWrapper","CSSWrapTitle","CSSWrapWidget","JRCButton","JRCModal","WidgetList","namespace","isOpen","setOpen","getBuilderWidgets","args","title","showIconClose","portalId","isFullHeight","closeHandler","className","variant","WidgetModeArticle","CSSEditorPortal","on","CSSEditorHeader","CSSEditorAction","CSSEditorLabel","CSSEditor","white","CSSEditorContent","CSSEditorMenu","CSSEditorMenuButton","grey1","CSSEditorWidget","grey0","CSSEditorWidgetLabel","CSSEditorWidgetOption","EditorPopup","editor","popup","view","flexDirection","JRCIcon","JRCWidgetArticleTitleEditor","JRCWidgetArticleImageEditor","JRCWidgetArticleTextEditor","JRCWidgetArticleGalleryEditor","JRCWidgetArticleButtonEditor","JRCWidgetArticleAttachmentEditor","Editor","onSave","onOpen","EditorTabWidgets","Layers","filter","_","n","BETA_JRCDragAndDrop","onDrag","renderEl","EditorWidgetLayer","elms","EditorWidgetLayerLock","EditorWidgetLayerVisibility","EditorWidgetLayerFlush","EditorTabWrapper","wrapper","setTitle","watch","text","subscription","data","unsubscribe","JRCInputText","placeholder","EditorWrapper","isVisibile","setTab","setTimeout","panel","useWrapper","useEditor","useWidgets","EditorConditonalTab","EditorPositionOption","widgetState","CSSEditorPortalWrapper","CSSEditorPortalPopupWrapper","CSSEditorPortalRow","CSSEditorPortalFreeSpace","EditorsPortal","editors"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- (()=>{var t={855:t=>{function e(t){t=t||{},this.ms=t.min||100,this.max=t.max||1e4,this.factor=t.factor||2,this.jitter=t.jitter>0&&t.jitter<=1?t.jitter:0,this.attempts=0}t.exports=e,e.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),s=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-s:t+s}return 0|Math.min(t,this.max)},e.prototype.reset=function(){this.attempts=0},e.prototype.setMin=function(t){this.ms=t},e.prototype.setMax=function(t){this.max=t},e.prototype.setJitter=function(t){this.jitter=t}},973:(t,e)=>{!function(t){"use strict";e.encode=function(e){var s,n=new Uint8Array(e),r=n.length,o="";for(s=0;s<r;s+=3)o+=t[n[s]>>2],o+=t[(3&n[s])<<4|n[s+1]>>4],o+=t[(15&n[s+1])<<2|n[s+2]>>6],o+=t[63&n[s+2]];return r%3==2?o=o.substring(0,o.length-1)+"=":r%3==1&&(o=o.substring(0,o.length-2)+"=="),o},e.decode=function(e){var s,n,r,o,i,a=.75*e.length,c=e.length,h=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);var p=new ArrayBuffer(a),u=new Uint8Array(p);for(s=0;s<c;s+=4)n=t.indexOf(e[s]),r=t.indexOf(e[s+1]),o=t.indexOf(e[s+2]),i=t.indexOf(e[s+3]),u[h++]=n<<2|r>>4,u[h++]=(15&r)<<4|o>>2,u[h++]=(3&o)<<6|63&i;return p}}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")},69:t=>{function e(t){if(t)return function(t){for(var s in e.prototype)t[s]=e.prototype[s];return t}(t)}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},e.prototype.once=function(t,e){function s(){this.off(t,s),e.apply(this,arguments)}return s.fn=e,this.on(t,s),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var s,n=this._callbacks["$"+t];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var r=0;r<n.length;r++)if((s=n[r])===e||s.fn===e){n.splice(r,1);break}return 0===n.length&&delete this._callbacks["$"+t],this},e.prototype.emit=function(t){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),s=this._callbacks["$"+t],n=1;n<arguments.length;n++)e[n-1]=arguments[n];if(s){n=0;for(var r=(s=s.slice(0)).length;n<r;++n)s[n].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks["$"+t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},193:(t,e,s)=>{e.formatArgs=function(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+t.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;e.splice(1,0,s,"color: inherit");let n=0,r=0;e[0].replace(/%[a-zA-Z%]/g,(t=>{"%%"!==t&&(n++,"%c"===t&&(r=n))})),e.splice(r,0,s)},e.save=function(t){try{t?e.storage.setItem("debug",t):e.storage.removeItem("debug")}catch(t){}},e.load=function(){let t;try{t=e.storage.getItem("debug")}catch(t){}return!t&&"undefined"!=typeof process&&"env"in process&&(t=process.env.DEBUG),t},e.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},e.storage=function(){try{return localStorage}catch(t){}}(),e.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],e.log=console.debug||console.log||(()=>{}),t.exports=s(6)(e);const{formatters:n}=t.exports;n.j=function(t){try{return JSON.stringify(t)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}},6:(t,e,s)=>{t.exports=function(t){function e(t){let s,r,o,i=null;function a(...t){if(!a.enabled)return;const n=a,r=Number(new Date),o=r-(s||r);n.diff=o,n.prev=s,n.curr=r,s=r,t[0]=e.coerce(t[0]),"string"!=typeof t[0]&&t.unshift("%O");let i=0;t[0]=t[0].replace(/%([a-zA-Z%])/g,((s,r)=>{if("%%"===s)return"%";i++;const o=e.formatters[r];if("function"==typeof o){const e=t[i];s=o.call(n,e),t.splice(i,1),i--}return s})),e.formatArgs.call(n,t),(n.log||e.log).apply(n,t)}return a.namespace=t,a.useColors=e.useColors(),a.color=e.selectColor(t),a.extend=n,a.destroy=e.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(r!==e.namespaces&&(r=e.namespaces,o=e.enabled(t)),o),set:t=>{i=t}}),"function"==typeof e.init&&e.init(a),a}function n(t,s){const n=e(this.namespace+(void 0===s?":":s)+t);return n.log=this.log,n}function r(t){return t.toString().substring(2,t.toString().length-2).replace(/\.\*\?$/,"*")}return e.debug=e,e.default=e,e.coerce=function(t){return t instanceof Error?t.stack||t.message:t},e.disable=function(){const t=[...e.names.map(r),...e.skips.map(r).map((t=>"-"+t))].join(",");return e.enable(""),t},e.enable=function(t){let s;e.save(t),e.namespaces=t,e.names=[],e.skips=[];const n=("string"==typeof t?t:"").split(/[\s,]+/),r=n.length;for(s=0;s<r;s++)n[s]&&("-"===(t=n[s].replace(/\*/g,".*?"))[0]?e.skips.push(new RegExp("^"+t.substr(1)+"$")):e.names.push(new RegExp("^"+t+"$")))},e.enabled=function(t){if("*"===t[t.length-1])return!0;let s,n;for(s=0,n=e.skips.length;s<n;s++)if(e.skips[s].test(t))return!1;for(s=0,n=e.names.length;s<n;s++)if(e.names[s].test(t))return!0;return!1},e.humanize=s(264),e.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(t).forEach((s=>{e[s]=t[s]})),e.names=[],e.skips=[],e.formatters={},e.selectColor=function(t){let s=0;for(let e=0;e<t.length;e++)s=(s<<5)-s+t.charCodeAt(e),s|=0;return e.colors[Math.abs(s)%e.colors.length]},e.enable(e.load()),e}},14:t=>{t.exports="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")()},797:(t,e,s)=>{const n=s(598);t.exports=(t,e)=>new n(t,e),t.exports.Socket=n,t.exports.protocol=n.protocol,t.exports.Transport=s(903),t.exports.transports=s(382),t.exports.parser=s(164)},598:(t,e,s)=>{const n=s(382),r=s(69),o=s(193)("engine.io-client:socket"),i=s(164),a=s(986),c=s(12),{installTimerFunctions:h}=s(213);class p extends r{constructor(t,e={}){super(),t&&"object"==typeof t&&(e=t,t=null),t?(t=a(t),e.hostname=t.host,e.secure="https"===t.protocol||"wss"===t.protocol,e.port=t.port,t.query&&(e.query=t.query)):e.host&&(e.hostname=a(e.host).host),h(this,e),this.secure=null!=e.secure?e.secure:"undefined"!=typeof location&&"https:"===location.protocol,e.hostname&&!e.port&&(e.port=this.secure?"443":"80"),this.hostname=e.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=e.port||("undefined"!=typeof location&&location.port?location.port:this.secure?443:80),this.transports=e.transports||["polling","websocket"],this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,jsonp:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},e),this.opts.path=this.opts.path.replace(/\/$/,"")+"/","string"==typeof this.opts.query&&(this.opts.query=c.decode(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&addEventListener("beforeunload",(()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())}),!1),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close")},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(t){o('creating transport "%s"',t);const e=function(t){const e={};for(let s in t)t.hasOwnProperty(s)&&(e[s]=t[s]);return e}(this.opts.query);e.EIO=i.protocol,e.transport=t,this.id&&(e.sid=this.id);const s=Object.assign({},this.opts.transportOptions[t],this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return o("options: %j",s),new n[t](s)}open(){let t;if(this.opts.rememberUpgrade&&p.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emit("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(t){return o("error while creating transport: %s",t),this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}setTransport(t){o("setting transport %s",t.name),this.transport&&(o("clearing existing transport %s",this.transport.name),this.transport.removeAllListeners()),this.transport=t,t.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(()=>{this.onClose("transport close")}))}probe(t){o('probing transport "%s"',t);let e=this.createTransport(t,{probe:1}),s=!1;p.priorWebsocketSuccess=!1;const n=()=>{s||(o('probe transport "%s" opened',t),e.send([{type:"ping",data:"probe"}]),e.once("packet",(n=>{if(!s)if("pong"===n.type&&"probe"===n.data){if(o('probe transport "%s" pong',t),this.upgrading=!0,this.emit("upgrading",e),!e)return;p.priorWebsocketSuccess="websocket"===e.name,o('pausing current transport "%s"',this.transport.name),this.transport.pause((()=>{s||"closed"!==this.readyState&&(o("changing transport and sending upgrade packet"),u(),this.setTransport(e),e.send([{type:"upgrade"}]),this.emit("upgrade",e),e=null,this.upgrading=!1,this.flush())}))}else{o('probe transport "%s" failed',t);const s=new Error("probe error");s.transport=e.name,this.emit("upgradeError",s)}})))};function r(){s||(s=!0,u(),e.close(),e=null)}const i=s=>{const n=new Error("probe error: "+s);n.transport=e.name,r(),o('probe transport "%s" failed because of error: %s',t,s),this.emit("upgradeError",n)};function a(){i("transport closed")}function c(){i("socket closed")}function h(t){e&&t.name!==e.name&&(o('"%s" works - aborting "%s"',t.name,e.name),r())}const u=()=>{e.removeListener("open",n),e.removeListener("error",i),e.removeListener("close",a),this.removeListener("close",c),this.removeListener("upgrading",h)};e.once("open",n),e.once("error",i),e.once("close",a),this.once("close",c),this.once("upgrading",h),e.open()}onOpen(){if(o("socket open"),this.readyState="open",p.priorWebsocketSuccess="websocket"===this.transport.name,this.emit("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause){o("starting upgrade probes");let t=0;const e=this.upgrades.length;for(;t<e;t++)this.probe(this.upgrades[t])}}onPacket(t){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(o('socket receive: type "%s", data "%s"',t.type,t.data),this.emit("packet",t),this.emit("heartbeat"),t.type){case"open":this.onHandshake(JSON.parse(t.data));break;case"ping":this.resetPingTimeout(),this.sendPacket("pong"),this.emit("ping"),this.emit("pong");break;case"error":const e=new Error("server error");e.code=t.data,this.onError(e);break;case"message":this.emit("data",t.data),this.emit("message",t.data)}else o('packet received with socket readyState "%s"',this.readyState)}onHandshake(t){this.emit("handshake",t),this.id=t.sid,this.transport.query.sid=t.sid,this.upgrades=this.filterUpgrades(t.upgrades),this.pingInterval=t.pingInterval,this.pingTimeout=t.pingTimeout,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emit("drain"):this.flush()}flush(){"closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(o("flushing %d packets in socket",this.writeBuffer.length),this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emit("flush"))}write(t,e,s){return this.sendPacket("message",t,e,s),this}send(t,e,s){return this.sendPacket("message",t,e,s),this}sendPacket(t,e,s,n){if("function"==typeof e&&(n=e,e=void 0),"function"==typeof s&&(n=s,s=null),"closing"===this.readyState||"closed"===this.readyState)return;(s=s||{}).compress=!1!==s.compress;const r={type:t,data:e,options:s};this.emit("packetCreate",r),this.writeBuffer.push(r),n&&this.once("flush",n),this.flush()}close(){const t=()=>{this.onClose("forced close"),o("socket closing - telling transport to close"),this.transport.close()},e=()=>{this.removeListener("upgrade",e),this.removeListener("upgradeError",e),t()},s=()=>{this.once("upgrade",e),this.once("upgradeError",e)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?s():t()})):this.upgrading?s():t()),this}onError(t){o("socket error %j",t),p.priorWebsocketSuccess=!1,this.emit("error",t),this.onClose("transport error",t)}onClose(t,e){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(o('socket close with reason: "%s"',t),this.clearTimeoutFn(this.pingIntervalTimer),this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&removeEventListener("offline",this.offlineEventListener,!1),this.readyState="closed",this.id=null,this.emit("close",t,e),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(t){const e=[];let s=0;const n=t.length;for(;s<n;s++)~this.transports.indexOf(t[s])&&e.push(t[s]);return e}}p.priorWebsocketSuccess=!1,p.protocol=i.protocol,t.exports=p},903:(t,e,s)=>{const n=s(164),r=s(69),{installTimerFunctions:o}=s(213),i=s(193)("engine.io-client:transport");t.exports=class extends r{constructor(t){super(),o(this,t),this.opts=t,this.query=t.query,this.readyState="",this.socket=t.socket}onError(t,e){const s=new Error(t);return s.type="TransportError",s.description=e,this.emit("error",s),this}open(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(t){"open"===this.readyState?this.write(t):i("transport is not open, discarding packets")}onOpen(){this.readyState="open",this.writable=!0,this.emit("open")}onData(t){const e=n.decodePacket(t,this.socket.binaryType);this.onPacket(e)}onPacket(t){this.emit("packet",t)}onClose(){this.readyState="closed",this.emit("close")}}},382:(t,e,s)=>{const n=s(814),r=s(905),o=s(629),i=s(331);e.polling=function(t){let e,s=!1,i=!1;const a=!1!==t.jsonp;if("undefined"!=typeof location){const e="https:"===location.protocol;let n=location.port;n||(n=e?443:80),s=t.hostname!==location.hostname||n!==t.port,i=t.secure!==e}if(t.xdomain=s,t.xscheme=i,e=new n(t),"open"in e&&!t.forceJSONP)return new r(t);if(!a)throw new Error("JSONP disabled");return new o(t)},e.websocket=i},629:(t,e,s)=>{const n=s(290),r=s(14),o=/\n/g,i=/\\n/g;let a;t.exports=class extends n{constructor(t){super(t),this.query=this.query||{},a||(a=r.___eio=r.___eio||[]),this.index=a.length,a.push(this.onData.bind(this)),this.query.j=this.index}get supportsBinary(){return!1}doClose(){this.script&&(this.script.onerror=()=>{},this.script.parentNode.removeChild(this.script),this.script=null),this.form&&(this.form.parentNode.removeChild(this.form),this.form=null,this.iframe=null),super.doClose()}doPoll(){const t=document.createElement("script");this.script&&(this.script.parentNode.removeChild(this.script),this.script=null),t.async=!0,t.src=this.uri(),t.onerror=t=>{this.onError("jsonp poll error",t)};const e=document.getElementsByTagName("script")[0];e?e.parentNode.insertBefore(t,e):(document.head||document.body).appendChild(t),this.script=t,"undefined"!=typeof navigator&&/gecko/i.test(navigator.userAgent)&&this.setTimeoutFn((function(){const t=document.createElement("iframe");document.body.appendChild(t),document.body.removeChild(t)}),100)}doWrite(t,e){let s;if(!this.form){const t=document.createElement("form"),e=document.createElement("textarea"),s=this.iframeId="eio_iframe_"+this.index;t.className="socketio",t.style.position="absolute",t.style.top="-1000px",t.style.left="-1000px",t.target=s,t.method="POST",t.setAttribute("accept-charset","utf-8"),e.name="d",t.appendChild(e),document.body.appendChild(t),this.form=t,this.area=e}function n(){r(),e()}this.form.action=this.uri();const r=()=>{if(this.iframe)try{this.form.removeChild(this.iframe)}catch(t){this.onError("jsonp polling iframe removal error",t)}try{const t='<iframe src="javascript:0" name="'+this.iframeId+'">';s=document.createElement(t)}catch(t){s=document.createElement("iframe"),s.name=this.iframeId,s.src="javascript:0"}s.id=this.iframeId,this.form.appendChild(s),this.iframe=s};r(),t=t.replace(i,"\\\n"),this.area.value=t.replace(o,"\\n");try{this.form.submit()}catch(t){}this.iframe.attachEvent?this.iframe.onreadystatechange=()=>{"complete"===this.iframe.readyState&&n()}:this.iframe.onload=n}}},905:(t,e,s)=>{const n=s(814),r=s(290),o=s(69),{pick:i,installTimerFunctions:a}=s(213),c=s(14),h=s(193)("engine.io-client:polling-xhr");function p(){}const u=null!=new n({xdomain:!1}).responseType;class l extends o{constructor(t,e){super(),a(this,e),this.opts=e,this.method=e.method||"GET",this.uri=t,this.async=!1!==e.async,this.data=void 0!==e.data?e.data:null,this.create()}create(){const t=i(this.opts,"agent","enablesXDR","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd,t.xscheme=!!this.opts.xs;const e=this.xhr=new n(t);try{h("xhr open %s: %s",this.method,this.uri),e.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){e.setDisableHeaderCheck&&e.setDisableHeaderCheck(!0);for(let t in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(t)&&e.setRequestHeader(t,this.opts.extraHeaders[t])}}catch(t){}if("POST"===this.method)try{e.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{e.setRequestHeader("Accept","*/*")}catch(t){}"withCredentials"in e&&(e.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(e.timeout=this.opts.requestTimeout),this.hasXDR()?(e.onload=()=>{this.onLoad()},e.onerror=()=>{this.onError(e.responseText)}):e.onreadystatechange=()=>{4===e.readyState&&(200===e.status||1223===e.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof e.status?e.status:0)}),0))},h("xhr data %s",this.data),e.send(this.data)}catch(t){return void this.setTimeoutFn((()=>{this.onError(t)}),0)}"undefined"!=typeof document&&(this.index=l.requestsCount++,l.requests[this.index]=this)}onSuccess(){this.emit("success"),this.cleanup()}onData(t){this.emit("data",t),this.onSuccess()}onError(t){this.emit("error",t),this.cleanup(!0)}cleanup(t){if(void 0!==this.xhr&&null!==this.xhr){if(this.hasXDR()?this.xhr.onload=this.xhr.onerror=p:this.xhr.onreadystatechange=p,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete l.requests[this.index],this.xhr=null}}onLoad(){const t=this.xhr.responseText;null!==t&&this.onData(t)}hasXDR(){return"undefined"!=typeof XDomainRequest&&!this.xs&&this.enablesXDR}abort(){this.cleanup()}}function d(){for(let t in l.requests)l.requests.hasOwnProperty(t)&&l.requests[t].abort()}l.requestsCount=0,l.requests={},"undefined"!=typeof document&&("function"==typeof attachEvent?attachEvent("onunload",d):"function"==typeof addEventListener&&addEventListener("onpagehide"in c?"pagehide":"unload",d,!1)),t.exports=class extends r{constructor(t){if(super(t),"undefined"!=typeof location){const e="https:"===location.protocol;let s=location.port;s||(s=e?443:80),this.xd="undefined"!=typeof location&&t.hostname!==location.hostname||s!==t.port,this.xs=t.secure!==e}const e=t&&t.forceBase64;this.supportsBinary=u&&!e}request(t={}){return Object.assign(t,{xd:this.xd,xs:this.xs},this.opts),new l(this.uri(),t)}doWrite(t,e){const s=this.request({method:"POST",data:t});s.on("success",e),s.on("error",(t=>{this.onError("xhr post error",t)}))}doPoll(){h("xhr poll");const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(t=>{this.onError("xhr poll error",t)})),this.pollXhr=t}},t.exports.Request=l},290:(t,e,s)=>{const n=s(903),r=s(12),o=s(164),i=s(146),a=s(193)("engine.io-client:polling");t.exports=class extends n{get name(){return"polling"}doOpen(){this.poll()}pause(t){this.readyState="pausing";const e=()=>{a("paused"),this.readyState="paused",t()};if(this.polling||!this.writable){let t=0;this.polling&&(a("we are currently polling - waiting to pause"),t++,this.once("pollComplete",(function(){a("pre-pause polling complete"),--t||e()}))),this.writable||(a("we are currently writing - waiting to pause"),t++,this.once("drain",(function(){a("pre-pause writing complete"),--t||e()})))}else e()}poll(){a("polling"),this.polling=!0,this.doPoll(),this.emit("poll")}onData(t){a("polling got data %s",t),o.decodePayload(t,this.socket.binaryType).forEach((t=>{if("opening"===this.readyState&&"open"===t.type&&this.onOpen(),"close"===t.type)return this.onClose(),!1;this.onPacket(t)})),"closed"!==this.readyState&&(this.polling=!1,this.emit("pollComplete"),"open"===this.readyState?this.poll():a('ignoring poll - transport state "%s"',this.readyState))}doClose(){const t=()=>{a("writing close packet"),this.write([{type:"close"}])};"open"===this.readyState?(a("transport open - closing"),t()):(a("transport not open - deferring close"),this.once("open",t))}write(t){this.writable=!1,o.encodePayload(t,(t=>{this.doWrite(t,(()=>{this.writable=!0,this.emit("drain")}))}))}uri(){let t=this.query||{};const e=this.opts.secure?"https":"http";let s="";return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=i()),this.supportsBinary||t.sid||(t.b64=1),t=r.encode(t),this.opts.port&&("https"===e&&443!==Number(this.opts.port)||"http"===e&&80!==Number(this.opts.port))&&(s=":"+this.opts.port),t.length&&(t="?"+t),e+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+t}}},556:(t,e,s)=>{const n=s(14),r="function"==typeof Promise&&"function"==typeof Promise.resolve?t=>Promise.resolve().then(t):(t,e)=>e(t,0);t.exports={WebSocket:n.WebSocket||n.MozWebSocket,usingBrowserWebSocket:!0,defaultBinaryType:"arraybuffer",nextTick:r}},331:(t,e,s)=>{const n=s(903),r=s(164),o=s(12),i=s(146),{pick:a}=s(213),{WebSocket:c,usingBrowserWebSocket:h,defaultBinaryType:p,nextTick:u}=s(556),l=s(193)("engine.io-client:websocket"),d="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class f extends n{constructor(t){super(t),this.supportsBinary=!t.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const t=this.uri(),e=this.opts.protocols,s=d?{}:a(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(s.headers=this.opts.extraHeaders);try{this.ws=h&&!d?e?new c(t,e):new c(t):new c(t,e,s)}catch(t){return this.emit("error",t)}this.ws.binaryType=this.socket.binaryType||p,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=this.onClose.bind(this),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let e=0;e<t.length;e++){const s=t[e],n=e===t.length-1;r.encodePacket(s,this.supportsBinary,(t=>{const e={};!h&&(s.options&&(e.compress=s.options.compress),this.opts.perMessageDeflate)&&("string"==typeof t?Buffer.byteLength(t):t.length)<this.opts.perMessageDeflate.threshold&&(e.compress=!1);try{h?this.ws.send(t):this.ws.send(t,e)}catch(t){l("websocket closed before onclose event")}n&&u((()=>{this.writable=!0,this.emit("drain")}),this.setTimeoutFn)}))}}onClose(){n.prototype.onClose.call(this)}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let t=this.query||{};const e=this.opts.secure?"wss":"ws";let s="";return this.opts.port&&("wss"===e&&443!==Number(this.opts.port)||"ws"===e&&80!==Number(this.opts.port))&&(s=":"+this.opts.port),this.opts.timestampRequests&&(t[this.opts.timestampParam]=i()),this.supportsBinary||(t.b64=1),t=o.encode(t),t.length&&(t="?"+t),e+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+t}check(){return!(!c||"__initialize"in c&&this.name===f.prototype.name)}}t.exports=f},213:(t,e,s)=>{const n=s(14);t.exports.pick=(t,...e)=>e.reduce(((e,s)=>(t.hasOwnProperty(s)&&(e[s]=t[s]),e)),{});const r=setTimeout,o=clearTimeout;t.exports.installTimerFunctions=(t,e)=>{e.useNativeTimers?(t.setTimeoutFn=r.bind(n),t.clearTimeoutFn=o.bind(n)):(t.setTimeoutFn=setTimeout.bind(n),t.clearTimeoutFn=clearTimeout.bind(n))}},814:(t,e,s)=>{const n=s(87),r=s(14);t.exports=function(t){const e=t.xdomain,s=t.xscheme,o=t.enablesXDR;try{if("undefined"!=typeof XMLHttpRequest&&(!e||n))return new XMLHttpRequest}catch(t){}try{if("undefined"!=typeof XDomainRequest&&!s&&o)return new XDomainRequest}catch(t){}if(!e)try{return new(r[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(t){}}},25:t=>{const e=Object.create(null);e.open="0",e.close="1",e.ping="2",e.pong="3",e.message="4",e.upgrade="5",e.noop="6";const s=Object.create(null);Object.keys(e).forEach((t=>{s[e[t]]=t})),t.exports={PACKET_TYPES:e,PACKET_TYPES_REVERSE:s,ERROR_PACKET:{type:"error",data:"parser error"}}},267:(t,e,s)=>{const{PACKET_TYPES_REVERSE:n,ERROR_PACKET:r}=s(25);let o;"function"==typeof ArrayBuffer&&(o=s(973));const i=(t,e)=>{if(o){const s=o.decode(t);return a(s,e)}return{base64:!0,data:t}},a=(t,e)=>"blob"===e&&t instanceof ArrayBuffer?new Blob([t]):t;t.exports=(t,e)=>{if("string"!=typeof t)return{type:"message",data:a(t,e)};const s=t.charAt(0);return"b"===s?{type:"message",data:i(t.substring(1),e)}:n[s]?t.length>1?{type:n[s],data:t.substring(1)}:{type:n[s]}:r}},519:(t,e,s)=>{const{PACKET_TYPES:n}=s(25),r="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),o="function"==typeof ArrayBuffer,i=(t,e)=>{const s=new FileReader;return s.onload=function(){const t=s.result.split(",")[1];e("b"+t)},s.readAsDataURL(t)};t.exports=({type:t,data:e},s,a)=>{return r&&e instanceof Blob?s?a(e):i(e,a):o&&(e instanceof ArrayBuffer||(c=e,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(c):c&&c.buffer instanceof ArrayBuffer))?s?a(e):i(new Blob([e]),a):a(n[t]+(e||""));var c}},164:(t,e,s)=>{const n=s(519),r=s(267),o=String.fromCharCode(30);t.exports={protocol:4,encodePacket:n,encodePayload:(t,e)=>{const s=t.length,r=new Array(s);let i=0;t.forEach(((t,a)=>{n(t,!1,(t=>{r[a]=t,++i===s&&e(r.join(o))}))}))},decodePacket:r,decodePayload:(t,e)=>{const s=t.split(o),n=[];for(let t=0;t<s.length;t++){const o=r(s[t],e);if(n.push(o),"error"===o.type)break}return n}}},87:t=>{try{t.exports="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){t.exports=!1}},264:t=>{var e=1e3,s=60*e,n=60*s,r=24*n;function o(t,e,s,n){var r=e>=1.5*s;return Math.round(t/s)+" "+n+(r?"s":"")}t.exports=function(t,i){i=i||{};var a,c,h=typeof t;if("string"===h&&t.length>0)return function(t){if(!((t=String(t)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(o){var i=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*r;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(t);if("number"===h&&isFinite(t))return i.long?(a=t,(c=Math.abs(a))>=r?o(a,c,r,"day"):c>=n?o(a,c,n,"hour"):c>=s?o(a,c,s,"minute"):c>=e?o(a,c,e,"second"):a+" ms"):function(t){var o=Math.abs(t);return o>=r?Math.round(t/r)+"d":o>=n?Math.round(t/n)+"h":o>=s?Math.round(t/s)+"m":o>=e?Math.round(t/e)+"s":t+"ms"}(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))}},12:(t,e)=>{e.encode=function(t){var e="";for(var s in t)t.hasOwnProperty(s)&&(e.length&&(e+="&"),e+=encodeURIComponent(s)+"="+encodeURIComponent(t[s]));return e},e.decode=function(t){for(var e={},s=t.split("&"),n=0,r=s.length;n<r;n++){var o=s[n].split("=");e[decodeURIComponent(o[0])]=decodeURIComponent(o[1])}return e}},986:t=>{var e=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,s=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];t.exports=function(t){var n,r,o=t,i=t.indexOf("["),a=t.indexOf("]");-1!=i&&-1!=a&&(t=t.substring(0,i)+t.substring(i,a).replace(/:/g,";")+t.substring(a,t.length));for(var c,h,p=e.exec(t||""),u={},l=14;l--;)u[s[l]]=p[l]||"";return-1!=i&&-1!=a&&(u.source=o,u.host=u.host.substring(1,u.host.length-1).replace(/;/g,":"),u.authority=u.authority.replace("[","").replace("]","").replace(/;/g,":"),u.ipv6uri=!0),u.pathNames=(n=u.path,r=n.replace(/\/{2,9}/g,"/").split("/"),"/"!=n.substr(0,1)&&0!==n.length||r.splice(0,1),"/"==n.substr(n.length-1,1)&&r.splice(r.length-1,1),r),u.queryKey=(c=u.query,h={},c.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(t,e,s){e&&(h[e]=s)})),h),u}},585:(t,e,s)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.reconstructPacket=e.deconstructPacket=void 0;const n=s(352);function r(t,e){if(!t)return t;if(n.isBinary(t)){const s={_placeholder:!0,num:e.length};return e.push(t),s}if(Array.isArray(t)){const s=new Array(t.length);for(let n=0;n<t.length;n++)s[n]=r(t[n],e);return s}if("object"==typeof t&&!(t instanceof Date)){const s={};for(const n in t)t.hasOwnProperty(n)&&(s[n]=r(t[n],e));return s}return t}function o(t,e){if(!t)return t;if(t&&t._placeholder)return e[t.num];if(Array.isArray(t))for(let s=0;s<t.length;s++)t[s]=o(t[s],e);else if("object"==typeof t)for(const s in t)t.hasOwnProperty(s)&&(t[s]=o(t[s],e));return t}e.deconstructPacket=function(t){const e=[],s=t.data,n=t;return n.data=r(s,e),n.attachments=e.length,{packet:n,buffers:e}},e.reconstructPacket=function(t,e){return t.data=o(t.data,e),t.attachments=void 0,t}},326:(t,e,s)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Decoder=e.Encoder=e.PacketType=e.protocol=void 0;const n=s(69),r=s(585),o=s(352),i=s(193)("socket.io-parser");var a;e.protocol=5,function(t){t[t.CONNECT=0]="CONNECT",t[t.DISCONNECT=1]="DISCONNECT",t[t.EVENT=2]="EVENT",t[t.ACK=3]="ACK",t[t.CONNECT_ERROR=4]="CONNECT_ERROR",t[t.BINARY_EVENT=5]="BINARY_EVENT",t[t.BINARY_ACK=6]="BINARY_ACK"}(a=e.PacketType||(e.PacketType={})),e.Encoder=class{encode(t){return i("encoding packet %j",t),t.type!==a.EVENT&&t.type!==a.ACK||!o.hasBinary(t)?[this.encodeAsString(t)]:(t.type=t.type===a.EVENT?a.BINARY_EVENT:a.BINARY_ACK,this.encodeAsBinary(t))}encodeAsString(t){let e=""+t.type;return t.type!==a.BINARY_EVENT&&t.type!==a.BINARY_ACK||(e+=t.attachments+"-"),t.nsp&&"/"!==t.nsp&&(e+=t.nsp+","),null!=t.id&&(e+=t.id),null!=t.data&&(e+=JSON.stringify(t.data)),i("encoded %j as %s",t,e),e}encodeAsBinary(t){const e=r.deconstructPacket(t),s=this.encodeAsString(e.packet),n=e.buffers;return n.unshift(s),n}};class c extends n{constructor(){super()}add(t){let e;if("string"==typeof t)e=this.decodeString(t),e.type===a.BINARY_EVENT||e.type===a.BINARY_ACK?(this.reconstructor=new h(e),0===e.attachments&&super.emit("decoded",e)):super.emit("decoded",e);else{if(!o.isBinary(t)&&!t.base64)throw new Error("Unknown type: "+t);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");e=this.reconstructor.takeBinaryData(t),e&&(this.reconstructor=null,super.emit("decoded",e))}}decodeString(t){let e=0;const s={type:Number(t.charAt(0))};if(void 0===a[s.type])throw new Error("unknown packet type "+s.type);if(s.type===a.BINARY_EVENT||s.type===a.BINARY_ACK){const n=e+1;for(;"-"!==t.charAt(++e)&&e!=t.length;);const r=t.substring(n,e);if(r!=Number(r)||"-"!==t.charAt(e))throw new Error("Illegal attachments");s.attachments=Number(r)}if("/"===t.charAt(e+1)){const n=e+1;for(;++e&&","!==t.charAt(e)&&e!==t.length;);s.nsp=t.substring(n,e)}else s.nsp="/";const n=t.charAt(e+1);if(""!==n&&Number(n)==n){const n=e+1;for(;++e;){const s=t.charAt(e);if(null==s||Number(s)!=s){--e;break}if(e===t.length)break}s.id=Number(t.substring(n,e+1))}if(t.charAt(++e)){const n=function(t){try{return JSON.parse(t)}catch(t){return!1}}(t.substr(e));if(!c.isPayloadValid(s.type,n))throw new Error("invalid payload");s.data=n}return i("decoded %s as %j",t,s),s}static isPayloadValid(t,e){switch(t){case a.CONNECT:return"object"==typeof e;case a.DISCONNECT:return void 0===e;case a.CONNECT_ERROR:return"string"==typeof e||"object"==typeof e;case a.EVENT:case a.BINARY_EVENT:return Array.isArray(e)&&e.length>0;case a.ACK:case a.BINARY_ACK:return Array.isArray(e)}}destroy(){this.reconstructor&&this.reconstructor.finishedReconstruction()}}e.Decoder=c;class h{constructor(t){this.packet=t,this.buffers=[],this.reconPack=t}takeBinaryData(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){const t=r.reconstructPacket(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}},352:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.hasBinary=e.isBinary=void 0;const s="function"==typeof ArrayBuffer,n=Object.prototype.toString,r="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===n.call(Blob),o="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===n.call(File);function i(t){return s&&(t instanceof ArrayBuffer||(t=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t.buffer instanceof ArrayBuffer)(t))||r&&t instanceof Blob||o&&t instanceof File}e.isBinary=i,e.hasBinary=function t(e,s){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let s=0,n=e.length;s<n;s++)if(t(e[s]))return!0;return!1}if(i(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return t(e.toJSON(),!0);for(const s in e)if(Object.prototype.hasOwnProperty.call(e,s)&&t(e[s]))return!0;return!1}},146:t=>{"use strict";var e,s="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),n={},r=0,o=0;function i(t){var e="";do{e=s[t%64]+e,t=Math.floor(t/64)}while(t>0);return e}function a(){var t=i(+new Date);return t!==e?(r=0,e=t):t+"."+i(r++)}for(;o<64;o++)n[s[o]]=o;a.encode=i,a.decode=function(t){var e=0;for(o=0;o<t.length;o++)e=64*e+n[t.charAt(o)];return e},t.exports=a},116:(t,e,s)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.io=e.Socket=e.Manager=e.protocol=void 0;const n=s(310),r=s(842),o=s(193)("socket.io-client");t.exports=e=a;const i=e.managers={};function a(t,e){"object"==typeof t&&(e=t,t=void 0),e=e||{};const s=(0,n.url)(t,e.path||"/socket.io"),a=s.source,c=s.id,h=s.path,p=i[c]&&h in i[c].nsps;let u;return e.forceNew||e["force new connection"]||!1===e.multiplex||p?(o("ignoring socket cache for %s",a),u=new r.Manager(a,e)):(i[c]||(o("new io instance for %s",a),i[c]=new r.Manager(a,e)),u=i[c]),s.query&&!e.query&&(e.query=s.queryKey),u.socket(s.path,e)}e.io=a;var c=s(326);Object.defineProperty(e,"protocol",{enumerable:!0,get:function(){return c.protocol}}),e.connect=a;var h=s(842);Object.defineProperty(e,"Manager",{enumerable:!0,get:function(){return h.Manager}});var p=s(259);Object.defineProperty(e,"Socket",{enumerable:!0,get:function(){return p.Socket}}),e.default=a},842:(t,e,s)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Manager=void 0;const n=s(797),r=s(213),o=s(259),i=s(326),a=s(773),c=s(855),h=s(328),p=s(193)("socket.io-client:manager");class u extends h.StrictEventEmitter{constructor(t,e){var s;super(),this.nsps={},this.subs=[],t&&"object"==typeof t&&(e=t,t=void 0),(e=e||{}).path=e.path||"/socket.io",this.opts=e,(0,r.installTimerFunctions)(this,e),this.reconnection(!1!==e.reconnection),this.reconnectionAttempts(e.reconnectionAttempts||1/0),this.reconnectionDelay(e.reconnectionDelay||1e3),this.reconnectionDelayMax(e.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(s=e.randomizationFactor)&&void 0!==s?s:.5),this.backoff=new c({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==e.timeout?2e4:e.timeout),this._readyState="closed",this.uri=t;const n=e.parser||i;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this._autoConnect=!1!==e.autoConnect,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,this):this._reconnection}reconnectionAttempts(t){return void 0===t?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var e;return void 0===t?this._reconnectionDelay:(this._reconnectionDelay=t,null===(e=this.backoff)||void 0===e||e.setMin(t),this)}randomizationFactor(t){var e;return void 0===t?this._randomizationFactor:(this._randomizationFactor=t,null===(e=this.backoff)||void 0===e||e.setJitter(t),this)}reconnectionDelayMax(t){var e;return void 0===t?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,null===(e=this.backoff)||void 0===e||e.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(t){if(p("readyState %s",this._readyState),~this._readyState.indexOf("open"))return this;p("opening %s",this.uri),this.engine=n(this.uri,this.opts);const e=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;const r=(0,a.on)(e,"open",(function(){s.onopen(),t&&t()})),o=(0,a.on)(e,"error",(e=>{p("error"),s.cleanup(),s._readyState="closed",this.emitReserved("error",e),t?t(e):s.maybeReconnectOnOpen()}));if(!1!==this._timeout){const t=this._timeout;p("connect attempt will timeout after %d",t),0===t&&r();const s=this.setTimeoutFn((()=>{p("connect attempt timed out after %d",t),r(),e.close(),e.emit("error",new Error("timeout"))}),t);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}return this.subs.push(r),this.subs.push(o),this}connect(t){return this.open(t)}onopen(){p("open"),this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push((0,a.on)(t,"ping",this.onping.bind(this)),(0,a.on)(t,"data",this.ondata.bind(this)),(0,a.on)(t,"error",this.onerror.bind(this)),(0,a.on)(t,"close",this.onclose.bind(this)),(0,a.on)(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){this.decoder.add(t)}ondecoded(t){this.emitReserved("packet",t)}onerror(t){p("error",t),this.emitReserved("error",t)}socket(t,e){let s=this.nsps[t];return s||(s=new o.Socket(this,t,e),this.nsps[t]=s),s}_destroy(t){const e=Object.keys(this.nsps);for(const t of e)if(this.nsps[t].active)return void p("socket %s is still active, skipping close",t);this._close()}_packet(t){p("writing packet %j",t);const e=this.encoder.encode(t);for(let s=0;s<e.length;s++)this.engine.write(e[s],t.options)}cleanup(){p("cleanup"),this.subs.forEach((t=>t())),this.subs.length=0,this.decoder.destroy()}_close(){p("disconnect"),this.skipReconnect=!0,this._reconnecting=!1,"opening"===this._readyState&&this.cleanup(),this.backoff.reset(),this._readyState="closed",this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(t){p("onclose"),this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)p("reconnect failed"),this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const e=this.backoff.duration();p("will wait %dms before reconnect attempt",e),this._reconnecting=!0;const s=this.setTimeoutFn((()=>{t.skipReconnect||(p("attempting reconnect"),this.emitReserved("reconnect_attempt",t.backoff.attempts),t.skipReconnect||t.open((e=>{e?(p("reconnect attempt error"),t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",e)):(p("reconnect success"),t.onreconnect())})))}),e);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}e.Manager=u},773:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.on=void 0,e.on=function(t,e,s){return t.on(e,s),function(){t.off(e,s)}}},259:(t,e,s)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Socket=void 0;const n=s(326),r=s(773),o=s(328),i=s(193)("socket.io-client:socket"),a=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class c extends o.StrictEventEmitter{constructor(t,e,s){super(),this.connected=!1,this.disconnected=!0,this.receiveBuffer=[],this.sendBuffer=[],this.ids=0,this.acks={},this.flags={},this.io=t,this.nsp=e,s&&s.auth&&(this.auth=s.auth),this.io._autoConnect&&this.open()}subEvents(){if(this.subs)return;const t=this.io;this.subs=[(0,r.on)(t,"open",this.onopen.bind(this)),(0,r.on)(t,"packet",this.onpacket.bind(this)),(0,r.on)(t,"error",this.onerror.bind(this)),(0,r.on)(t,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...t){return t.unshift("message"),this.emit.apply(this,t),this}emit(t,...e){if(a.hasOwnProperty(t))throw new Error('"'+t+'" is a reserved event name');e.unshift(t);const s={type:n.PacketType.EVENT,data:e,options:{}};s.options.compress=!1!==this.flags.compress,"function"==typeof e[e.length-1]&&(i("emitting packet with ack id %d",this.ids),this.acks[this.ids]=e.pop(),s.id=this.ids++);const r=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return!this.flags.volatile||r&&this.connected?this.connected?this.packet(s):this.sendBuffer.push(s):i("discard packet as the transport is not currently writable"),this.flags={},this}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){i("transport is open - connecting"),"function"==typeof this.auth?this.auth((t=>{this.packet({type:n.PacketType.CONNECT,data:t})})):this.packet({type:n.PacketType.CONNECT,data:this.auth})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t){i("close (%s)",t),this.connected=!1,this.disconnected=!0,delete this.id,this.emitReserved("disconnect",t)}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case n.PacketType.CONNECT:if(t.data&&t.data.sid){const e=t.data.sid;this.onconnect(e)}else this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case n.PacketType.EVENT:case n.PacketType.BINARY_EVENT:this.onevent(t);break;case n.PacketType.ACK:case n.PacketType.BINARY_ACK:this.onack(t);break;case n.PacketType.DISCONNECT:this.ondisconnect();break;case n.PacketType.CONNECT_ERROR:const e=new Error(t.data.message);e.data=t.data.data,this.emitReserved("connect_error",e)}}onevent(t){const e=t.data||[];i("emitting event %j",e),null!=t.id&&(i("attaching ack callback to event"),e.push(this.ack(t.id))),this.connected?this.emitEvent(e):this.receiveBuffer.push(Object.freeze(e))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const e=this._anyListeners.slice();for(const s of e)s.apply(this,t)}super.emit.apply(this,t)}ack(t){const e=this;let s=!1;return function(...r){s||(s=!0,i("sending ack %j",r),e.packet({type:n.PacketType.ACK,id:t,data:r}))}}onack(t){const e=this.acks[t.id];"function"==typeof e?(i("calling ack %s with %j",t.id,t.data),e.apply(this,t.data),delete this.acks[t.id]):i("bad ack %s",t.id)}onconnect(t){i("socket connected with id %s",t),this.id=t,this.connected=!0,this.disconnected=!1,this.emitBuffered(),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach((t=>this.emitEvent(t))),this.receiveBuffer=[],this.sendBuffer.forEach((t=>this.packet(t))),this.sendBuffer=[]}ondisconnect(){i("server disconnect (%s)",this.nsp),this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((t=>t())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&(i("performing disconnect (%s)",this.nsp),this.packet({type:n.PacketType.DISCONNECT})),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const e=this._anyListeners;for(let s=0;s<e.length;s++)if(t===e[s])return e.splice(s,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}}e.Socket=c},328:(t,e,s)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StrictEventEmitter=void 0;const n=s(69);e.StrictEventEmitter=class extends n{on(t,e){return super.on(t,e),this}once(t,e){return super.once(t,e),this}emit(t,...e){return super.emit(t,...e),this}emitReserved(t,...e){return super.emit(t,...e),this}listeners(t){return super.listeners(t)}}},310:(t,e,s)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.url=void 0;const n=s(986),r=s(193)("socket.io-client:url");e.url=function(t,e="",s){let o=t;s=s||"undefined"!=typeof location&&location,null==t&&(t=s.protocol+"//"+s.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?s.protocol+t:s.host+t),/^(https?|wss?):\/\//.test(t)||(r("protocol-less url %s",t),t=void 0!==s?s.protocol+"//"+t:"https://"+t),r("parse %s",t),o=n(t)),o.port||(/^(http|ws)$/.test(o.protocol)?o.port="80":/^(http|ws)s$/.test(o.protocol)&&(o.port="443")),o.path=o.path||"/";const i=-1!==o.host.indexOf(":")?"["+o.host+"]":o.host;return o.id=o.protocol+"://"+i+":"+o.port+e,o.href=o.protocol+"://"+i+(s&&s.port===o.port?"":":"+o.port),o}}},e={};function s(n){var r=e[n];if(void 0!==r)return r.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,s),o.exports}(()=>{"use strict";var t=s(116);t.Manager,t.Socket;const e=self,n={user:void 0,cache:{},ports:[],call:(t,e,s)=>{n.ports.forEach((n=>{const r={type:t,event:e,data:s};n.postMessage(r)}))}},r=t("wss://"+new URL(self.location.origin).host,{path:"/socket.io4",transports:["websocket"],upgrade:!1});r.io.on("error",(t=>{n.call("socket","error",t.message)})),r.io.on("reconnect_error",(t=>{n.call("socket","reconnect_error",t.message)})),r.io.on("reconnect_attempt",(t=>{n.call("socket","reconnect_attempt",t)})),r.on("connect",(()=>{n.call("socket","connect")})),r.on("disconnect",(t=>{n.call("socket","disconnect",t)})),r.on("message",(t=>{"ws"===t.namespace&&"presence"===t.function&&(n.cache.presence=t),n.call("socket","message",t)})),e.addEventListener("connect",(t=>{const e=t.ports[0];n.ports.push(e),e.onmessage=t=>{var s;const o=t.data;switch(o.type){case"ping":e.postMessage("pong");break;case"presence":void 0!==n.cache.presence&&e.postMessage({type:"socket",event:"message",data:n.cache.presence});break;case"connection":n.user&&n.user.idUser!==o.data.idUser&&(r.disconnect(),r.connect()),n.user&&(null===(s=n.user)||void 0===s?void 0:s.idUser)===o.data.idUser||(n.user=o.data)}},e.start()}))})()})();
2
- //# sourceMappingURL=socket.sharedworker.9cc9b5b3f5d4700f41ee.js.map