@nlabs/gothamui 1.8.0
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.
- package/LICENSE +21 -0
- package/MIGRATION.md +36 -0
- package/README.md +768 -0
- package/docs/assets/gothamui-app-architecture.svg +159 -0
- package/docs/assets/gothamui-logo.png +0 -0
- package/docs/assets/gothamui-logo.svg +42 -0
- package/docs/render-performance.md +34 -0
- package/lib/actions/GothamActions.d.ts +42 -0
- package/lib/actions/GothamActions.js +67 -0
- package/lib/actions/MarkdownActions.d.ts +4 -0
- package/lib/actions/MarkdownActions.js +48 -0
- package/lib/app.d.ts +1 -0
- package/lib/app.js +198 -0
- package/lib/components/Alert/Alert.d.ts +8 -0
- package/lib/components/Alert/Alert.js +24 -0
- package/lib/components/Alert/Alert.stories.js +59 -0
- package/lib/components/AuthRoute/AuthRoute.d.ts +3 -0
- package/lib/components/AuthRoute/AuthRoute.js +21 -0
- package/lib/components/AuthRoute/AuthRoute.stories.js +45 -0
- package/lib/components/AutocompleteField/AutocompleteField.d.ts +24 -0
- package/lib/components/AutocompleteField/AutocompleteField.js +148 -0
- package/lib/components/AutocompleteField/AutocompleteField.stories.js +62 -0
- package/lib/components/Avatar/Avatar.d.ts +29 -0
- package/lib/components/Avatar/Avatar.js +154 -0
- package/lib/components/Avatar/Avatar.stories.js +105 -0
- package/lib/components/Badge/Badge.d.ts +9 -0
- package/lib/components/Badge/Badge.js +22 -0
- package/lib/components/Badge/Badge.stories.js +53 -0
- package/lib/components/Breadcrumbs/Breadcrumbs.d.ts +19 -0
- package/lib/components/Breadcrumbs/Breadcrumbs.js +74 -0
- package/lib/components/Breadcrumbs/Breadcrumbs.stories.js +95 -0
- package/lib/components/Button/Button.d.ts +25 -0
- package/lib/components/Button/Button.js +157 -0
- package/lib/components/Button/Button.stories.js +119 -0
- package/lib/components/Card/Card.d.ts +8 -0
- package/lib/components/Card/Card.js +39 -0
- package/lib/components/Card/Card.stories.js +60 -0
- package/lib/components/CategoryGrid/CategoryGrid.d.ts +15 -0
- package/lib/components/CategoryGrid/CategoryGrid.js +42 -0
- package/lib/components/CategoryGrid/CategoryGrid.stories.js +35 -0
- package/lib/components/Chat/AudioMessage/AudioMessage.css +1 -0
- package/lib/components/Chat/AudioMessage/AudioMessage.d.ts +3 -0
- package/lib/components/Chat/AudioMessage/AudioMessage.js +28 -0
- package/lib/components/Chat/Avatar/Avatar.css +1 -0
- package/lib/components/Chat/Avatar/Avatar.d.ts +3 -0
- package/lib/components/Chat/Avatar/Avatar.js +72 -0
- package/lib/components/Chat/Button/Button.css +1 -0
- package/lib/components/Chat/Button/Button.d.ts +3 -0
- package/lib/components/Chat/Button/Button.js +37 -0
- package/lib/components/Chat/Chat.stories.js +688 -0
- package/lib/components/Chat/ChatItem/ChatItem.css +1 -0
- package/lib/components/Chat/ChatItem/ChatItem.d.ts +3 -0
- package/lib/components/Chat/ChatItem/ChatItem.js +183 -0
- package/lib/components/Chat/ChatList/ChatList.css +1 -0
- package/lib/components/Chat/ChatList/ChatList.d.ts +3 -0
- package/lib/components/Chat/ChatList/ChatList.js +84 -0
- package/lib/components/Chat/Circle/Circle.d.ts +3 -0
- package/lib/components/Chat/Circle/Circle.js +27 -0
- package/lib/components/Chat/Dropdown/Dropdown.css +1 -0
- package/lib/components/Chat/Dropdown/Dropdown.d.ts +3 -0
- package/lib/components/Chat/Dropdown/Dropdown.js +66 -0
- package/lib/components/Chat/FileMessage/FileMessage.css +1 -0
- package/lib/components/Chat/FileMessage/FileMessage.d.ts +3 -0
- package/lib/components/Chat/FileMessage/FileMessage.js +77 -0
- package/lib/components/Chat/Input/Input.css +1 -0
- package/lib/components/Chat/Input/Input.d.ts +3 -0
- package/lib/components/Chat/Input/Input.js +108 -0
- package/lib/components/Chat/LocationMessage/LocationMessage.css +1 -0
- package/lib/components/Chat/LocationMessage/LocationMessage.d.ts +3 -0
- package/lib/components/Chat/LocationMessage/LocationMessage.js +36 -0
- package/lib/components/Chat/MeetingItem/MeetingItem.css +1 -0
- package/lib/components/Chat/MeetingItem/MeetingItem.d.ts +3 -0
- package/lib/components/Chat/MeetingItem/MeetingItem.js +106 -0
- package/lib/components/Chat/MeetingLink/MeetingLink.css +1 -0
- package/lib/components/Chat/MeetingLink/MeetingLink.d.ts +3 -0
- package/lib/components/Chat/MeetingLink/MeetingLink.js +26 -0
- package/lib/components/Chat/MeetingList/MeetingList.css +1 -0
- package/lib/components/Chat/MeetingList/MeetingList.d.ts +3 -0
- package/lib/components/Chat/MeetingList/MeetingList.js +52 -0
- package/lib/components/Chat/MeetingMessage/MeetingMessage.css +1 -0
- package/lib/components/Chat/MeetingMessage/MeetingMessage.d.ts +3 -0
- package/lib/components/Chat/MeetingMessage/MeetingMessage.js +227 -0
- package/lib/components/Chat/MessageBox/MessageBox.css +1 -0
- package/lib/components/Chat/MessageBox/MessageBox.d.ts +3 -0
- package/lib/components/Chat/MessageBox/MessageBox.js +263 -0
- package/lib/components/Chat/MessageList/MessageList.css +1 -0
- package/lib/components/Chat/MessageList/MessageList.d.ts +2 -0
- package/lib/components/Chat/MessageList/MessageList.js +196 -0
- package/lib/components/Chat/Navbar/Navbar.css +1 -0
- package/lib/components/Chat/Navbar/Navbar.d.ts +3 -0
- package/lib/components/Chat/Navbar/Navbar.js +21 -0
- package/lib/components/Chat/PhotoMessage/PhotoMessage.css +1 -0
- package/lib/components/Chat/PhotoMessage/PhotoMessage.d.ts +3 -0
- package/lib/components/Chat/PhotoMessage/PhotoMessage.js +73 -0
- package/lib/components/Chat/Popup/Popup.css +1 -0
- package/lib/components/Chat/Popup/Popup.d.ts +3 -0
- package/lib/components/Chat/Popup/Popup.js +45 -0
- package/lib/components/Chat/README.md +50 -0
- package/lib/components/Chat/ReplyMessage/ReplyMessage.css +1 -0
- package/lib/components/Chat/ReplyMessage/ReplyMessage.d.ts +3 -0
- package/lib/components/Chat/ReplyMessage/ReplyMessage.js +42 -0
- package/lib/components/Chat/SideBar/SideBar.css +1 -0
- package/lib/components/Chat/SideBar/SideBar.d.ts +3 -0
- package/lib/components/Chat/SideBar/SideBar.js +21 -0
- package/lib/components/Chat/SpotifyMessage/SpotifyMessage.css +1 -0
- package/lib/components/Chat/SpotifyMessage/SpotifyMessage.d.ts +3 -0
- package/lib/components/Chat/SpotifyMessage/SpotifyMessage.js +28 -0
- package/lib/components/Chat/SystemMessage/SystemMessage.css +1 -0
- package/lib/components/Chat/SystemMessage/SystemMessage.d.ts +3 -0
- package/lib/components/Chat/SystemMessage/SystemMessage.js +14 -0
- package/lib/components/Chat/VideoMessage/VideoMessage.css +1 -0
- package/lib/components/Chat/VideoMessage/VideoMessage.d.ts +3 -0
- package/lib/components/Chat/VideoMessage/VideoMessage.js +88 -0
- package/lib/components/Chat/assets/img/leftArrow.svg +6 -0
- package/lib/components/Chat/assets/img/rightArrow.svg +6 -0
- package/lib/components/Chat/index.d.ts +25 -0
- package/lib/components/Chat/index.js +27 -0
- package/lib/components/Chat/type.d.js +52 -0
- package/lib/components/Chat/utils/formatRelativeDate.d.ts +4 -0
- package/lib/components/Chat/utils/formatRelativeDate.js +110 -0
- package/lib/components/Checkbox/Checkbox.d.ts +15 -0
- package/lib/components/Checkbox/Checkbox.js +106 -0
- package/lib/components/Checkbox/Checkbox.stories.js +51 -0
- package/lib/components/ComponentUtils/renderWithAsChild.d.ts +9 -0
- package/lib/components/ComponentUtils/renderWithAsChild.js +27 -0
- package/lib/components/Container/Container.d.ts +7 -0
- package/lib/components/Container/Container.js +16 -0
- package/lib/components/Container/Container.stories.js +36 -0
- package/lib/components/DateField/DateField.d.ts +22 -0
- package/lib/components/DateField/DateField.js +145 -0
- package/lib/components/DateField/DateField.stories.js +125 -0
- package/lib/components/DateField/DatePicker.d.ts +9 -0
- package/lib/components/DateField/DatePicker.js +205 -0
- package/lib/components/DateField/DatePicker.stories.js +33 -0
- package/lib/components/DescriptionList/DescriptionList.d.ts +4 -0
- package/lib/components/DescriptionList/DescriptionList.js +19 -0
- package/lib/components/DescriptionList/DescriptionList.stories.js +34 -0
- package/lib/components/Dialog/Dialog.d.ts +25 -0
- package/lib/components/Dialog/Dialog.js +66 -0
- package/lib/components/Dialog/Dialog.stories.js +88 -0
- package/lib/components/DropUpload/DropUpload.d.ts +37 -0
- package/lib/components/DropUpload/DropUpload.js +323 -0
- package/lib/components/DropUpload/DropUpload.stories.js +48 -0
- package/lib/components/Empty/Empty.d.ts +11 -0
- package/lib/components/Empty/Empty.js +39 -0
- package/lib/components/Empty/Empty.stories.js +52 -0
- package/lib/components/EmptyState/EmptyState.d.ts +15 -0
- package/lib/components/EmptyState/EmptyState.js +44 -0
- package/lib/components/EmptyState/EmptyState.stories.js +36 -0
- package/lib/components/ErrorMessage/ErrorMessage.d.ts +7 -0
- package/lib/components/ErrorMessage/ErrorMessage.js +20 -0
- package/lib/components/ErrorMessage/ErrorMessage.stories.js +25 -0
- package/lib/components/FaqSection/FaqSection.d.ts +14 -0
- package/lib/components/FaqSection/FaqSection.js +37 -0
- package/lib/components/FaqSection/FaqSection.stories.js +31 -0
- package/lib/components/Fieldset/Fieldset.d.ts +21 -0
- package/lib/components/Fieldset/Fieldset.js +39 -0
- package/lib/components/Fieldset/Fieldset.stories.js +42 -0
- package/lib/components/Footer/Footer.d.ts +26 -0
- package/lib/components/Footer/Footer.js +119 -0
- package/lib/components/Footer/Footer.stories.js +184 -0
- package/lib/components/Form/Form.d.ts +42 -0
- package/lib/components/Form/Form.js +198 -0
- package/lib/components/Form/Form.stories.js +65 -0
- package/lib/components/Form/FormContext.d.ts +35 -0
- package/lib/components/Form/FormContext.js +71 -0
- package/lib/components/GothamRoute/GothamRoute.d.ts +0 -0
- package/lib/components/GothamRoute/GothamRoute.js +56 -0
- package/lib/components/GothamRouter/GothamRouter.d.ts +0 -0
- package/lib/components/GothamRouter/GothamRouter.js +52 -0
- package/lib/components/Heading/Heading.d.ts +7 -0
- package/lib/components/Heading/Heading.js +20 -0
- package/lib/components/Heading/Heading.stories.js +51 -0
- package/lib/components/IncentiveGrid/IncentiveGrid.d.ts +15 -0
- package/lib/components/IncentiveGrid/IncentiveGrid.js +34 -0
- package/lib/components/IncentiveGrid/IncentiveGrid.stories.js +41 -0
- package/lib/components/InputField/InputField.d.ts +25 -0
- package/lib/components/InputField/InputField.js +68 -0
- package/lib/components/InputField/InputField.stories.js +58 -0
- package/lib/components/Item/Item.d.ts +25 -0
- package/lib/components/Item/Item.js +79 -0
- package/lib/components/Item/Item.stories.js +94 -0
- package/lib/components/Kbd/Kbd.d.ts +2 -0
- package/lib/components/Kbd/Kbd.js +9 -0
- package/lib/components/Kbd/Kbd.stories.js +24 -0
- package/lib/components/Label/Label.d.ts +11 -0
- package/lib/components/Label/Label.js +23 -0
- package/lib/components/Label/Label.stories.js +38 -0
- package/lib/components/Link/Link.d.ts +7 -0
- package/lib/components/Link/Link.js +13 -0
- package/lib/components/Link/Link.stories.js +28 -0
- package/lib/components/ListContainer/ListContainer.d.ts +8 -0
- package/lib/components/ListContainer/ListContainer.js +14 -0
- package/lib/components/ListContainer/ListContainer.stories.js +45 -0
- package/lib/components/Loader/Loader.d.ts +9 -0
- package/lib/components/Loader/Loader.js +36 -0
- package/lib/components/Loader/Loader.stories.js +94 -0
- package/lib/components/LogoCloud/LogoCloud.d.ts +15 -0
- package/lib/components/LogoCloud/LogoCloud.js +43 -0
- package/lib/components/LogoCloud/LogoCloud.stories.js +28 -0
- package/lib/components/Markdown/Markdown.d.ts +8 -0
- package/lib/components/Markdown/Markdown.js +64 -0
- package/lib/components/Markdown/Markdown.stories.js +34 -0
- package/lib/components/MediaLightbox/MediaLightbox.d.ts +22 -0
- package/lib/components/MediaLightbox/MediaLightbox.js +80 -0
- package/lib/components/MediaObject/MediaObject.d.ts +8 -0
- package/lib/components/MediaObject/MediaObject.js +37 -0
- package/lib/components/MediaObject/MediaObject.stories.js +28 -0
- package/lib/components/Navbar/Navbar.d.ts +43 -0
- package/lib/components/Navbar/Navbar.js +213 -0
- package/lib/components/Navbar/Navbar.stories.js +235 -0
- package/lib/components/NotFound/NotFound.d.ts +34 -0
- package/lib/components/NotFound/NotFound.js +351 -0
- package/lib/components/NotFound/NotFound.stories.js +80 -0
- package/lib/components/Notify/Notify.d.ts +18 -0
- package/lib/components/Notify/Notify.js +178 -0
- package/lib/components/Notify/Notify.stories.js +148 -0
- package/lib/components/Notify/NotifyExample.d.ts +1 -0
- package/lib/components/Notify/NotifyExample.js +174 -0
- package/lib/components/Notify/README.md +103 -0
- package/lib/components/Pagination/Pagination.d.ts +18 -0
- package/lib/components/Pagination/Pagination.js +225 -0
- package/lib/components/Pagination/Pagination.stories.js +69 -0
- package/lib/components/PasswordStrengthMeter/PasswordStrengthMeter.d.ts +12 -0
- package/lib/components/PasswordStrengthMeter/PasswordStrengthMeter.js +88 -0
- package/lib/components/PasswordStrengthMeter/PasswordStrengthMeter.stories.js +16 -0
- package/lib/components/PaymentMethodPanel/PaymentMethodPanel.d.ts +18 -0
- package/lib/components/PaymentMethodPanel/PaymentMethodPanel.js +113 -0
- package/lib/components/PaymentMethodPanel/PaymentMethodPanel.stories.js +88 -0
- package/lib/components/Pricing/Pricing.d.ts +78 -0
- package/lib/components/Pricing/Pricing.js +764 -0
- package/lib/components/Pricing/Pricing.stories.js +146 -0
- package/lib/components/ProductGrid/ProductGrid.d.ts +23 -0
- package/lib/components/ProductGrid/ProductGrid.js +79 -0
- package/lib/components/ProductGrid/ProductGrid.stories.js +50 -0
- package/lib/components/ProgressSteps/ProgressSteps.d.ts +13 -0
- package/lib/components/ProgressSteps/ProgressSteps.js +51 -0
- package/lib/components/ProgressSteps/ProgressSteps.stories.js +35 -0
- package/lib/components/RadioField/RadioField.d.ts +16 -0
- package/lib/components/RadioField/RadioField.js +63 -0
- package/lib/components/RadioField/RadioField.stories.js +140 -0
- package/lib/components/ReviewList/ReviewList.d.ts +15 -0
- package/lib/components/ReviewList/ReviewList.js +51 -0
- package/lib/components/ReviewList/ReviewList.stories.js +29 -0
- package/lib/components/SectionHeader/SectionHeader.d.ts +9 -0
- package/lib/components/SectionHeader/SectionHeader.js +36 -0
- package/lib/components/SectionHeader/SectionHeader.stories.js +35 -0
- package/lib/components/SelectField/SelectField.d.ts +18 -0
- package/lib/components/SelectField/SelectField.js +145 -0
- package/lib/components/SelectField/SelectField.stories.js +155 -0
- package/lib/components/SelectField/SelectOption.d.ts +13 -0
- package/lib/components/SelectField/SelectOption.js +40 -0
- package/lib/components/SelectField/SelectOption.stories.js +40 -0
- package/lib/components/Separator/Separator.d.ts +6 -0
- package/lib/components/Separator/Separator.js +13 -0
- package/lib/components/Separator/Separator.stories.js +70 -0
- package/lib/components/Skeleton/Skeleton.d.ts +2 -0
- package/lib/components/Skeleton/Skeleton.js +9 -0
- package/lib/components/Skeleton/Skeleton.stories.js +24 -0
- package/lib/components/Svg/Svg.d.ts +9 -0
- package/lib/components/Svg/Svg.js +25 -0
- package/lib/components/Svg/Svg.stories.js +34 -0
- package/lib/components/Switch/Switch.d.ts +12 -0
- package/lib/components/Switch/Switch.js +54 -0
- package/lib/components/Switch/Switch.stories.js +61 -0
- package/lib/components/Table/Table.d.ts +18 -0
- package/lib/components/Table/Table.js +99 -0
- package/lib/components/Table/Table.stories.js +79 -0
- package/lib/components/Tabs/Tabs.d.ts +17 -0
- package/lib/components/Tabs/Tabs.js +85 -0
- package/lib/components/Tabs/Tabs.stories.js +45 -0
- package/lib/components/Text/Text.d.ts +5 -0
- package/lib/components/Text/Text.js +24 -0
- package/lib/components/Text/Text.stories.js +35 -0
- package/lib/components/TextField/TextField.d.ts +31 -0
- package/lib/components/TextField/TextField.js +91 -0
- package/lib/components/TextField/TextField.stories.js +158 -0
- package/lib/components/Textarea/Textarea.d.ts +5 -0
- package/lib/components/Textarea/Textarea.js +10 -0
- package/lib/components/Textarea/Textarea.stories.js +32 -0
- package/lib/components/index.d.ts +60 -0
- package/lib/components/index.js +62 -0
- package/lib/config/appConfig.d.ts +5 -0
- package/lib/config/appConfig.js +20 -0
- package/lib/constants/AuthConstants.d.ts +8 -0
- package/lib/constants/AuthConstants.js +9 -0
- package/lib/constants/GothamConstants.d.ts +24 -0
- package/lib/constants/GothamConstants.js +25 -0
- package/lib/constants/MarkdownConstants.d.ts +8 -0
- package/lib/constants/MarkdownConstants.js +9 -0
- package/lib/constants/MessageConstants.d.ts +10 -0
- package/lib/constants/MessageConstants.js +11 -0
- package/lib/docs/analytics.md +231 -0
- package/lib/docs/api-reference.md +364 -0
- package/lib/docs/comparison.md +83 -0
- package/lib/docs/containers.md +11 -0
- package/lib/docs/gettingStarted.md +338 -0
- package/lib/docs/payments.md +79 -0
- package/lib/editor/CodeEditor.d.ts +11 -0
- package/lib/editor/CodeEditor.js +15 -0
- package/lib/editor/CodeEditor.stories.js +24 -0
- package/lib/editor/index.d.ts +1 -0
- package/lib/editor/index.js +3 -0
- package/lib/errors/UserError.d.ts +8 -0
- package/lib/errors/UserError.js +12 -0
- package/lib/examples/OptimizedFormExample.d.ts +1 -0
- package/lib/examples/OptimizedFormExample.js +130 -0
- package/lib/form/index.d.ts +11 -0
- package/lib/form/index.js +13 -0
- package/lib/hooks/useIsMobile.d.ts +1 -0
- package/lib/hooks/useIsMobile.js +12 -0
- package/lib/i18n/index.d.ts +8 -0
- package/lib/i18n/index.js +7 -0
- package/lib/icons/Dual Ring-1s-100px.svg +1 -0
- package/lib/icons/gotham-logo.svg +17 -0
- package/lib/icons/gotham.svg +8 -0
- package/lib/icons/index.d.ts +5 -0
- package/lib/icons/index.js +6 -0
- package/lib/icons/pencil.svg +6 -0
- package/lib/img/arkhamjs-logo.png +0 -0
- package/lib/img/logo.png +0 -0
- package/lib/index.d.ts +25 -0
- package/lib/index.js +25 -0
- package/lib/router/index.d.ts +5 -0
- package/lib/router/index.js +6 -0
- package/lib/stores/GothamAppStore.d.ts +35 -0
- package/lib/stores/GothamAppStore.js +70 -0
- package/lib/stories/Button.d.ts +28 -0
- package/lib/stories/Button.js +22 -0
- package/lib/stories/Header.d.ts +12 -0
- package/lib/stories/Header.js +78 -0
- package/lib/stories/Page.d.ts +3 -0
- package/lib/stories/Page.js +108 -0
- package/lib/stories/assets/accessibility.png +0 -0
- package/lib/stories/assets/accessibility.svg +5 -0
- package/lib/stories/assets/addon-library.png +0 -0
- package/lib/stories/assets/assets.png +0 -0
- package/lib/stories/assets/context.png +0 -0
- package/lib/stories/assets/discord.svg +15 -0
- package/lib/stories/assets/docs.png +0 -0
- package/lib/stories/assets/figma-plugin.png +0 -0
- package/lib/stories/assets/github.svg +3 -0
- package/lib/stories/assets/share.png +0 -0
- package/lib/stories/assets/styling.png +0 -0
- package/lib/stories/assets/testing.png +0 -0
- package/lib/stories/assets/theming.png +0 -0
- package/lib/stories/assets/tutorials.svg +12 -0
- package/lib/stories/assets/youtube.svg +4 -0
- package/lib/stories/button.css +1 -0
- package/lib/stories/header.css +1 -0
- package/lib/stories/page.css +1 -0
- package/lib/styles/chat.css +1 -0
- package/lib/styles/index.css +2 -0
- package/lib/styles/tailwind.css +1 -0
- package/lib/types/assets.d.js +2 -0
- package/lib/types/gotham.d.ts +12 -0
- package/lib/types/gotham.js +3 -0
- package/lib/types/vitest-globals.d.js +3 -0
- package/lib/utils/GothamContext.d.ts +14 -0
- package/lib/utils/GothamContext.js +14 -0
- package/lib/utils/awsRum.d.ts +23 -0
- package/lib/utils/awsRum.js +50 -0
- package/lib/utils/colorUtils.d.ts +20 -0
- package/lib/utils/colorUtils.js +499 -0
- package/lib/utils/contentUtils.d.ts +2 -0
- package/lib/utils/contentUtils.js +18 -0
- package/lib/utils/i18nUtil.d.ts +1 -0
- package/lib/utils/i18nUtil.js +7 -0
- package/lib/utils/imageUtils.d.ts +5 -0
- package/lib/utils/imageUtils.js +48 -0
- package/lib/utils/interactionAnalytics.d.ts +10 -0
- package/lib/utils/interactionAnalytics.js +142 -0
- package/lib/utils/navEventQueue.d.ts +6 -0
- package/lib/utils/navEventQueue.js +50 -0
- package/lib/utils/refUtils.d.ts +2 -0
- package/lib/utils/refUtils.js +11 -0
- package/lib/utils/routeUtils.d.ts +12 -0
- package/lib/utils/routeUtils.js +109 -0
- package/lib/utils/sizeUtils.d.ts +5 -0
- package/lib/utils/sizeUtils.js +6 -0
- package/lib/utils/storyInteractions.d.ts +6 -0
- package/lib/utils/storyInteractions.js +45 -0
- package/lib/utils/storyUtils.d.ts +1 -0
- package/lib/utils/storyUtils.js +11 -0
- package/lib/utils/testUtils.d.ts +3 -0
- package/lib/utils/testUtils.js +56 -0
- package/lib/utils/timer.d.ts +21 -0
- package/lib/utils/timer.js +38 -0
- package/lib/utils/useBreakpoint.d.ts +6 -0
- package/lib/utils/useBreakpoint.js +56 -0
- package/lib/utils/viewPerformance.d.ts +34 -0
- package/lib/utils/viewPerformance.js +103 -0
- package/lib/utils/viewUtils.d.ts +9 -0
- package/lib/utils/viewUtils.js +44 -0
- package/lib/views/AuthSignInView/AuthSignInView.d.ts +20 -0
- package/lib/views/AuthSignInView/AuthSignInView.js +107 -0
- package/lib/views/AuthSignInView/AuthSignInView.stories.js +29 -0
- package/lib/views/AuthSignUpView/AuthSignUpView.d.ts +21 -0
- package/lib/views/AuthSignUpView/AuthSignUpView.js +146 -0
- package/lib/views/AuthSignUpView/AuthSignUpView.stories.js +30 -0
- package/lib/views/AuthView/AuthView.d.ts +16 -0
- package/lib/views/AuthView/AuthView.js +60 -0
- package/lib/views/AuthView/AuthView.stories.js +34 -0
- package/lib/views/DefaultView/DefaultView.d.ts +5 -0
- package/lib/views/DefaultView/DefaultView.js +134 -0
- package/lib/views/Gotham/Gotham.d.ts +44 -0
- package/lib/views/Gotham/Gotham.js +24 -0
- package/lib/views/Gotham/Gotham.stories.js +31 -0
- package/lib/views/Gotham/GothamListeners.d.ts +0 -0
- package/lib/views/Gotham/GothamListeners.js +2 -0
- package/lib/views/Gotham/GothamProvider.d.ts +43 -0
- package/lib/views/Gotham/GothamProvider.js +217 -0
- package/lib/views/Gotham/GothamRoot.d.ts +6 -0
- package/lib/views/Gotham/GothamRoot.js +69 -0
- package/lib/views/HomeView/HomeView.d.ts +10 -0
- package/lib/views/HomeView/HomeView.js +134 -0
- package/lib/views/LoaderView/LoaderView.d.ts +8 -0
- package/lib/views/LoaderView/LoaderView.js +30 -0
- package/lib/views/MenuView/MenuView.d.ts +13 -0
- package/lib/views/MenuView/MenuView.js +305 -0
- package/lib/views/NotFoundView/NotFoundView.d.ts +2 -0
- package/lib/views/NotFoundView/NotFoundView.js +12 -0
- package/lib/views/index.d.ts +11 -0
- package/lib/views/index.js +13 -0
- package/package.json +202 -0
- package/styles/tailwind.css +1 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/ export const convertFileToBase64 = (file, maxSize)=>new Promise((resolve, reject)=>{
|
|
5
|
+
const reader = new FileReader();
|
|
6
|
+
reader.onload = ()=>{
|
|
7
|
+
const image = new Image();
|
|
8
|
+
image.onload = ()=>{
|
|
9
|
+
// Resize the image
|
|
10
|
+
const canvas = document.createElement('canvas');
|
|
11
|
+
const { height, width } = image;
|
|
12
|
+
let updatedHeight = height;
|
|
13
|
+
let updatedWidth = width;
|
|
14
|
+
if (width > height) {
|
|
15
|
+
if (width > maxSize) {
|
|
16
|
+
updatedHeight *= maxSize / width;
|
|
17
|
+
updatedWidth = maxSize;
|
|
18
|
+
}
|
|
19
|
+
} else if (height > maxSize) {
|
|
20
|
+
updatedWidth *= maxSize / height;
|
|
21
|
+
updatedHeight = maxSize;
|
|
22
|
+
}
|
|
23
|
+
canvas.width = updatedWidth;
|
|
24
|
+
canvas.height = updatedHeight;
|
|
25
|
+
canvas.getContext('2d')?.drawImage(image, 0, 0, updatedWidth, updatedHeight);
|
|
26
|
+
const dataUrl = canvas.toDataURL('image/jpeg');
|
|
27
|
+
// const resizedImage = dataURLToBlob(dataUrl);
|
|
28
|
+
resolve(dataUrl);
|
|
29
|
+
// $.event.trigger({
|
|
30
|
+
// type: 'imageResized',
|
|
31
|
+
// blob: resizedImage,
|
|
32
|
+
// url: dataUrl
|
|
33
|
+
// });
|
|
34
|
+
};
|
|
35
|
+
const originalBase64 = reader.result;
|
|
36
|
+
image.src = originalBase64;
|
|
37
|
+
};
|
|
38
|
+
// reader.onloadend = () => {
|
|
39
|
+
// const base64: string = reader.result as string;
|
|
40
|
+
// resolve(base64);
|
|
41
|
+
// };
|
|
42
|
+
reader.onerror = (event)=>{
|
|
43
|
+
reject(event);
|
|
44
|
+
};
|
|
45
|
+
reader.readAsDataURL(file);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy9pbWFnZVV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5leHBvcnQgY29uc3QgY29udmVydEZpbGVUb0Jhc2U2NCA9IChmaWxlOiBGaWxlLCBtYXhTaXplOiBudW1iZXIpOiBQcm9taXNlPHN0cmluZz4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICBpbWFnZS5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIC8vIFJlc2l6ZSB0aGUgaW1hZ2VcbiAgICAgICAgY29uc3QgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICBjb25zdCB7aGVpZ2h0LCB3aWR0aH0gPSBpbWFnZTtcbiAgICAgICAgbGV0IHVwZGF0ZWRIZWlnaHQ6IG51bWJlciA9IGhlaWdodDtcbiAgICAgICAgbGV0IHVwZGF0ZWRXaWR0aDogbnVtYmVyID0gd2lkdGg7XG5cbiAgICAgICAgaWYod2lkdGggPiBoZWlnaHQpIHtcbiAgICAgICAgICBpZih3aWR0aCA+IG1heFNpemUpIHtcbiAgICAgICAgICAgIHVwZGF0ZWRIZWlnaHQgKj0gbWF4U2l6ZSAvIHdpZHRoO1xuICAgICAgICAgICAgdXBkYXRlZFdpZHRoID0gbWF4U2l6ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZihoZWlnaHQgPiBtYXhTaXplKSB7XG4gICAgICAgICAgdXBkYXRlZFdpZHRoICo9IG1heFNpemUgLyBoZWlnaHQ7XG4gICAgICAgICAgdXBkYXRlZEhlaWdodCA9IG1heFNpemU7XG4gICAgICAgIH1cblxuICAgICAgICBjYW52YXMud2lkdGggPSB1cGRhdGVkV2lkdGg7XG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSB1cGRhdGVkSGVpZ2h0O1xuICAgICAgICBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKT8uZHJhd0ltYWdlKGltYWdlLCAwLCAwLCB1cGRhdGVkV2lkdGgsIHVwZGF0ZWRIZWlnaHQpO1xuICAgICAgICBjb25zdCBkYXRhVXJsOiBzdHJpbmcgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJyk7XG4gICAgICAgIC8vIGNvbnN0IHJlc2l6ZWRJbWFnZSA9IGRhdGFVUkxUb0Jsb2IoZGF0YVVybCk7XG5cbiAgICAgICAgcmVzb2x2ZShkYXRhVXJsKTtcbiAgICAgICAgLy8gJC5ldmVudC50cmlnZ2VyKHtcbiAgICAgICAgLy8gICB0eXBlOiAnaW1hZ2VSZXNpemVkJyxcbiAgICAgICAgLy8gICBibG9iOiByZXNpemVkSW1hZ2UsXG4gICAgICAgIC8vICAgdXJsOiBkYXRhVXJsXG4gICAgICAgIC8vIH0pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qgb3JpZ2luYWxCYXNlNjQ6IHN0cmluZyA9IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nO1xuICAgICAgaW1hZ2Uuc3JjID0gb3JpZ2luYWxCYXNlNjQ7XG4gICAgfTtcbiAgICAvLyByZWFkZXIub25sb2FkZW5kID0gKCkgPT4ge1xuICAgIC8vICAgY29uc3QgYmFzZTY0OiBzdHJpbmcgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcbiAgICAvLyAgIHJlc29sdmUoYmFzZTY0KTtcbiAgICAvLyB9O1xuICAgIHJlYWRlci5vbmVycm9yID0gKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB7XG4gICAgICByZWplY3QoZXZlbnQpO1xuICAgIH07XG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gIH0pO1xuIl0sIm5hbWVzIjpbImNvbnZlcnRGaWxlVG9CYXNlNjQiLCJmaWxlIiwibWF4U2l6ZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicmVhZGVyIiwiRmlsZVJlYWRlciIsIm9ubG9hZCIsImltYWdlIiwiSW1hZ2UiLCJjYW52YXMiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJoZWlnaHQiLCJ3aWR0aCIsInVwZGF0ZWRIZWlnaHQiLCJ1cGRhdGVkV2lkdGgiLCJnZXRDb250ZXh0IiwiZHJhd0ltYWdlIiwiZGF0YVVybCIsInRvRGF0YVVSTCIsIm9yaWdpbmFsQmFzZTY0IiwicmVzdWx0Iiwic3JjIiwib25lcnJvciIsImV2ZW50IiwicmVhZEFzRGF0YVVSTCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsT0FBTyxNQUFNQSxzQkFBc0IsQ0FBQ0MsTUFBWUMsVUFDOUMsSUFBSUMsUUFBUSxDQUFDQyxTQUFTQztRQUNwQixNQUFNQyxTQUFTLElBQUlDO1FBQ25CRCxPQUFPRSxNQUFNLEdBQUc7WUFDZCxNQUFNQyxRQUFRLElBQUlDO1lBQ2xCRCxNQUFNRCxNQUFNLEdBQUc7Z0JBQ2IsbUJBQW1CO2dCQUNuQixNQUFNRyxTQUE0QkMsU0FBU0MsYUFBYSxDQUFDO2dCQUN6RCxNQUFNLEVBQUNDLE1BQU0sRUFBRUMsS0FBSyxFQUFDLEdBQUdOO2dCQUN4QixJQUFJTyxnQkFBd0JGO2dCQUM1QixJQUFJRyxlQUF1QkY7Z0JBRTNCLElBQUdBLFFBQVFELFFBQVE7b0JBQ2pCLElBQUdDLFFBQVFiLFNBQVM7d0JBQ2xCYyxpQkFBaUJkLFVBQVVhO3dCQUMzQkUsZUFBZWY7b0JBQ2pCO2dCQUNGLE9BQU8sSUFBR1ksU0FBU1osU0FBUztvQkFDMUJlLGdCQUFnQmYsVUFBVVk7b0JBQzFCRSxnQkFBZ0JkO2dCQUNsQjtnQkFFQVMsT0FBT0ksS0FBSyxHQUFHRTtnQkFDZk4sT0FBT0csTUFBTSxHQUFHRTtnQkFDaEJMLE9BQU9PLFVBQVUsQ0FBQyxPQUFPQyxVQUFVVixPQUFPLEdBQUcsR0FBR1EsY0FBY0Q7Z0JBQzlELE1BQU1JLFVBQWtCVCxPQUFPVSxTQUFTLENBQUM7Z0JBQ3pDLCtDQUErQztnQkFFL0NqQixRQUFRZ0I7WUFDUixvQkFBb0I7WUFDcEIsMEJBQTBCO1lBQzFCLHdCQUF3QjtZQUN4QixpQkFBaUI7WUFDakIsTUFBTTtZQUNSO1lBRUEsTUFBTUUsaUJBQXlCaEIsT0FBT2lCLE1BQU07WUFDNUNkLE1BQU1lLEdBQUcsR0FBR0Y7UUFDZDtRQUNBLDZCQUE2QjtRQUM3QixvREFBb0Q7UUFDcEQscUJBQXFCO1FBQ3JCLEtBQUs7UUFDTGhCLE9BQU9tQixPQUFPLEdBQUcsQ0FBQ0M7WUFDaEJyQixPQUFPcUI7UUFDVDtRQUNBcEIsT0FBT3FCLGFBQWEsQ0FBQzFCO0lBQ3ZCLEdBQUcifQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/
|
|
5
|
+
import type { AwsRum } from './awsRum.js';
|
|
6
|
+
/**
|
|
7
|
+
* Tracks semantic interactions with one delegated listener per event type.
|
|
8
|
+
* Values, visible text, URLs, and query strings are deliberately excluded.
|
|
9
|
+
*/
|
|
10
|
+
export declare const registerInteractionAnalytics: (awsRum: AwsRum, ownerDocument?: Document | undefined) => (() => void);
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/ const ACTIVATION_SELECTOR = [
|
|
5
|
+
'a[href]',
|
|
6
|
+
'area[href]',
|
|
7
|
+
'button',
|
|
8
|
+
'input[type="button"]',
|
|
9
|
+
'input[type="image"]',
|
|
10
|
+
'input[type="reset"]',
|
|
11
|
+
'input[type="submit"]',
|
|
12
|
+
'summary',
|
|
13
|
+
'[role="button"]',
|
|
14
|
+
'[role="checkbox"]',
|
|
15
|
+
'[role="link"]',
|
|
16
|
+
'[role="menuitem"]',
|
|
17
|
+
'[role="menuitemcheckbox"]',
|
|
18
|
+
'[role="menuitemradio"]',
|
|
19
|
+
'[role="option"]',
|
|
20
|
+
'[role="radio"]',
|
|
21
|
+
'[role="slider"]',
|
|
22
|
+
'[role="switch"]',
|
|
23
|
+
'[role="tab"]',
|
|
24
|
+
'[role="treeitem"]',
|
|
25
|
+
'[data-analytics-interaction="click"]'
|
|
26
|
+
].join(',');
|
|
27
|
+
const EDITABLE_SELECTOR = '[contenteditable=""], [contenteditable="true"]';
|
|
28
|
+
const KEYBOARD_VALUE_SELECTOR = '[role="slider"], [role="spinbutton"]';
|
|
29
|
+
const VALUE_KEYS = new Set([
|
|
30
|
+
'ArrowDown',
|
|
31
|
+
'ArrowLeft',
|
|
32
|
+
'ArrowRight',
|
|
33
|
+
'ArrowUp',
|
|
34
|
+
'End',
|
|
35
|
+
'Home',
|
|
36
|
+
'PageDown',
|
|
37
|
+
'PageUp'
|
|
38
|
+
]);
|
|
39
|
+
const NATIVE_VALUE_SELECTOR = [
|
|
40
|
+
'input:not([type="button"]):not([type="hidden"]):not([type="image"]):not([type="reset"]):not([type="submit"])',
|
|
41
|
+
'select',
|
|
42
|
+
'textarea'
|
|
43
|
+
].join(',');
|
|
44
|
+
const VALUE_SELECTOR = [
|
|
45
|
+
NATIVE_VALUE_SELECTOR,
|
|
46
|
+
'[role="checkbox"]',
|
|
47
|
+
'[role="combobox"]',
|
|
48
|
+
'[role="listbox"]',
|
|
49
|
+
'[role="radio"]',
|
|
50
|
+
'[role="slider"]',
|
|
51
|
+
'[role="spinbutton"]',
|
|
52
|
+
'[role="switch"]',
|
|
53
|
+
'[data-analytics-interaction="change"]'
|
|
54
|
+
].join(',');
|
|
55
|
+
const findTarget = (event, selector)=>{
|
|
56
|
+
const path = typeof event.composedPath === 'function' ? event.composedPath() : [
|
|
57
|
+
event.target
|
|
58
|
+
];
|
|
59
|
+
return path.find((item)=>item instanceof Element && item.matches(selector));
|
|
60
|
+
};
|
|
61
|
+
const getControl = (element)=>{
|
|
62
|
+
const role = element.getAttribute('role');
|
|
63
|
+
if (role) {
|
|
64
|
+
return role;
|
|
65
|
+
}
|
|
66
|
+
if (element instanceof HTMLInputElement) {
|
|
67
|
+
return `input.${element.type || 'text'}`;
|
|
68
|
+
}
|
|
69
|
+
return element.tagName.toLowerCase();
|
|
70
|
+
};
|
|
71
|
+
const isTrackable = (element)=>{
|
|
72
|
+
const disabled = element.getAttribute('aria-disabled') === 'true' || element instanceof HTMLButtonElement && element.disabled || element instanceof HTMLInputElement && element.disabled || element instanceof HTMLSelectElement && element.disabled || element instanceof HTMLTextAreaElement && element.disabled;
|
|
73
|
+
return !disabled && !element.closest('[data-analytics-track="false"]');
|
|
74
|
+
};
|
|
75
|
+
const trackInteraction = (awsRum, element, interaction)=>{
|
|
76
|
+
if (!isTrackable(element)) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const analyticsName = element.getAttribute('data-analytics-name')?.trim();
|
|
80
|
+
awsRum.track({
|
|
81
|
+
name: analyticsName || 'interaction',
|
|
82
|
+
path: globalThis.location?.pathname,
|
|
83
|
+
properties: {
|
|
84
|
+
control: getControl(element),
|
|
85
|
+
interaction
|
|
86
|
+
},
|
|
87
|
+
type: interaction === 'activate' ? 'click' : interaction
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Tracks semantic interactions with one delegated listener per event type.
|
|
92
|
+
* Values, visible text, URLs, and query strings are deliberately excluded.
|
|
93
|
+
*/ export const registerInteractionAnalytics = (awsRum, ownerDocument = globalThis.document)=>{
|
|
94
|
+
if (!ownerDocument) {
|
|
95
|
+
return ()=>{};
|
|
96
|
+
}
|
|
97
|
+
const handleBlur = (event)=>{
|
|
98
|
+
const target = findTarget(event, EDITABLE_SELECTOR);
|
|
99
|
+
if (target) {
|
|
100
|
+
trackInteraction(awsRum, target, 'edit');
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
const handleChange = (event)=>{
|
|
104
|
+
const target = findTarget(event, VALUE_SELECTOR);
|
|
105
|
+
if (target) {
|
|
106
|
+
trackInteraction(awsRum, target, 'change');
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
const handleClick = (event)=>{
|
|
110
|
+
const target = findTarget(event, ACTIVATION_SELECTOR);
|
|
111
|
+
if (target && !target.matches(NATIVE_VALUE_SELECTOR)) {
|
|
112
|
+
trackInteraction(awsRum, target, 'activate');
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
const handleSubmit = (event)=>{
|
|
116
|
+
const submitEvent = event;
|
|
117
|
+
if (!submitEvent.submitter && event.target instanceof HTMLFormElement) {
|
|
118
|
+
trackInteraction(awsRum, event.target, 'submit');
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
const handleValueKey = (event)=>{
|
|
122
|
+
const keyboardEvent = event;
|
|
123
|
+
const target = findTarget(event, KEYBOARD_VALUE_SELECTOR);
|
|
124
|
+
if (target && VALUE_KEYS.has(keyboardEvent.key)) {
|
|
125
|
+
trackInteraction(awsRum, target, 'change');
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
ownerDocument.addEventListener('blur', handleBlur, true);
|
|
129
|
+
ownerDocument.addEventListener('change', handleChange, true);
|
|
130
|
+
ownerDocument.addEventListener('click', handleClick, true);
|
|
131
|
+
ownerDocument.addEventListener('keyup', handleValueKey, true);
|
|
132
|
+
ownerDocument.addEventListener('submit', handleSubmit, true);
|
|
133
|
+
return ()=>{
|
|
134
|
+
ownerDocument.removeEventListener('blur', handleBlur, true);
|
|
135
|
+
ownerDocument.removeEventListener('change', handleChange, true);
|
|
136
|
+
ownerDocument.removeEventListener('click', handleClick, true);
|
|
137
|
+
ownerDocument.removeEventListener('keyup', handleValueKey, true);
|
|
138
|
+
ownerDocument.removeEventListener('submit', handleSubmit, true);
|
|
139
|
+
};
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy9pbnRlcmFjdGlvbkFuYWx5dGljcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNi1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHR5cGUge0F3c1J1bX0gZnJvbSAnLi9hd3NSdW0uanMnO1xuXG50eXBlIEludGVyYWN0aW9uS2luZCA9ICdhY3RpdmF0ZScgfCAnY2hhbmdlJyB8ICdlZGl0JyB8ICdzdWJtaXQnO1xuXG5jb25zdCBBQ1RJVkFUSU9OX1NFTEVDVE9SID0gW1xuICAnYVtocmVmXScsXG4gICdhcmVhW2hyZWZdJyxcbiAgJ2J1dHRvbicsXG4gICdpbnB1dFt0eXBlPVwiYnV0dG9uXCJdJyxcbiAgJ2lucHV0W3R5cGU9XCJpbWFnZVwiXScsXG4gICdpbnB1dFt0eXBlPVwicmVzZXRcIl0nLFxuICAnaW5wdXRbdHlwZT1cInN1Ym1pdFwiXScsXG4gICdzdW1tYXJ5JyxcbiAgJ1tyb2xlPVwiYnV0dG9uXCJdJyxcbiAgJ1tyb2xlPVwiY2hlY2tib3hcIl0nLFxuICAnW3JvbGU9XCJsaW5rXCJdJyxcbiAgJ1tyb2xlPVwibWVudWl0ZW1cIl0nLFxuICAnW3JvbGU9XCJtZW51aXRlbWNoZWNrYm94XCJdJyxcbiAgJ1tyb2xlPVwibWVudWl0ZW1yYWRpb1wiXScsXG4gICdbcm9sZT1cIm9wdGlvblwiXScsXG4gICdbcm9sZT1cInJhZGlvXCJdJyxcbiAgJ1tyb2xlPVwic2xpZGVyXCJdJyxcbiAgJ1tyb2xlPVwic3dpdGNoXCJdJyxcbiAgJ1tyb2xlPVwidGFiXCJdJyxcbiAgJ1tyb2xlPVwidHJlZWl0ZW1cIl0nLFxuICAnW2RhdGEtYW5hbHl0aWNzLWludGVyYWN0aW9uPVwiY2xpY2tcIl0nXG5dLmpvaW4oJywnKTtcblxuY29uc3QgRURJVEFCTEVfU0VMRUNUT1IgPSAnW2NvbnRlbnRlZGl0YWJsZT1cIlwiXSwgW2NvbnRlbnRlZGl0YWJsZT1cInRydWVcIl0nO1xuY29uc3QgS0VZQk9BUkRfVkFMVUVfU0VMRUNUT1IgPSAnW3JvbGU9XCJzbGlkZXJcIl0sIFtyb2xlPVwic3BpbmJ1dHRvblwiXSc7XG5jb25zdCBWQUxVRV9LRVlTID0gbmV3IFNldChbJ0Fycm93RG93bicsICdBcnJvd0xlZnQnLCAnQXJyb3dSaWdodCcsICdBcnJvd1VwJywgJ0VuZCcsICdIb21lJywgJ1BhZ2VEb3duJywgJ1BhZ2VVcCddKTtcbmNvbnN0IE5BVElWRV9WQUxVRV9TRUxFQ1RPUiA9IFtcbiAgJ2lucHV0Om5vdChbdHlwZT1cImJ1dHRvblwiXSk6bm90KFt0eXBlPVwiaGlkZGVuXCJdKTpub3QoW3R5cGU9XCJpbWFnZVwiXSk6bm90KFt0eXBlPVwicmVzZXRcIl0pOm5vdChbdHlwZT1cInN1Ym1pdFwiXSknLFxuICAnc2VsZWN0JyxcbiAgJ3RleHRhcmVhJ1xuXS5qb2luKCcsJyk7XG5jb25zdCBWQUxVRV9TRUxFQ1RPUiA9IFtcbiAgTkFUSVZFX1ZBTFVFX1NFTEVDVE9SLFxuICAnW3JvbGU9XCJjaGVja2JveFwiXScsXG4gICdbcm9sZT1cImNvbWJvYm94XCJdJyxcbiAgJ1tyb2xlPVwibGlzdGJveFwiXScsXG4gICdbcm9sZT1cInJhZGlvXCJdJyxcbiAgJ1tyb2xlPVwic2xpZGVyXCJdJyxcbiAgJ1tyb2xlPVwic3BpbmJ1dHRvblwiXScsXG4gICdbcm9sZT1cInN3aXRjaFwiXScsXG4gICdbZGF0YS1hbmFseXRpY3MtaW50ZXJhY3Rpb249XCJjaGFuZ2VcIl0nXG5dLmpvaW4oJywnKTtcblxuY29uc3QgZmluZFRhcmdldCA9IChldmVudDogRXZlbnQsIHNlbGVjdG9yOiBzdHJpbmcpOiBFbGVtZW50IHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgcGF0aCA9IHR5cGVvZiBldmVudC5jb21wb3NlZFBhdGggPT09ICdmdW5jdGlvbicgPyBldmVudC5jb21wb3NlZFBhdGgoKSA6IFtldmVudC50YXJnZXRdO1xuXG4gIHJldHVybiBwYXRoLmZpbmQoKGl0ZW0pOiBpdGVtIGlzIEVsZW1lbnQgPT4gaXRlbSBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgaXRlbS5tYXRjaGVzKHNlbGVjdG9yKSk7XG59O1xuXG5jb25zdCBnZXRDb250cm9sID0gKGVsZW1lbnQ6IEVsZW1lbnQpOiBzdHJpbmcgPT4ge1xuICBjb25zdCByb2xlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3JvbGUnKTtcblxuICBpZihyb2xlKSB7XG4gICAgcmV0dXJuIHJvbGU7XG4gIH1cblxuICBpZihlbGVtZW50IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCkge1xuICAgIHJldHVybiBgaW5wdXQuJHtlbGVtZW50LnR5cGUgfHwgJ3RleHQnfWA7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG59O1xuXG5jb25zdCBpc1RyYWNrYWJsZSA9IChlbGVtZW50OiBFbGVtZW50KTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IGRpc2FibGVkID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtZGlzYWJsZWQnKSA9PT0gJ3RydWUnXG4gICAgfHwgKGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MQnV0dG9uRWxlbWVudCAmJiBlbGVtZW50LmRpc2FibGVkKVxuICAgIHx8IChlbGVtZW50IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJiBlbGVtZW50LmRpc2FibGVkKVxuICAgIHx8IChlbGVtZW50IGluc3RhbmNlb2YgSFRNTFNlbGVjdEVsZW1lbnQgJiYgZWxlbWVudC5kaXNhYmxlZClcbiAgICB8fCAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQgJiYgZWxlbWVudC5kaXNhYmxlZCk7XG5cbiAgcmV0dXJuICFkaXNhYmxlZCAmJiAhZWxlbWVudC5jbG9zZXN0KCdbZGF0YS1hbmFseXRpY3MtdHJhY2s9XCJmYWxzZVwiXScpO1xufTtcblxuY29uc3QgdHJhY2tJbnRlcmFjdGlvbiA9IChhd3NSdW06IEF3c1J1bSwgZWxlbWVudDogRWxlbWVudCwgaW50ZXJhY3Rpb246IEludGVyYWN0aW9uS2luZCk6IHZvaWQgPT4ge1xuICBpZighaXNUcmFja2FibGUoZWxlbWVudCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhbmFseXRpY3NOYW1lID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtYW5hbHl0aWNzLW5hbWUnKT8udHJpbSgpO1xuXG4gIGF3c1J1bS50cmFjayh7XG4gICAgbmFtZTogYW5hbHl0aWNzTmFtZSB8fCAnaW50ZXJhY3Rpb24nLFxuICAgIHBhdGg6IGdsb2JhbFRoaXMubG9jYXRpb24/LnBhdGhuYW1lLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIGNvbnRyb2w6IGdldENvbnRyb2woZWxlbWVudCksXG4gICAgICBpbnRlcmFjdGlvblxuICAgIH0sXG4gICAgdHlwZTogaW50ZXJhY3Rpb24gPT09ICdhY3RpdmF0ZScgPyAnY2xpY2snIDogaW50ZXJhY3Rpb25cbiAgfSk7XG59O1xuXG4vKipcbiAqIFRyYWNrcyBzZW1hbnRpYyBpbnRlcmFjdGlvbnMgd2l0aCBvbmUgZGVsZWdhdGVkIGxpc3RlbmVyIHBlciBldmVudCB0eXBlLlxuICogVmFsdWVzLCB2aXNpYmxlIHRleHQsIFVSTHMsIGFuZCBxdWVyeSBzdHJpbmdzIGFyZSBkZWxpYmVyYXRlbHkgZXhjbHVkZWQuXG4gKi9cbmV4cG9ydCBjb25zdCByZWdpc3RlckludGVyYWN0aW9uQW5hbHl0aWNzID0gKFxuICBhd3NSdW06IEF3c1J1bSxcbiAgb3duZXJEb2N1bWVudDogRG9jdW1lbnQgfCB1bmRlZmluZWQgPSBnbG9iYWxUaGlzLmRvY3VtZW50XG4pOiAoKCkgPT4gdm9pZCkgPT4ge1xuICBpZighb3duZXJEb2N1bWVudCkge1xuICAgIHJldHVybiAoKSA9PiB7fTtcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUJsdXIgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZmluZFRhcmdldChldmVudCwgRURJVEFCTEVfU0VMRUNUT1IpO1xuXG4gICAgaWYodGFyZ2V0KSB7XG4gICAgICB0cmFja0ludGVyYWN0aW9uKGF3c1J1bSwgdGFyZ2V0LCAnZWRpdCcpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGV2ZW50OiBFdmVudCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IGZpbmRUYXJnZXQoZXZlbnQsIFZBTFVFX1NFTEVDVE9SKTtcblxuICAgIGlmKHRhcmdldCkge1xuICAgICAgdHJhY2tJbnRlcmFjdGlvbihhd3NSdW0sIHRhcmdldCwgJ2NoYW5nZScpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZmluZFRhcmdldChldmVudCwgQUNUSVZBVElPTl9TRUxFQ1RPUik7XG5cbiAgICBpZih0YXJnZXQgJiYgIXRhcmdldC5tYXRjaGVzKE5BVElWRV9WQUxVRV9TRUxFQ1RPUikpIHtcbiAgICAgIHRyYWNrSW50ZXJhY3Rpb24oYXdzUnVtLCB0YXJnZXQsICdhY3RpdmF0ZScpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgaGFuZGxlU3VibWl0ID0gKGV2ZW50OiBFdmVudCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHN1Ym1pdEV2ZW50ID0gZXZlbnQgYXMgU3VibWl0RXZlbnQ7XG5cbiAgICBpZighc3VibWl0RXZlbnQuc3VibWl0dGVyICYmIGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxGb3JtRWxlbWVudCkge1xuICAgICAgdHJhY2tJbnRlcmFjdGlvbihhd3NSdW0sIGV2ZW50LnRhcmdldCwgJ3N1Ym1pdCcpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgaGFuZGxlVmFsdWVLZXkgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgY29uc3Qga2V5Ym9hcmRFdmVudCA9IGV2ZW50IGFzIEtleWJvYXJkRXZlbnQ7XG4gICAgY29uc3QgdGFyZ2V0ID0gZmluZFRhcmdldChldmVudCwgS0VZQk9BUkRfVkFMVUVfU0VMRUNUT1IpO1xuXG4gICAgaWYodGFyZ2V0ICYmIFZBTFVFX0tFWVMuaGFzKGtleWJvYXJkRXZlbnQua2V5KSkge1xuICAgICAgdHJhY2tJbnRlcmFjdGlvbihhd3NSdW0sIHRhcmdldCwgJ2NoYW5nZScpO1xuICAgIH1cbiAgfTtcblxuICBvd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBoYW5kbGVCbHVyLCB0cnVlKTtcbiAgb3duZXJEb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBoYW5kbGVDaGFuZ2UsIHRydWUpO1xuICBvd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2ssIHRydWUpO1xuICBvd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgaGFuZGxlVmFsdWVLZXksIHRydWUpO1xuICBvd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIGhhbmRsZVN1Ym1pdCwgdHJ1ZSk7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBvd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2JsdXInLCBoYW5kbGVCbHVyLCB0cnVlKTtcbiAgICBvd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGhhbmRsZUNoYW5nZSwgdHJ1ZSk7XG4gICAgb3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrLCB0cnVlKTtcbiAgICBvd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgaGFuZGxlVmFsdWVLZXksIHRydWUpO1xuICAgIG93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3VibWl0JywgaGFuZGxlU3VibWl0LCB0cnVlKTtcbiAgfTtcbn07XG4iXSwibmFtZXMiOlsiQUNUSVZBVElPTl9TRUxFQ1RPUiIsImpvaW4iLCJFRElUQUJMRV9TRUxFQ1RPUiIsIktFWUJPQVJEX1ZBTFVFX1NFTEVDVE9SIiwiVkFMVUVfS0VZUyIsIlNldCIsIk5BVElWRV9WQUxVRV9TRUxFQ1RPUiIsIlZBTFVFX1NFTEVDVE9SIiwiZmluZFRhcmdldCIsImV2ZW50Iiwic2VsZWN0b3IiLCJwYXRoIiwiY29tcG9zZWRQYXRoIiwidGFyZ2V0IiwiZmluZCIsIml0ZW0iLCJFbGVtZW50IiwibWF0Y2hlcyIsImdldENvbnRyb2wiLCJlbGVtZW50Iiwicm9sZSIsImdldEF0dHJpYnV0ZSIsIkhUTUxJbnB1dEVsZW1lbnQiLCJ0eXBlIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwiaXNUcmFja2FibGUiLCJkaXNhYmxlZCIsIkhUTUxCdXR0b25FbGVtZW50IiwiSFRNTFNlbGVjdEVsZW1lbnQiLCJIVE1MVGV4dEFyZWFFbGVtZW50IiwiY2xvc2VzdCIsInRyYWNrSW50ZXJhY3Rpb24iLCJhd3NSdW0iLCJpbnRlcmFjdGlvbiIsImFuYWx5dGljc05hbWUiLCJ0cmltIiwidHJhY2siLCJuYW1lIiwiZ2xvYmFsVGhpcyIsImxvY2F0aW9uIiwicGF0aG5hbWUiLCJwcm9wZXJ0aWVzIiwiY29udHJvbCIsInJlZ2lzdGVySW50ZXJhY3Rpb25BbmFseXRpY3MiLCJvd25lckRvY3VtZW50IiwiZG9jdW1lbnQiLCJoYW5kbGVCbHVyIiwiaGFuZGxlQ2hhbmdlIiwiaGFuZGxlQ2xpY2siLCJoYW5kbGVTdWJtaXQiLCJzdWJtaXRFdmVudCIsInN1Ym1pdHRlciIsIkhUTUxGb3JtRWxlbWVudCIsImhhbmRsZVZhbHVlS2V5Iiwia2V5Ym9hcmRFdmVudCIsImhhcyIsImtleSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FLRCxNQUFNQSxzQkFBc0I7SUFDMUI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0QsQ0FBQ0MsSUFBSSxDQUFDO0FBRVAsTUFBTUMsb0JBQW9CO0FBQzFCLE1BQU1DLDBCQUEwQjtBQUNoQyxNQUFNQyxhQUFhLElBQUlDLElBQUk7SUFBQztJQUFhO0lBQWE7SUFBYztJQUFXO0lBQU87SUFBUTtJQUFZO0NBQVM7QUFDbkgsTUFBTUMsd0JBQXdCO0lBQzVCO0lBQ0E7SUFDQTtDQUNELENBQUNMLElBQUksQ0FBQztBQUNQLE1BQU1NLGlCQUFpQjtJQUNyQkQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0QsQ0FBQ0wsSUFBSSxDQUFDO0FBRVAsTUFBTU8sYUFBYSxDQUFDQyxPQUFjQztJQUNoQyxNQUFNQyxPQUFPLE9BQU9GLE1BQU1HLFlBQVksS0FBSyxhQUFhSCxNQUFNRyxZQUFZLEtBQUs7UUFBQ0gsTUFBTUksTUFBTTtLQUFDO0lBRTdGLE9BQU9GLEtBQUtHLElBQUksQ0FBQyxDQUFDQyxPQUEwQkEsZ0JBQWdCQyxXQUFXRCxLQUFLRSxPQUFPLENBQUNQO0FBQ3RGO0FBRUEsTUFBTVEsYUFBYSxDQUFDQztJQUNsQixNQUFNQyxPQUFPRCxRQUFRRSxZQUFZLENBQUM7SUFFbEMsSUFBR0QsTUFBTTtRQUNQLE9BQU9BO0lBQ1Q7SUFFQSxJQUFHRCxtQkFBbUJHLGtCQUFrQjtRQUN0QyxPQUFPLENBQUMsTUFBTSxFQUFFSCxRQUFRSSxJQUFJLElBQUksUUFBUTtJQUMxQztJQUVBLE9BQU9KLFFBQVFLLE9BQU8sQ0FBQ0MsV0FBVztBQUNwQztBQUVBLE1BQU1DLGNBQWMsQ0FBQ1A7SUFDbkIsTUFBTVEsV0FBV1IsUUFBUUUsWUFBWSxDQUFDLHFCQUFxQixVQUNyREYsbUJBQW1CUyxxQkFBcUJULFFBQVFRLFFBQVEsSUFDeERSLG1CQUFtQkcsb0JBQW9CSCxRQUFRUSxRQUFRLElBQ3ZEUixtQkFBbUJVLHFCQUFxQlYsUUFBUVEsUUFBUSxJQUN4RFIsbUJBQW1CVyx1QkFBdUJYLFFBQVFRLFFBQVE7SUFFaEUsT0FBTyxDQUFDQSxZQUFZLENBQUNSLFFBQVFZLE9BQU8sQ0FBQztBQUN2QztBQUVBLE1BQU1DLG1CQUFtQixDQUFDQyxRQUFnQmQsU0FBa0JlO0lBQzFELElBQUcsQ0FBQ1IsWUFBWVAsVUFBVTtRQUN4QjtJQUNGO0lBRUEsTUFBTWdCLGdCQUFnQmhCLFFBQVFFLFlBQVksQ0FBQyx3QkFBd0JlO0lBRW5FSCxPQUFPSSxLQUFLLENBQUM7UUFDWEMsTUFBTUgsaUJBQWlCO1FBQ3ZCeEIsTUFBTTRCLFdBQVdDLFFBQVEsRUFBRUM7UUFDM0JDLFlBQVk7WUFDVkMsU0FBU3pCLFdBQVdDO1lBQ3BCZTtRQUNGO1FBQ0FYLE1BQU1XLGdCQUFnQixhQUFhLFVBQVVBO0lBQy9DO0FBQ0Y7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLE1BQU1VLCtCQUErQixDQUMxQ1gsUUFDQVksZ0JBQXNDTixXQUFXTyxRQUFRO0lBRXpELElBQUcsQ0FBQ0QsZUFBZTtRQUNqQixPQUFPLEtBQU87SUFDaEI7SUFFQSxNQUFNRSxhQUFhLENBQUN0QztRQUNsQixNQUFNSSxTQUFTTCxXQUFXQyxPQUFPUDtRQUVqQyxJQUFHVyxRQUFRO1lBQ1RtQixpQkFBaUJDLFFBQVFwQixRQUFRO1FBQ25DO0lBQ0Y7SUFDQSxNQUFNbUMsZUFBZSxDQUFDdkM7UUFDcEIsTUFBTUksU0FBU0wsV0FBV0MsT0FBT0Y7UUFFakMsSUFBR00sUUFBUTtZQUNUbUIsaUJBQWlCQyxRQUFRcEIsUUFBUTtRQUNuQztJQUNGO0lBQ0EsTUFBTW9DLGNBQWMsQ0FBQ3hDO1FBQ25CLE1BQU1JLFNBQVNMLFdBQVdDLE9BQU9UO1FBRWpDLElBQUdhLFVBQVUsQ0FBQ0EsT0FBT0ksT0FBTyxDQUFDWCx3QkFBd0I7WUFDbkQwQixpQkFBaUJDLFFBQVFwQixRQUFRO1FBQ25DO0lBQ0Y7SUFDQSxNQUFNcUMsZUFBZSxDQUFDekM7UUFDcEIsTUFBTTBDLGNBQWMxQztRQUVwQixJQUFHLENBQUMwQyxZQUFZQyxTQUFTLElBQUkzQyxNQUFNSSxNQUFNLFlBQVl3QyxpQkFBaUI7WUFDcEVyQixpQkFBaUJDLFFBQVF4QixNQUFNSSxNQUFNLEVBQUU7UUFDekM7SUFDRjtJQUNBLE1BQU15QyxpQkFBaUIsQ0FBQzdDO1FBQ3RCLE1BQU04QyxnQkFBZ0I5QztRQUN0QixNQUFNSSxTQUFTTCxXQUFXQyxPQUFPTjtRQUVqQyxJQUFHVSxVQUFVVCxXQUFXb0QsR0FBRyxDQUFDRCxjQUFjRSxHQUFHLEdBQUc7WUFDOUN6QixpQkFBaUJDLFFBQVFwQixRQUFRO1FBQ25DO0lBQ0Y7SUFFQWdDLGNBQWNhLGdCQUFnQixDQUFDLFFBQVFYLFlBQVk7SUFDbkRGLGNBQWNhLGdCQUFnQixDQUFDLFVBQVVWLGNBQWM7SUFDdkRILGNBQWNhLGdCQUFnQixDQUFDLFNBQVNULGFBQWE7SUFDckRKLGNBQWNhLGdCQUFnQixDQUFDLFNBQVNKLGdCQUFnQjtJQUN4RFQsY0FBY2EsZ0JBQWdCLENBQUMsVUFBVVIsY0FBYztJQUV2RCxPQUFPO1FBQ0xMLGNBQWNjLG1CQUFtQixDQUFDLFFBQVFaLFlBQVk7UUFDdERGLGNBQWNjLG1CQUFtQixDQUFDLFVBQVVYLGNBQWM7UUFDMURILGNBQWNjLG1CQUFtQixDQUFDLFNBQVNWLGFBQWE7UUFDeERKLGNBQWNjLG1CQUFtQixDQUFDLFNBQVNMLGdCQUFnQjtRQUMzRFQsY0FBY2MsbUJBQW1CLENBQUMsVUFBVVQsY0FBYztJQUM1RDtBQUNGLEVBQUUifQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
type Handler = (data: any) => void;
|
|
2
|
+
export declare const enqueue: (type: string, data: any) => void;
|
|
3
|
+
export declare const registerHandler: (type: string, handler: Handler) => void;
|
|
4
|
+
export declare const clear: () => void;
|
|
5
|
+
export declare const registerFlux: (flux: any) => void;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { GothamConstants } from '../constants/GothamConstants.js';
|
|
2
|
+
const queue = new Map();
|
|
3
|
+
const handlers = new Map();
|
|
4
|
+
export const enqueue = (type, data)=>{
|
|
5
|
+
const list = queue.get(type) || [];
|
|
6
|
+
list.push(data);
|
|
7
|
+
queue.set(type, list);
|
|
8
|
+
};
|
|
9
|
+
export const registerHandler = (type, handler)=>{
|
|
10
|
+
handlers.set(type, handler);
|
|
11
|
+
const queued = queue.get(type);
|
|
12
|
+
if (queued && queued.length) {
|
|
13
|
+
// Flush queued items
|
|
14
|
+
queued.forEach((item)=>{
|
|
15
|
+
try {
|
|
16
|
+
handler(item);
|
|
17
|
+
} catch (e) {
|
|
18
|
+
// swallow errors to avoid breaking app init
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
queue.delete(type);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
export const clear = ()=>{
|
|
25
|
+
queue.clear();
|
|
26
|
+
handlers.clear();
|
|
27
|
+
};
|
|
28
|
+
export const registerFlux = (flux)=>{
|
|
29
|
+
if (!flux || typeof flux.on !== 'function') {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const capture = (type)=>(data)=>{
|
|
33
|
+
const handler = handlers.get(type);
|
|
34
|
+
if (handler) {
|
|
35
|
+
try {
|
|
36
|
+
handler(data);
|
|
37
|
+
} catch (e) {
|
|
38
|
+
// ignore
|
|
39
|
+
}
|
|
40
|
+
} else {
|
|
41
|
+
enqueue(type, data);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
flux.on(GothamConstants.NAV_GOTO, capture(GothamConstants.NAV_GOTO));
|
|
45
|
+
flux.on(GothamConstants.NAV_REPLACE, capture(GothamConstants.NAV_REPLACE));
|
|
46
|
+
flux.on(GothamConstants.NAV_BACK, capture(GothamConstants.NAV_BACK));
|
|
47
|
+
flux.on(GothamConstants.NAV_FORWARD, capture(GothamConstants.NAV_FORWARD));
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy9uYXZFdmVudFF1ZXVlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7R290aGFtQ29uc3RhbnRzfSBmcm9tICcuLi9jb25zdGFudHMvR290aGFtQ29uc3RhbnRzLmpzJztcblxudHlwZSBIYW5kbGVyID0gKGRhdGE6IGFueSkgPT4gdm9pZDtcblxuY29uc3QgcXVldWU6IE1hcDxzdHJpbmcsIGFueVtdPiA9IG5ldyBNYXAoKTtcbmNvbnN0IGhhbmRsZXJzOiBNYXA8c3RyaW5nLCBIYW5kbGVyPiA9IG5ldyBNYXAoKTtcblxuZXhwb3J0IGNvbnN0IGVucXVldWUgPSAodHlwZTogc3RyaW5nLCBkYXRhOiBhbnkpOiB2b2lkID0+IHtcbiAgY29uc3QgbGlzdCA9IHF1ZXVlLmdldCh0eXBlKSB8fCBbXTtcbiAgbGlzdC5wdXNoKGRhdGEpO1xuICBxdWV1ZS5zZXQodHlwZSwgbGlzdCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXJIYW5kbGVyID0gKHR5cGU6IHN0cmluZywgaGFuZGxlcjogSGFuZGxlcik6IHZvaWQgPT4ge1xuICBoYW5kbGVycy5zZXQodHlwZSwgaGFuZGxlcik7XG5cbiAgY29uc3QgcXVldWVkID0gcXVldWUuZ2V0KHR5cGUpO1xuICBpZihxdWV1ZWQgJiYgcXVldWVkLmxlbmd0aCkge1xuICAgIC8vIEZsdXNoIHF1ZXVlZCBpdGVtc1xuICAgIHF1ZXVlZC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBoYW5kbGVyKGl0ZW0pO1xuICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgIC8vIHN3YWxsb3cgZXJyb3JzIHRvIGF2b2lkIGJyZWFraW5nIGFwcCBpbml0XG4gICAgICB9XG4gICAgfSk7XG4gICAgcXVldWUuZGVsZXRlKHR5cGUpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXIgPSAoKTogdm9pZCA9PiB7XG4gIHF1ZXVlLmNsZWFyKCk7XG4gIGhhbmRsZXJzLmNsZWFyKCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXJGbHV4ID0gKGZsdXg6IGFueSk6IHZvaWQgPT4ge1xuICBpZighZmx1eCB8fCB0eXBlb2YgZmx1eC5vbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGNhcHR1cmUgPSAodHlwZTogc3RyaW5nKSA9PiAoZGF0YTogYW55KSA9PiB7XG4gICAgY29uc3QgaGFuZGxlciA9IGhhbmRsZXJzLmdldCh0eXBlKTtcbiAgICBpZihoYW5kbGVyKSB7XG4gICAgICB0cnkge1xuICAgICAgICBoYW5kbGVyKGRhdGEpO1xuICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgIC8vIGlnbm9yZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlbnF1ZXVlKHR5cGUsIGRhdGEpO1xuICAgIH1cbiAgfTtcblxuICBmbHV4Lm9uKEdvdGhhbUNvbnN0YW50cy5OQVZfR09UTywgY2FwdHVyZShHb3RoYW1Db25zdGFudHMuTkFWX0dPVE8pKTtcbiAgZmx1eC5vbihHb3RoYW1Db25zdGFudHMuTkFWX1JFUExBQ0UsIGNhcHR1cmUoR290aGFtQ29uc3RhbnRzLk5BVl9SRVBMQUNFKSk7XG4gIGZsdXgub24oR290aGFtQ29uc3RhbnRzLk5BVl9CQUNLLCBjYXB0dXJlKEdvdGhhbUNvbnN0YW50cy5OQVZfQkFDSykpO1xuICBmbHV4Lm9uKEdvdGhhbUNvbnN0YW50cy5OQVZfRk9SV0FSRCwgY2FwdHVyZShHb3RoYW1Db25zdGFudHMuTkFWX0ZPUldBUkQpKTtcbn07XG4iXSwibmFtZXMiOlsiR290aGFtQ29uc3RhbnRzIiwicXVldWUiLCJNYXAiLCJoYW5kbGVycyIsImVucXVldWUiLCJ0eXBlIiwiZGF0YSIsImxpc3QiLCJnZXQiLCJwdXNoIiwic2V0IiwicmVnaXN0ZXJIYW5kbGVyIiwiaGFuZGxlciIsInF1ZXVlZCIsImxlbmd0aCIsImZvckVhY2giLCJpdGVtIiwiZSIsImRlbGV0ZSIsImNsZWFyIiwicmVnaXN0ZXJGbHV4IiwiZmx1eCIsIm9uIiwiY2FwdHVyZSIsIk5BVl9HT1RPIiwiTkFWX1JFUExBQ0UiLCJOQVZfQkFDSyIsIk5BVl9GT1JXQVJEIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxlQUFlLFFBQU8sa0NBQWtDO0FBSWhFLE1BQU1DLFFBQTRCLElBQUlDO0FBQ3RDLE1BQU1DLFdBQWlDLElBQUlEO0FBRTNDLE9BQU8sTUFBTUUsVUFBVSxDQUFDQyxNQUFjQztJQUNwQyxNQUFNQyxPQUFPTixNQUFNTyxHQUFHLENBQUNILFNBQVMsRUFBRTtJQUNsQ0UsS0FBS0UsSUFBSSxDQUFDSDtJQUNWTCxNQUFNUyxHQUFHLENBQUNMLE1BQU1FO0FBQ2xCLEVBQUU7QUFFRixPQUFPLE1BQU1JLGtCQUFrQixDQUFDTixNQUFjTztJQUM1Q1QsU0FBU08sR0FBRyxDQUFDTCxNQUFNTztJQUVuQixNQUFNQyxTQUFTWixNQUFNTyxHQUFHLENBQUNIO0lBQ3pCLElBQUdRLFVBQVVBLE9BQU9DLE1BQU0sRUFBRTtRQUMxQixxQkFBcUI7UUFDckJELE9BQU9FLE9BQU8sQ0FBQyxDQUFDQztZQUNkLElBQUk7Z0JBQ0ZKLFFBQVFJO1lBQ1YsRUFBRSxPQUFNQyxHQUFHO1lBQ1QsNENBQTRDO1lBQzlDO1FBQ0Y7UUFDQWhCLE1BQU1pQixNQUFNLENBQUNiO0lBQ2Y7QUFDRixFQUFFO0FBRUYsT0FBTyxNQUFNYyxRQUFRO0lBQ25CbEIsTUFBTWtCLEtBQUs7SUFDWGhCLFNBQVNnQixLQUFLO0FBQ2hCLEVBQUU7QUFFRixPQUFPLE1BQU1DLGVBQWUsQ0FBQ0M7SUFDM0IsSUFBRyxDQUFDQSxRQUFRLE9BQU9BLEtBQUtDLEVBQUUsS0FBSyxZQUFZO1FBQ3pDO0lBQ0Y7SUFFQSxNQUFNQyxVQUFVLENBQUNsQixPQUFpQixDQUFDQztZQUNqQyxNQUFNTSxVQUFVVCxTQUFTSyxHQUFHLENBQUNIO1lBQzdCLElBQUdPLFNBQVM7Z0JBQ1YsSUFBSTtvQkFDRkEsUUFBUU47Z0JBQ1YsRUFBRSxPQUFNVyxHQUFHO2dCQUNULFNBQVM7Z0JBQ1g7WUFDRixPQUFPO2dCQUNMYixRQUFRQyxNQUFNQztZQUNoQjtRQUNGO0lBRUFlLEtBQUtDLEVBQUUsQ0FBQ3RCLGdCQUFnQndCLFFBQVEsRUFBRUQsUUFBUXZCLGdCQUFnQndCLFFBQVE7SUFDbEVILEtBQUtDLEVBQUUsQ0FBQ3RCLGdCQUFnQnlCLFdBQVcsRUFBRUYsUUFBUXZCLGdCQUFnQnlCLFdBQVc7SUFDeEVKLEtBQUtDLEVBQUUsQ0FBQ3RCLGdCQUFnQjBCLFFBQVEsRUFBRUgsUUFBUXZCLGdCQUFnQjBCLFFBQVE7SUFDbEVMLEtBQUtDLEVBQUUsQ0FBQ3RCLGdCQUFnQjJCLFdBQVcsRUFBRUosUUFBUXZCLGdCQUFnQjJCLFdBQVc7QUFDMUUsRUFBRSJ9
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const assignRef = (ref, value)=>{
|
|
2
|
+
if (typeof ref === 'function') {
|
|
3
|
+
ref(value);
|
|
4
|
+
return;
|
|
5
|
+
}
|
|
6
|
+
if (ref) {
|
|
7
|
+
ref.current = value;
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy9yZWZVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7UmVmfSBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBjb25zdCBhc3NpZ25SZWYgPSA8VD4ocmVmOiBSZWY8VD4gfCB1bmRlZmluZWQsIHZhbHVlOiBUIHwgbnVsbCk6IHZvaWQgPT4ge1xuICBpZih0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmVmKHZhbHVlKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZihyZWYpIHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9XG59O1xuIl0sIm5hbWVzIjpbImFzc2lnblJlZiIsInJlZiIsInZhbHVlIiwiY3VycmVudCJdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxNQUFNQSxZQUFZLENBQUlDLEtBQXlCQztJQUNwRCxJQUFHLE9BQU9ELFFBQVEsWUFBWTtRQUM1QkEsSUFBSUM7UUFDSjtJQUNGO0lBRUEsSUFBR0QsS0FBSztRQUNOQSxJQUFJRSxPQUFPLEdBQUdEO0lBQ2hCO0FBQ0YsRUFBRSJ9
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RouteObject } from 'react-router';
|
|
2
|
+
export type CustomRouteProps = RouteObject & {
|
|
3
|
+
readonly analytics?: {
|
|
4
|
+
readonly route?: string;
|
|
5
|
+
readonly title?: string;
|
|
6
|
+
readonly viewId: string;
|
|
7
|
+
};
|
|
8
|
+
readonly authenticate?: boolean;
|
|
9
|
+
readonly props?: Record<string, unknown>;
|
|
10
|
+
readonly routes?: CustomRouteProps[];
|
|
11
|
+
};
|
|
12
|
+
export declare const parseRoutes: (routes?: CustomRouteProps[], parentPath?: string) => RouteObject[];
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
4
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
5
|
+
*/ import { Flux } from '@nlabs/arkhamjs';
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import { Outlet, redirect } from 'react-router';
|
|
8
|
+
import { AuthRoute } from '../components/AuthRoute/AuthRoute.js';
|
|
9
|
+
import { Config } from '../config/appConfig.js';
|
|
10
|
+
export const parseRoutes = (routes = [], parentPath = '')=>routes.map((route)=>{
|
|
11
|
+
const { analytics, authenticate, element, props, ...standardRouteProps } = route;
|
|
12
|
+
const nestedRoutes = route.routes || route.children;
|
|
13
|
+
const currentPath = typeof standardRouteProps.path === 'string' ? standardRouteProps.path.replace(/^\//, '') : '';
|
|
14
|
+
const fullPath = parentPath ? parentPath + (currentPath ? `/${currentPath}` : '') : currentPath;
|
|
15
|
+
const authRoute = Config.get('authRoute') || '/signIn';
|
|
16
|
+
let routeElement = element;
|
|
17
|
+
if (/*#__PURE__*/ React.isValidElement(element)) {
|
|
18
|
+
routeElement = /*#__PURE__*/ React.cloneElement(element, {
|
|
19
|
+
route
|
|
20
|
+
});
|
|
21
|
+
} else if (typeof element === 'function' || element !== null && typeof element === 'object' && '$$typeof' in element && element.$$typeof === Symbol.for('react.memo')) {
|
|
22
|
+
routeElement = /*#__PURE__*/ React.createElement(element, {
|
|
23
|
+
route
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
let authFlag = authenticate;
|
|
27
|
+
if (authFlag === undefined && /*#__PURE__*/ React.isValidElement(element)) {
|
|
28
|
+
const elemProps = element.props;
|
|
29
|
+
authFlag = Boolean(elemProps && (elemProps.authenticate || elemProps.route && elemProps.route.authenticate));
|
|
30
|
+
}
|
|
31
|
+
if (authFlag) {
|
|
32
|
+
if (!routeElement) {
|
|
33
|
+
routeElement = /*#__PURE__*/ _jsx(AuthRoute, {
|
|
34
|
+
children: /*#__PURE__*/ _jsx(Outlet, {})
|
|
35
|
+
});
|
|
36
|
+
} else {
|
|
37
|
+
routeElement = /*#__PURE__*/ _jsx(AuthRoute, {
|
|
38
|
+
children: routeElement
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const normalizedChildren = nestedRoutes?.length ? nestedRoutes.map((child)=>{
|
|
43
|
+
let childPath = typeof child.path === 'string' ? child.path.replace(/^\/*/, '') : child.path;
|
|
44
|
+
if (fullPath && typeof childPath === 'string') {
|
|
45
|
+
const prefix = `${fullPath}/`;
|
|
46
|
+
if (childPath.startsWith(prefix)) {
|
|
47
|
+
childPath = childPath.replace(new RegExp(`^${prefix}`), '');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
...child,
|
|
52
|
+
path: childPath
|
|
53
|
+
};
|
|
54
|
+
}) : undefined;
|
|
55
|
+
const loader = route.loader || (authFlag ? makeRequireAuthLoader(authRoute) : undefined);
|
|
56
|
+
const handle = analytics ? {
|
|
57
|
+
...standardRouteProps.handle || {},
|
|
58
|
+
analytics
|
|
59
|
+
} : standardRouteProps.handle;
|
|
60
|
+
if (normalizedChildren?.length) {
|
|
61
|
+
return {
|
|
62
|
+
...standardRouteProps,
|
|
63
|
+
authenticate: authFlag,
|
|
64
|
+
children: parseRoutes(normalizedChildren, fullPath),
|
|
65
|
+
element: routeElement,
|
|
66
|
+
handle,
|
|
67
|
+
loader,
|
|
68
|
+
path: currentPath || standardRouteProps.path
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
...standardRouteProps,
|
|
73
|
+
authenticate: authFlag,
|
|
74
|
+
element: routeElement,
|
|
75
|
+
handle,
|
|
76
|
+
loader,
|
|
77
|
+
path: currentPath || standardRouteProps.path
|
|
78
|
+
};
|
|
79
|
+
});
|
|
80
|
+
const makeRequireAuthLoader = (authRoute)=>async ({ request })=>{
|
|
81
|
+
let token;
|
|
82
|
+
try {
|
|
83
|
+
if (Flux && typeof Flux.getState === 'function') {
|
|
84
|
+
token = Flux.getState([
|
|
85
|
+
'user',
|
|
86
|
+
'session',
|
|
87
|
+
'token'
|
|
88
|
+
]) || Flux.getState([
|
|
89
|
+
'session',
|
|
90
|
+
'token'
|
|
91
|
+
]) || Flux.getState([
|
|
92
|
+
'user',
|
|
93
|
+
'token'
|
|
94
|
+
]);
|
|
95
|
+
}
|
|
96
|
+
} catch (_e) {
|
|
97
|
+
// ignore errors accessing Flux
|
|
98
|
+
}
|
|
99
|
+
const isAuthFn = Config.get('isAuth', ()=>false);
|
|
100
|
+
const sessionAuth = Boolean(token) || isAuthFn && isAuthFn();
|
|
101
|
+
if (!sessionAuth) {
|
|
102
|
+
const url = new URL(request.url);
|
|
103
|
+
const redirectParam = encodeURIComponent(`${url.pathname}${url.search}${url.hash}`);
|
|
104
|
+
return redirect(`${authRoute}?redirect=${redirectParam}`);
|
|
105
|
+
}
|
|
106
|
+
return null;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy9yb3V0ZVV0aWxzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtGbHV4fSBmcm9tICdAbmxhYnMvYXJraGFtanMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7T3V0bGV0LCByZWRpcmVjdH0gZnJvbSAncmVhY3Qtcm91dGVyJztcblxuaW1wb3J0IHtBdXRoUm91dGV9IGZyb20gJy4uL2NvbXBvbmVudHMvQXV0aFJvdXRlL0F1dGhSb3V0ZS5qcyc7XG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnL2FwcENvbmZpZy5qcyc7XG5cbmltcG9ydCB0eXBlIHtSb3V0ZU9iamVjdH0gZnJvbSAncmVhY3Qtcm91dGVyJztcblxuXG4vLyBEZWZpbmUgYSB0eXBlIGZvciBvdXIgY3VzdG9tIHJvdXRlIG9iamVjdHNcbmV4cG9ydCB0eXBlIEN1c3RvbVJvdXRlUHJvcHMgPSBSb3V0ZU9iamVjdCAmIHtcbiAgcmVhZG9ubHkgYW5hbHl0aWNzPzoge1xuICAgIHJlYWRvbmx5IHJvdXRlPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHRpdGxlPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHZpZXdJZDogc3RyaW5nO1xuICB9O1xuICByZWFkb25seSBhdXRoZW50aWNhdGU/OiBib29sZWFuO1xuICByZWFkb25seSBwcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICByZWFkb25seSByb3V0ZXM/OiBDdXN0b21Sb3V0ZVByb3BzW107XG59XG5cbmV4cG9ydCBjb25zdCBwYXJzZVJvdXRlcyA9IChyb3V0ZXM6IEN1c3RvbVJvdXRlUHJvcHNbXSA9IFtdLCBwYXJlbnRQYXRoID0gJycpOiBSb3V0ZU9iamVjdFtdID0+IHJvdXRlcy5tYXAoKHJvdXRlKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhbmFseXRpY3MsXG4gICAgYXV0aGVudGljYXRlLFxuICAgIGVsZW1lbnQsXG4gICAgcHJvcHMsXG4gICAgLi4uc3RhbmRhcmRSb3V0ZVByb3BzXG4gIH0gPSByb3V0ZTtcblxuICBjb25zdCBuZXN0ZWRSb3V0ZXMgPSAocm91dGUgYXMgYW55KS5yb3V0ZXMgfHwgKHJvdXRlIGFzIGFueSkuY2hpbGRyZW47XG4gIGNvbnN0IGN1cnJlbnRQYXRoID0gdHlwZW9mIHN0YW5kYXJkUm91dGVQcm9wcy5wYXRoID09PSAnc3RyaW5nJ1xuICAgID8gc3RhbmRhcmRSb3V0ZVByb3BzLnBhdGgucmVwbGFjZSgvXlxcLy8sICcnKVxuICAgIDogJyc7XG4gIGNvbnN0IGZ1bGxQYXRoID0gcGFyZW50UGF0aCA/IChwYXJlbnRQYXRoICsgKGN1cnJlbnRQYXRoID8gYC8ke2N1cnJlbnRQYXRofWAgOiAnJykpIDogY3VycmVudFBhdGg7XG4gIGNvbnN0IGF1dGhSb3V0ZSA9IChDb25maWcuZ2V0KCdhdXRoUm91dGUnKSBhcyBzdHJpbmcpIHx8ICcvc2lnbkluJztcbiAgbGV0IHJvdXRlRWxlbWVudCA9IGVsZW1lbnQ7XG5cbiAgaWYoUmVhY3QuaXNWYWxpZEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICByb3V0ZUVsZW1lbnQgPSBSZWFjdC5jbG9uZUVsZW1lbnQoZWxlbWVudCwge3JvdXRlfSBhcyBhbnkpO1xuICB9IGVsc2UgaWYodHlwZW9mIGVsZW1lbnQgPT09ICdmdW5jdGlvbicgfHwgKFxuICAgIGVsZW1lbnQgIT09IG51bGxcbiAgICAmJiB0eXBlb2YgZWxlbWVudCA9PT0gJ29iamVjdCdcbiAgICAmJiAnJCR0eXBlb2YnIGluIGVsZW1lbnRcbiAgICAmJiBlbGVtZW50LiQkdHlwZW9mID09PSBTeW1ib2wuZm9yKCdyZWFjdC5tZW1vJylcbiAgKSkge1xuICAgIHJvdXRlRWxlbWVudCA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoZWxlbWVudCBhcyBhbnksIHtyb3V0ZX0pO1xuICB9XG5cbiAgbGV0IGF1dGhGbGFnID0gYXV0aGVudGljYXRlO1xuXG4gIGlmKGF1dGhGbGFnID09PSB1bmRlZmluZWQgJiYgUmVhY3QuaXNWYWxpZEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBjb25zdCBlbGVtUHJvcHM6IGFueSA9IChlbGVtZW50IGFzIFJlYWN0LlJlYWN0RWxlbWVudCkucHJvcHM7XG4gICAgYXV0aEZsYWcgPSBCb29sZWFuKGVsZW1Qcm9wcyAmJiAoZWxlbVByb3BzLmF1dGhlbnRpY2F0ZSB8fCAoZWxlbVByb3BzLnJvdXRlICYmIGVsZW1Qcm9wcy5yb3V0ZS5hdXRoZW50aWNhdGUpKSk7XG4gIH1cblxuICBpZihhdXRoRmxhZykge1xuICAgIGlmKCFyb3V0ZUVsZW1lbnQpIHtcbiAgICAgIHJvdXRlRWxlbWVudCA9IDxBdXRoUm91dGU+PE91dGxldC8+PC9BdXRoUm91dGU+O1xuICAgIH0gZWxzZSB7XG4gICAgICByb3V0ZUVsZW1lbnQgPSA8QXV0aFJvdXRlPntyb3V0ZUVsZW1lbnR9PC9BdXRoUm91dGU+O1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG5vcm1hbGl6ZWRDaGlsZHJlbiA9IG5lc3RlZFJvdXRlcz8ubGVuZ3RoXG4gICAgPyBuZXN0ZWRSb3V0ZXMubWFwKChjaGlsZCkgPT4ge1xuICAgICAgbGV0IGNoaWxkUGF0aCA9IHR5cGVvZiBjaGlsZC5wYXRoID09PSAnc3RyaW5nJyA/IGNoaWxkLnBhdGgucmVwbGFjZSgvXlxcLyovLCAnJykgOiBjaGlsZC5wYXRoO1xuXG4gICAgICBpZihmdWxsUGF0aCAmJiB0eXBlb2YgY2hpbGRQYXRoID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBwcmVmaXggPSBgJHtmdWxsUGF0aH0vYDtcbiAgICAgICAgaWYoY2hpbGRQYXRoLnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgICAgIGNoaWxkUGF0aCA9IGNoaWxkUGF0aC5yZXBsYWNlKG5ldyBSZWdFeHAoYF4ke3ByZWZpeH1gKSwgJycpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNoaWxkLFxuICAgICAgICBwYXRoOiBjaGlsZFBhdGhcbiAgICAgIH07XG4gICAgfSlcbiAgICA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBsb2FkZXIgPSAocm91dGUgYXMgYW55KS5sb2FkZXIgfHwgKGF1dGhGbGFnID8gbWFrZVJlcXVpcmVBdXRoTG9hZGVyKGF1dGhSb3V0ZSkgOiB1bmRlZmluZWQpO1xuICBjb25zdCBoYW5kbGUgPSBhbmFseXRpY3MgPyB7Li4uKHN0YW5kYXJkUm91dGVQcm9wcy5oYW5kbGUgfHwge30pLCBhbmFseXRpY3N9IDogc3RhbmRhcmRSb3V0ZVByb3BzLmhhbmRsZTtcblxuICBpZihub3JtYWxpemVkQ2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGFuZGFyZFJvdXRlUHJvcHMsXG4gICAgICBhdXRoZW50aWNhdGU6IGF1dGhGbGFnLFxuICAgICAgY2hpbGRyZW46IHBhcnNlUm91dGVzKG5vcm1hbGl6ZWRDaGlsZHJlbiBhcyBDdXN0b21Sb3V0ZVByb3BzW10sIGZ1bGxQYXRoKSxcbiAgICAgIGVsZW1lbnQ6IHJvdXRlRWxlbWVudCxcbiAgICAgIGhhbmRsZSxcbiAgICAgIGxvYWRlcixcbiAgICAgIHBhdGg6IGN1cnJlbnRQYXRoIHx8IHN0YW5kYXJkUm91dGVQcm9wcy5wYXRoXG4gICAgfSBhcyBhbnk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YW5kYXJkUm91dGVQcm9wcyxcbiAgICBhdXRoZW50aWNhdGU6IGF1dGhGbGFnLFxuICAgIGVsZW1lbnQ6IHJvdXRlRWxlbWVudCxcbiAgICBoYW5kbGUsXG4gICAgbG9hZGVyLFxuICAgIHBhdGg6IGN1cnJlbnRQYXRoIHx8IHN0YW5kYXJkUm91dGVQcm9wcy5wYXRoXG4gIH0gYXMgYW55O1xufSk7XG5cbmNvbnN0IG1ha2VSZXF1aXJlQXV0aExvYWRlciA9IChhdXRoUm91dGU6IHN0cmluZyk6IGFueSA9PiBhc3luYyAoe3JlcXVlc3R9OiB7cmVxdWVzdDogUmVxdWVzdH0pID0+IHtcbiAgbGV0IHRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgdHJ5IHtcbiAgICBpZihGbHV4ICYmIHR5cGVvZiBGbHV4LmdldFN0YXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0b2tlbiA9IEZsdXguZ2V0U3RhdGUoWyd1c2VyJywgJ3Nlc3Npb24nLCAndG9rZW4nXSkgYXMgc3RyaW5nIHx8IEZsdXguZ2V0U3RhdGUoWydzZXNzaW9uJywgJ3Rva2VuJ10pIGFzIHN0cmluZyB8fCBGbHV4LmdldFN0YXRlKFsndXNlcicsICd0b2tlbiddKSBhcyBzdHJpbmc7XG4gICAgfVxuICB9IGNhdGNoKF9lKSB7XG4gICAgLy8gaWdub3JlIGVycm9ycyBhY2Nlc3NpbmcgRmx1eFxuICB9XG5cbiAgY29uc3QgaXNBdXRoRm4gPSBDb25maWcuZ2V0KCdpc0F1dGgnLCAoKSA9PiBmYWxzZSkgYXMgKCkgPT4gYm9vbGVhbjtcbiAgY29uc3Qgc2Vzc2lvbkF1dGggPSBCb29sZWFuKHRva2VuKSB8fCAoaXNBdXRoRm4gJiYgaXNBdXRoRm4oKSk7XG5cbiAgaWYoIXNlc3Npb25BdXRoKSB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTChyZXF1ZXN0LnVybCk7XG4gICAgY29uc3QgcmVkaXJlY3RQYXJhbSA9IGVuY29kZVVSSUNvbXBvbmVudChgJHt1cmwucGF0aG5hbWV9JHt1cmwuc2VhcmNofSR7dXJsLmhhc2h9YCk7XG5cbiAgICByZXR1cm4gcmVkaXJlY3QoYCR7YXV0aFJvdXRlfT9yZWRpcmVjdD0ke3JlZGlyZWN0UGFyYW19YCk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG4iXSwibmFtZXMiOlsiRmx1eCIsIlJlYWN0IiwiT3V0bGV0IiwicmVkaXJlY3QiLCJBdXRoUm91dGUiLCJDb25maWciLCJwYXJzZVJvdXRlcyIsInJvdXRlcyIsInBhcmVudFBhdGgiLCJtYXAiLCJyb3V0ZSIsImFuYWx5dGljcyIsImF1dGhlbnRpY2F0ZSIsImVsZW1lbnQiLCJwcm9wcyIsInN0YW5kYXJkUm91dGVQcm9wcyIsIm5lc3RlZFJvdXRlcyIsImNoaWxkcmVuIiwiY3VycmVudFBhdGgiLCJwYXRoIiwicmVwbGFjZSIsImZ1bGxQYXRoIiwiYXV0aFJvdXRlIiwiZ2V0Iiwicm91dGVFbGVtZW50IiwiaXNWYWxpZEVsZW1lbnQiLCJjbG9uZUVsZW1lbnQiLCIkJHR5cGVvZiIsIlN5bWJvbCIsImZvciIsImNyZWF0ZUVsZW1lbnQiLCJhdXRoRmxhZyIsInVuZGVmaW5lZCIsImVsZW1Qcm9wcyIsIkJvb2xlYW4iLCJub3JtYWxpemVkQ2hpbGRyZW4iLCJsZW5ndGgiLCJjaGlsZCIsImNoaWxkUGF0aCIsInByZWZpeCIsInN0YXJ0c1dpdGgiLCJSZWdFeHAiLCJsb2FkZXIiLCJtYWtlUmVxdWlyZUF1dGhMb2FkZXIiLCJoYW5kbGUiLCJyZXF1ZXN0IiwidG9rZW4iLCJnZXRTdGF0ZSIsIl9lIiwiaXNBdXRoRm4iLCJzZXNzaW9uQXV0aCIsInVybCIsIlVSTCIsInJlZGlyZWN0UGFyYW0iLCJlbmNvZGVVUklDb21wb25lbnQiLCJwYXRobmFtZSIsInNlYXJjaCIsImhhc2giXSwibWFwcGluZ3MiOiI7QUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxJQUFJLFFBQU8sa0JBQWtCO0FBQ3JDLE9BQU9DLFdBQVcsUUFBUTtBQUMxQixTQUFRQyxNQUFNLEVBQUVDLFFBQVEsUUFBTyxlQUFlO0FBRTlDLFNBQVFDLFNBQVMsUUFBTyx1Q0FBdUM7QUFDL0QsU0FBUUMsTUFBTSxRQUFPLHlCQUF5QjtBQWlCOUMsT0FBTyxNQUFNQyxjQUFjLENBQUNDLFNBQTZCLEVBQUUsRUFBRUMsYUFBYSxFQUFFLEdBQW9CRCxPQUFPRSxHQUFHLENBQUMsQ0FBQ0M7UUFDMUcsTUFBTSxFQUNKQyxT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
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/ export { };
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy9zaXplVXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmV4cG9ydCB0eXBlIEdvdGhhbVNpemUgPSAnc20nIHwgJ21kJyB8ICdsZyc7Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFdBQTRDIn0=
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const preventAnchorNavigation = (element)=>{
|
|
2
|
+
const anchor = element.closest('a[href]');
|
|
3
|
+
if (anchor instanceof HTMLAnchorElement) {
|
|
4
|
+
anchor.addEventListener('click', (event)=>event.preventDefault(), {
|
|
5
|
+
capture: true,
|
|
6
|
+
once: true
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
const clearCanvasFocus = (canvasElement)=>{
|
|
11
|
+
const { activeElement } = canvasElement.ownerDocument;
|
|
12
|
+
if (activeElement instanceof HTMLElement && canvasElement.contains(activeElement)) {
|
|
13
|
+
activeElement.blur();
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
export const interactWithCanvas = async ({ canvasElement })=>{
|
|
17
|
+
await Promise.resolve();
|
|
18
|
+
const field = canvasElement.querySelector('input:not([type="file"]), textarea');
|
|
19
|
+
if (field && !field.disabled && !field.readOnly) {
|
|
20
|
+
field.focus();
|
|
21
|
+
field.value = field instanceof HTMLTextAreaElement ? 'Story interaction note' : 'Story interaction';
|
|
22
|
+
field.dispatchEvent(new Event('input', {
|
|
23
|
+
bubbles: true
|
|
24
|
+
}));
|
|
25
|
+
field.dispatchEvent(new Event('change', {
|
|
26
|
+
bubbles: true
|
|
27
|
+
}));
|
|
28
|
+
field.blur();
|
|
29
|
+
}
|
|
30
|
+
const clickable = canvasElement.querySelector('button:not([disabled]), a[href], [role="button"]');
|
|
31
|
+
if (clickable) {
|
|
32
|
+
clickable.focus();
|
|
33
|
+
preventAnchorNavigation(clickable);
|
|
34
|
+
clickable.click();
|
|
35
|
+
clearCanvasFocus(canvasElement);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
export const focusCanvas = async ({ canvasElement })=>{
|
|
39
|
+
await Promise.resolve();
|
|
40
|
+
const focusable = canvasElement.querySelector('button, a[href], input, textarea, [tabindex]');
|
|
41
|
+
focusable?.focus();
|
|
42
|
+
clearCanvasFocus(canvasElement);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy9zdG9yeUludGVyYWN0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJ0eXBlIFN0b3J5Q29udGV4dCA9IHtcbiAgcmVhZG9ubHkgY2FudmFzRWxlbWVudDogSFRNTEVsZW1lbnQ7XG59O1xuXG5jb25zdCBwcmV2ZW50QW5jaG9yTmF2aWdhdGlvbiA9IChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuICBjb25zdCBhbmNob3IgPSBlbGVtZW50LmNsb3Nlc3QoJ2FbaHJlZl0nKTtcblxuICBpZihhbmNob3IgaW5zdGFuY2VvZiBIVE1MQW5jaG9yRWxlbWVudCkge1xuICAgIGFuY2hvci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudCkgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKSwge2NhcHR1cmU6IHRydWUsIG9uY2U6IHRydWV9KTtcbiAgfVxufTtcblxuY29uc3QgY2xlYXJDYW52YXNGb2N1cyA9IChjYW52YXNFbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuICBjb25zdCB7YWN0aXZlRWxlbWVudH0gPSBjYW52YXNFbGVtZW50Lm93bmVyRG9jdW1lbnQ7XG5cbiAgaWYoYWN0aXZlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGNhbnZhc0VsZW1lbnQuY29udGFpbnMoYWN0aXZlRWxlbWVudCkpIHtcbiAgICBhY3RpdmVFbGVtZW50LmJsdXIoKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGludGVyYWN0V2l0aENhbnZhcyA9IGFzeW5jICh7Y2FudmFzRWxlbWVudH06IFN0b3J5Q29udGV4dCkgPT4ge1xuICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKTtcblxuICBjb25zdCBmaWVsZCA9IGNhbnZhc0VsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQ6bm90KFt0eXBlPVwiZmlsZVwiXSksIHRleHRhcmVhJykgYXMgSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQgfCBudWxsO1xuXG4gIGlmKGZpZWxkICYmICFmaWVsZC5kaXNhYmxlZCAmJiAhZmllbGQucmVhZE9ubHkpIHtcbiAgICBmaWVsZC5mb2N1cygpO1xuICAgIGZpZWxkLnZhbHVlID0gZmllbGQgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50ID8gJ1N0b3J5IGludGVyYWN0aW9uIG5vdGUnIDogJ1N0b3J5IGludGVyYWN0aW9uJztcbiAgICBmaWVsZC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnLCB7YnViYmxlczogdHJ1ZX0pKTtcbiAgICBmaWVsZC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywge2J1YmJsZXM6IHRydWV9KSk7XG4gICAgZmllbGQuYmx1cigpO1xuICB9XG5cbiAgY29uc3QgY2xpY2thYmxlID0gY2FudmFzRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdidXR0b246bm90KFtkaXNhYmxlZF0pLCBhW2hyZWZdLCBbcm9sZT1cImJ1dHRvblwiXScpIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICBpZihjbGlja2FibGUpIHtcbiAgICBjbGlja2FibGUuZm9jdXMoKTtcbiAgICBwcmV2ZW50QW5jaG9yTmF2aWdhdGlvbihjbGlja2FibGUpO1xuICAgIGNsaWNrYWJsZS5jbGljaygpO1xuICAgIGNsZWFyQ2FudmFzRm9jdXMoY2FudmFzRWxlbWVudCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBmb2N1c0NhbnZhcyA9IGFzeW5jICh7Y2FudmFzRWxlbWVudH06IFN0b3J5Q29udGV4dCkgPT4ge1xuICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKTtcblxuICBjb25zdCBmb2N1c2FibGUgPSBjYW52YXNFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbiwgYVtocmVmXSwgaW5wdXQsIHRleHRhcmVhLCBbdGFiaW5kZXhdJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICBmb2N1c2FibGU/LmZvY3VzKCk7XG4gIGNsZWFyQ2FudmFzRm9jdXMoY2FudmFzRWxlbWVudCk7XG59O1xuIl0sIm5hbWVzIjpbInByZXZlbnRBbmNob3JOYXZpZ2F0aW9uIiwiZWxlbWVudCIsImFuY2hvciIsImNsb3Nlc3QiLCJIVE1MQW5jaG9yRWxlbWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJldmVudCIsInByZXZlbnREZWZhdWx0IiwiY2FwdHVyZSIsIm9uY2UiLCJjbGVhckNhbnZhc0ZvY3VzIiwiY2FudmFzRWxlbWVudCIsImFjdGl2ZUVsZW1lbnQiLCJvd25lckRvY3VtZW50IiwiSFRNTEVsZW1lbnQiLCJjb250YWlucyIsImJsdXIiLCJpbnRlcmFjdFdpdGhDYW52YXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsImZpZWxkIiwicXVlcnlTZWxlY3RvciIsImRpc2FibGVkIiwicmVhZE9ubHkiLCJmb2N1cyIsInZhbHVlIiwiSFRNTFRleHRBcmVhRWxlbWVudCIsImRpc3BhdGNoRXZlbnQiLCJFdmVudCIsImJ1YmJsZXMiLCJjbGlja2FibGUiLCJjbGljayIsImZvY3VzQ2FudmFzIiwiZm9jdXNhYmxlIl0sIm1hcHBpbmdzIjoiQUFJQSxNQUFNQSwwQkFBMEIsQ0FBQ0M7SUFDL0IsTUFBTUMsU0FBU0QsUUFBUUUsT0FBTyxDQUFDO0lBRS9CLElBQUdELGtCQUFrQkUsbUJBQW1CO1FBQ3RDRixPQUFPRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUNDLFFBQVVBLE1BQU1DLGNBQWMsSUFBSTtZQUFDQyxTQUFTO1lBQU1DLE1BQU07UUFBSTtJQUNoRztBQUNGO0FBRUEsTUFBTUMsbUJBQW1CLENBQUNDO0lBQ3hCLE1BQU0sRUFBQ0MsYUFBYSxFQUFDLEdBQUdELGNBQWNFLGFBQWE7SUFFbkQsSUFBR0QseUJBQXlCRSxlQUFlSCxjQUFjSSxRQUFRLENBQUNILGdCQUFnQjtRQUNoRkEsY0FBY0ksSUFBSTtJQUNwQjtBQUNGO0FBRUEsT0FBTyxNQUFNQyxxQkFBcUIsT0FBTyxFQUFDTixhQUFhLEVBQWU7SUFDcEUsTUFBTU8sUUFBUUMsT0FBTztJQUVyQixNQUFNQyxRQUFRVCxjQUFjVSxhQUFhLENBQUM7SUFFMUMsSUFBR0QsU0FBUyxDQUFDQSxNQUFNRSxRQUFRLElBQUksQ0FBQ0YsTUFBTUcsUUFBUSxFQUFFO1FBQzlDSCxNQUFNSSxLQUFLO1FBQ1hKLE1BQU1LLEtBQUssR0FBR0wsaUJBQWlCTSxzQkFBc0IsMkJBQTJCO1FBQ2hGTixNQUFNTyxhQUFhLENBQUMsSUFBSUMsTUFBTSxTQUFTO1lBQUNDLFNBQVM7UUFBSTtRQUNyRFQsTUFBTU8sYUFBYSxDQUFDLElBQUlDLE1BQU0sVUFBVTtZQUFDQyxTQUFTO1FBQUk7UUFDdERULE1BQU1KLElBQUk7SUFDWjtJQUVBLE1BQU1jLFlBQVluQixjQUFjVSxhQUFhLENBQUM7SUFFOUMsSUFBR1MsV0FBVztRQUNaQSxVQUFVTixLQUFLO1FBQ2Z4Qix3QkFBd0I4QjtRQUN4QkEsVUFBVUMsS0FBSztRQUNmckIsaUJBQWlCQztJQUNuQjtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU1xQixjQUFjLE9BQU8sRUFBQ3JCLGFBQWEsRUFBZTtJQUM3RCxNQUFNTyxRQUFRQyxPQUFPO0lBRXJCLE1BQU1jLFlBQVl0QixjQUFjVSxhQUFhLENBQUM7SUFDOUNZLFdBQVdUO0lBQ1hkLGlCQUFpQkM7QUFDbkIsRUFBRSJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const gothamDecorator: (Story: any) => import("react").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
4
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
5
|
+
*/ import { GothamProvider } from '../views/Gotham/GothamProvider.js';
|
|
6
|
+
export const gothamDecorator = (Story)=>/*#__PURE__*/ _jsx(GothamProvider, {
|
|
7
|
+
config: {},
|
|
8
|
+
children: /*#__PURE__*/ _jsx(Story, {})
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy9zdG9yeVV0aWxzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtHb3RoYW1Qcm92aWRlcn0gZnJvbSAnLi4vdmlld3MvR290aGFtL0dvdGhhbVByb3ZpZGVyLmpzJztcblxuZXhwb3J0IGNvbnN0IGdvdGhhbURlY29yYXRvciA9IChTdG9yeSkgPT4gKFxuICA8R290aGFtUHJvdmlkZXIgY29uZmlnPXt7fX0+XG4gICAgPFN0b3J5IC8+XG4gIDwvR290aGFtUHJvdmlkZXI+XG4pO1xuIl0sIm5hbWVzIjpbIkdvdGhhbVByb3ZpZGVyIiwiZ290aGFtRGVjb3JhdG9yIiwiU3RvcnkiLCJjb25maWciXSwibWFwcGluZ3MiOiI7QUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxjQUFjLFFBQU8sb0NBQW9DO0FBRWpFLE9BQU8sTUFBTUMsa0JBQWtCLENBQUNDLHNCQUM5QixLQUFDRjtRQUFlRyxRQUFRLENBQUM7a0JBQ3ZCLGNBQUEsS0FBQ0Q7T0FFSCJ9
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
4
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
5
|
+
*/ import { Flux } from '@nlabs/arkhamjs';
|
|
6
|
+
import { FluxProvider } from '@nlabs/arkhamjs-utils-react';
|
|
7
|
+
import { render, screen, waitFor } from '@nlabs/lex/test-react';
|
|
8
|
+
import { MemoryRouter } from 'react-router';
|
|
9
|
+
import { Form } from '../components/Form/Form.js';
|
|
10
|
+
export const getTestElement = (name, index = 0)=>screen.queryAllByTestId(name)[index];
|
|
11
|
+
export const renderWithProvider = async (Element, props = {})=>{
|
|
12
|
+
const { mockRoute = '/', ...restProps } = props;
|
|
13
|
+
Flux.init();
|
|
14
|
+
jest.useFakeTimers();
|
|
15
|
+
const wrapper = render(/*#__PURE__*/ _jsx(FluxProvider, {
|
|
16
|
+
flux: Flux,
|
|
17
|
+
children: /*#__PURE__*/ _jsx(MemoryRouter, {
|
|
18
|
+
initialEntries: [
|
|
19
|
+
mockRoute
|
|
20
|
+
],
|
|
21
|
+
initialIndex: 0,
|
|
22
|
+
children: /*#__PURE__*/ _jsx(Element, {
|
|
23
|
+
...restProps
|
|
24
|
+
})
|
|
25
|
+
})
|
|
26
|
+
}));
|
|
27
|
+
await waitFor(()=>{
|
|
28
|
+
jest.runAllImmediates();
|
|
29
|
+
});
|
|
30
|
+
return wrapper;
|
|
31
|
+
};
|
|
32
|
+
export const renderWithForm = async (Element, props = {})=>{
|
|
33
|
+
const { mocks, onSubmit = ()=>{}, ...restProps } = props;
|
|
34
|
+
jest.useFakeTimers();
|
|
35
|
+
const wrapper = render(/*#__PURE__*/ _jsx(FluxProvider, {
|
|
36
|
+
flux: Flux,
|
|
37
|
+
children: /*#__PURE__*/ _jsx(MemoryRouter, {
|
|
38
|
+
initialEntries: [
|
|
39
|
+
'/'
|
|
40
|
+
],
|
|
41
|
+
initialIndex: 0,
|
|
42
|
+
children: /*#__PURE__*/ _jsx(Form, {
|
|
43
|
+
onSubmit: onSubmit,
|
|
44
|
+
children: /*#__PURE__*/ _jsx(Element, {
|
|
45
|
+
...restProps
|
|
46
|
+
})
|
|
47
|
+
})
|
|
48
|
+
})
|
|
49
|
+
}));
|
|
50
|
+
await waitFor(()=>{
|
|
51
|
+
jest.runAllImmediates();
|
|
52
|
+
});
|
|
53
|
+
return wrapper;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy90ZXN0VXRpbHMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge0ZsdXh9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5pbXBvcnQge0ZsdXhQcm92aWRlcn0gZnJvbSAnQG5sYWJzL2Fya2hhbWpzLXV0aWxzLXJlYWN0JztcbmltcG9ydCB7cmVuZGVyLCBzY3JlZW4sIHdhaXRGb3J9IGZyb20gJ0BubGFicy9sZXgvdGVzdC1yZWFjdCc7XG5pbXBvcnQge01lbW9yeVJvdXRlcn0gZnJvbSAncmVhY3Qtcm91dGVyJztcblxuaW1wb3J0IHtGb3JtfSBmcm9tICcuLi9jb21wb25lbnRzL0Zvcm0vRm9ybS5qcyc7XG5cbmV4cG9ydCBjb25zdCBnZXRUZXN0RWxlbWVudCA9IChuYW1lOiBzdHJpbmcsIGluZGV4OiBudW1iZXIgPSAwKSA9PiBzY3JlZW4ucXVlcnlBbGxCeVRlc3RJZChuYW1lKVtpbmRleF07XG5cbmV4cG9ydCBjb25zdCByZW5kZXJXaXRoUHJvdmlkZXI6IGFueSA9IGFzeW5jIChFbGVtZW50LCBwcm9wcyA9IHt9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBtb2NrUm91dGUgPSAnLycsXG4gICAgLi4ucmVzdFByb3BzXG4gIH06IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gcHJvcHM7XG4gIEZsdXguaW5pdCgpO1xuICBqZXN0LnVzZUZha2VUaW1lcnMoKTtcblxuICBjb25zdCB3cmFwcGVyID0gcmVuZGVyKFxuICAgIDxGbHV4UHJvdmlkZXIgZmx1eD17Rmx1eH0gPlxuICAgICAgPE1lbW9yeVJvdXRlciBpbml0aWFsRW50cmllcz17W21vY2tSb3V0ZSBhcyBzdHJpbmddfSBpbml0aWFsSW5kZXg9ezB9ID5cbiAgICAgICAgPEVsZW1lbnQgey4uLnJlc3RQcm9wc30gLz5cbiAgICAgIDwvTWVtb3J5Um91dGVyPlxuICAgIDwvRmx1eFByb3ZpZGVyPlxuICApO1xuXG4gIGF3YWl0IHdhaXRGb3IoKCkgPT4ge1xuICAgIGplc3QucnVuQWxsSW1tZWRpYXRlcygpO1xuICB9KTtcblxuICByZXR1cm4gd3JhcHBlcjtcbn07XG5cbmludGVyZmFjZSBSZW5kZXJGb3JtUHJvcHMge1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICBtb2Nrcz86IHVua25vd247XG4gIG9uU3VibWl0PzogKGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgcmVuZGVyV2l0aEZvcm06IGFueSA9IGFzeW5jIChFbGVtZW50LCBwcm9wczogUmVuZGVyRm9ybVByb3BzID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIG1vY2tzLFxuICAgIG9uU3VibWl0ID0gKCkgPT4ge30sXG4gICAgLi4ucmVzdFByb3BzXG4gIH0gPSBwcm9wcztcblxuICBqZXN0LnVzZUZha2VUaW1lcnMoKTtcblxuICBjb25zdCB3cmFwcGVyID0gcmVuZGVyKFxuICAgIDxGbHV4UHJvdmlkZXIgZmx1eD17Rmx1eH0+XG4gICAgICA8TWVtb3J5Um91dGVyIGluaXRpYWxFbnRyaWVzPXtbJy8nXX0gaW5pdGlhbEluZGV4PXswfT5cbiAgICAgICAgPEZvcm0gb25TdWJtaXQ9e29uU3VibWl0fT5cbiAgICAgICAgICA8RWxlbWVudCB7Li4ucmVzdFByb3BzfSAvPlxuICAgICAgICA8L0Zvcm0+XG4gICAgICA8L01lbW9yeVJvdXRlcj5cbiAgICA8L0ZsdXhQcm92aWRlcj5cbiAgKTtcblxuICBhd2FpdCB3YWl0Rm9yKCgpID0+IHtcbiAgICBqZXN0LnJ1bkFsbEltbWVkaWF0ZXMoKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHdyYXBwZXI7XG59O1xuIl0sIm5hbWVzIjpbIkZsdXgiLCJGbHV4UHJvdmlkZXIiLCJyZW5kZXIiLCJzY3JlZW4iLCJ3YWl0Rm9yIiwiTWVtb3J5Um91dGVyIiwiRm9ybSIsImdldFRlc3RFbGVtZW50IiwibmFtZSIsImluZGV4IiwicXVlcnlBbGxCeVRlc3RJZCIsInJlbmRlcldpdGhQcm92aWRlciIsIkVsZW1lbnQiLCJwcm9wcyIsIm1vY2tSb3V0ZSIsInJlc3RQcm9wcyIsImluaXQiLCJqZXN0IiwidXNlRmFrZVRpbWVycyIsIndyYXBwZXIiLCJmbHV4IiwiaW5pdGlhbEVudHJpZXMiLCJpbml0aWFsSW5kZXgiLCJydW5BbGxJbW1lZGlhdGVzIiwicmVuZGVyV2l0aEZvcm0iLCJtb2NrcyIsIm9uU3VibWl0Il0sIm1hcHBpbmdzIjoiO0FBQUE7OztDQUdDLEdBQ0QsU0FBUUEsSUFBSSxRQUFPLGtCQUFrQjtBQUNyQyxTQUFRQyxZQUFZLFFBQU8sOEJBQThCO0FBQ3pELFNBQVFDLE1BQU0sRUFBRUMsTUFBTSxFQUFFQyxPQUFPLFFBQU8sd0JBQXdCO0FBQzlELFNBQVFDLFlBQVksUUFBTyxlQUFlO0FBRTFDLFNBQVFDLElBQUksUUFBTyw2QkFBNkI7QUFFaEQsT0FBTyxNQUFNQyxpQkFBaUIsQ0FBQ0MsTUFBY0MsUUFBZ0IsQ0FBQyxHQUFLTixPQUFPTyxnQkFBZ0IsQ0FBQ0YsS0FBSyxDQUFDQyxNQUFNLENBQUM7QUFFeEcsT0FBTyxNQUFNRSxxQkFBMEIsT0FBT0MsU0FBU0MsUUFBUSxDQUFDLENBQUM7SUFDL0QsTUFBTSxFQUNKQyxZQUFZLEdBQUcsRUFDZixHQUFHQyxXQUNKLEdBQTRCRjtJQUM3QmIsS0FBS2dCLElBQUk7SUFDVEMsS0FBS0MsYUFBYTtJQUVsQixNQUFNQyxVQUFVakIscUJBQ2QsS0FBQ0Q7UUFBYW1CLE1BQU1wQjtrQkFDbEIsY0FBQSxLQUFDSztZQUFhZ0IsZ0JBQWdCO2dCQUFDUDthQUFvQjtZQUFFUSxjQUFjO3NCQUNqRSxjQUFBLEtBQUNWO2dCQUFTLEdBQUdHLFNBQVM7Ozs7SUFLNUIsTUFBTVgsUUFBUTtRQUNaYSxLQUFLTSxnQkFBZ0I7SUFDdkI7SUFFQSxPQUFPSjtBQUNULEVBQUU7QUFRRixPQUFPLE1BQU1LLGlCQUFzQixPQUFPWixTQUFTQyxRQUF5QixDQUFDLENBQUM7SUFDNUUsTUFBTSxFQUNKWSxLQUFLLEVBQ0xDLFdBQVcsS0FBTyxDQUFDLEVBQ25CLEdBQUdYLFdBQ0osR0FBR0Y7SUFFSkksS0FBS0MsYUFBYTtJQUVsQixNQUFNQyxVQUFVakIscUJBQ2QsS0FBQ0Q7UUFBYW1CLE1BQU1wQjtrQkFDbEIsY0FBQSxLQUFDSztZQUFhZ0IsZ0JBQWdCO2dCQUFDO2FBQUk7WUFBRUMsY0FBYztzQkFDakQsY0FBQSxLQUFDaEI7Z0JBQUtvQixVQUFVQTswQkFDZCxjQUFBLEtBQUNkO29CQUFTLEdBQUdHLFNBQVM7Ozs7O0lBTTlCLE1BQU1YLFFBQVE7UUFDWmEsS0FBS00sZ0JBQWdCO0lBQ3ZCO0lBRUEsT0FBT0o7QUFDVCxFQUFFIn0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Create a Timer
|
|
7
|
+
* @param {Number} delay
|
|
8
|
+
* @param {Function} callback
|
|
9
|
+
* @constructor
|
|
10
|
+
*/
|
|
11
|
+
export declare class GothamTimer {
|
|
12
|
+
timerId: unknown;
|
|
13
|
+
start: number;
|
|
14
|
+
remaining: number;
|
|
15
|
+
delay: number;
|
|
16
|
+
callback: unknown;
|
|
17
|
+
constructor(delay: number, callback: unknown);
|
|
18
|
+
pause(): void;
|
|
19
|
+
resume(): void;
|
|
20
|
+
getTimeRemaining(): number;
|
|
21
|
+
}
|