diff --git a/.env b/.env new file mode 100644 index 0000000..baf1244 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +STORYBOOK_BRAND_URL="https://engineering.purdue.edu/webqueue/webqueue2/build" \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/bug-report----.md b/.github/ISSUE_TEMPLATE/bug-report----.md deleted file mode 100644 index 04bdbad..0000000 --- a/.github/ISSUE_TEMPLATE/bug-report----.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -name: "Bug Report \U0001F41B " -about: Create a bug report for webqueue2. -title: '' -labels: bug -assignees: '' - ---- - - - - - - - -- [ ] I have searched the [issues](https://github.itap.purdue.edu/ECN/webqueue2/issues) of this repository and believe that this is not a duplicate. - -## What Happened - - - -## Expected Behavior - - - -## Steps to Reproduce - -1. -2. -3. - - -### Logs - - - - diff --git a/.github/ISSUE_TEMPLATE/feature-request---.md b/.github/ISSUE_TEMPLATE/feature-request---.md deleted file mode 100644 index a48abaa..0000000 --- a/.github/ISSUE_TEMPLATE/feature-request---.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -name: "Feature Request \U0001F4EE" -about: Suggest a new idea for the project -title: '' -labels: feature-request -assignees: '' - ---- - - - - - - - -- [ ] I have searched the [issues](https://github.itap.purdue.edu/ECN/webqueue2/issues) of this repository and believe that this is not a duplicate. - -## Problem - - - -## Proposal - - - -### Examples - - - - diff --git a/.gitignore b/.gitignore index 4151e3f..952f43e 100644 --- a/.gitignore +++ b/.gitignore @@ -26,9 +26,5 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -# Python Files -/api/venv -__pycache__/ -venv-manager.log -/api/.env -*.egg* +# API Files +/api/* \ No newline at end of file diff --git a/Dev Environment Setup Guide.md b/Dev Environment Setup Guide.md deleted file mode 100644 index 03ed436..0000000 --- a/Dev Environment Setup Guide.md +++ /dev/null @@ -1,256 +0,0 @@ -# Dev Environment Setup Guide -This document will walk you through the setup and configuration of a development environment for webqueue2 using the provided development machines, SSH authentication, GitHub and VS Code. - -# Table of Contents - - - -- [Prerequisites](#prerequisites) - - [On Your Computer](#on-your-computer) - - [On The Development Computer](#on-the-development-computer) -- [Configuring Your SSH Keys](#configuring-your-ssh-keys) -- [Configuring SSH](#configuring-ssh) -- [Adding SSH Keys](#adding-ssh-keys) -- [Installing VS Code](#installing-vs-code) -- [Connecting To The Development Machine](#connecting-to-the-development-machine) -- [Adding Your SSH Keys to GitHub](#adding-your-ssh-keys-to-github) -- [Cloning and Opening the Repository](#cloning-and-opening-the-repository) -- [Configuring VS Code](#configuring-vs-code) - - [Installing Extensions](#installing-extensions) - - [Frontend Extensions:](#frontend-extensions) - - [Backend/API Extensions:](#backendapi-extensions) - - [Configuring Extensions](#configuring-extensions) - - [Python](#python) - - [Python Docstring Generator](#python-docstring-generator) -- [Configuring Tools](#configuring-tools) -- [Using Tools](#using-tools) - - - -## Prerequisites - -### On Your Computer -- [VS Code](https://code.visualstudio.com/download) -- [Cisco AnyConnect for WebVPN](https://webvpn.purdue.edu/) - -### On The Development Computer -**Note:** These are already installed on the provided development machines. -- [git](https://git-scm.com/downloads) -- [NodeJS](https://nodejs.org/en/) >= v14.11.0 -- npm >= v6.14.8 -- npx >= v6.14.8 -- [Python](https://www.python.org/downloads/) == 3.6.9 - -## Configuring Your SSH Keys -We will be using SSH keys to authenticate to both the development machines and GitHub. - -In either PowerShell on Windows or bash on Linux, run: -``` -ssh-keygen -``` -This will create the files `id_rsa` and `id_rsa.pub` in the `.ssh` folder inside your user's folder. Your user's folder can usually be found at: - -- `C:\Users\` (Windows) -- `/Users/` (macOS) -- `/home/` (Linux) - -Most CLI shells like PowerShell and bash use the tilda ~ key as a shortcut for your user's folder. - -You can confirm these files were created by running: -``` -ls ~/.ssh/ -``` - -## Configuring SSH -In your editor of choice, create the file `~/.ssh/config` and add this: - -**Important:** Replace `campb303` with your career account username and replace `w2vm1` with the name of the provided development machine you're connecting to. - -```bash -Host campb303-w2vm1 - HostName w2vm1.ecn.purdue.edu - User campb303 - # Forward webqueue2 Frontend Port - LocalForward 3000 localhost:3000 - # Forward webqueue2 API Port - LocalForward 5000 localhost:5000 - # Forward webqueue2 Docs Port - LocalForward 6060 localhost:6060 -``` - -The configuration above will allow you to connect to the development machine and automatically forward ports for development tools to work. Here's a bit more detail about what's going on: - -| Key | Value | -| - | - | -| Host | A friendly name to identify an SSH host by. This can be anything. | -| HostName | The DNS name or IP address of the computer you're connecting to. | -| User | The name of your user on the computer you're connecting to. | -| LocalForward | Forwards a port on your computer to a port on the computer you're connecting to. | - -**Note:** You need to be connected to WebVPN before SSH'ing into a the development machine. - -To test your configuration, run `ssh` followed by the `Host`value. When prompted for your password, enter your career account password and press Enter. - -**Note:** You will not see your password being typed but it is being typed. - -For the configuration above you would run: -``` -ssh campb303-w2vm1 -campb303@w2vm1's password: -``` - -## Adding SSH Keys -Replace `HOST` below with the value from above. - -**In PowerShell on Windows:** -```powershell -type $env:USERPROFILE\.ssh\id_rsa.pub | ssh HOST "cat >> .ssh/authorized_keys" -``` - -**In bash on macOS/Linux:** -```bash -ssh-copy-id HOST -``` - -If the key was added successfully, you can login without entering a password by running: -``` -ssh HOST -``` - -## Installing VS Code -Download and install [VS Code](https://code.visualstudio.com/download). Be sure to add `code` to your PATH. - -**On Windows:** this is a a checkbox in the installer. - -![VS Code Install Options on Windows](https://i0.wp.com/www.techomoro.com/wp-content/uploads/2019/06/5.jpg?w=596&ssl=1) - -_Image from [this article on Techomoro](https://www.techomoro.com/installing-visual-studio-code-on-windows-10/)_ - -**On macOS/Linux:** this is accessible by searching for "PATH" in the Command Pallete. You can access the Command Pallete with the keyboard shortcut Command/Ctrl + Shift + P: - -![VS Code Install Options on macOS/Linux](https://i.stack.imgur.com/Ng886.png) - -_Image from [this StackOverflow thread](https://stackoverflow.com/questions/30065227/run-open-vscode-from-mac-terminal)_ - -## Connecting To The Development Machine -Install the [Remote - SSH](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh) plugin. After installation a new icon will appear in the sidebar: - -![Remote SSH Plugin Icon](./docs/Dev%20Environment%20Setup%20Guide/Remote%20SSH%20Icon.png) - -- Click on the Remote SSH icon and you'll see the SSH host you just defined -- Select the host and click the New Window icon to connect. A new window connected to that host will appear - -**Note:** This may take a couple of minutes on the first connection while VS Code installs its server - -![Remote SSH Connection Example](./docs/Dev%20Environment%20Setup%20Guide/Connect%20to%20Remote%20SSH%20Host.gif) - -If prompted for a platform, select Linux: -![VS Code Select Platform](./docs/Dev%20Environment%20Setup%20Guide/VS%20Code%20Select%20Platform.png) - -## Adding Your SSH Keys to GitHub -Because the development machine will be the computer that connects to GitHub, we need to create another SSH key and add it to our GitHub profile: - -Using the integrated terminal in VS Code, run: -```bash -ssh-keygen -``` - -This will create the files `id_rsa` and `id_rsa.pub` in `~/.ssh/`. You can confirm this by running: -``` -ls ~/.ssh/ -``` - -- Go to https://github.itap.purdue.edu/settings/keys -- Click the "New SSH Key" button -- Give the key a title that tells you what device the key is from (e.g. Desktop or Dev Machine) -- Paste the contents of `id_rsa.pub` into the key box -- Click the "Add SSH Key" button - -![Add SSH Key to GitHub](docs/Dev%20Environment%20Setup%20Guide/Add%20SSH%20Key%20to%20GitHub.gif) - -## Cloning and Opening the Repository -Using the integrated terminal in VS Code, run: -```bash -git clone git@github.itap.purdue.edu:ECN/webqueue2.git -``` -This will create a `webqueue2` folder in your user's home directory. Open this directory using the "Open Folder" button: - -![Open Repo](./docs/Dev%20Environment%20Setup%20Guide/Open%20Repo.gif) - -**Note:** When you open VS Code next it will try to reconnect to the last SSH host it was connected to. - -**Note:** If you need to reconnect manually, there will not be an option to open this folder directly from the Remote Hosts menu: - -![Remote Folder Open](./docs/Dev%20Environment%20Setup%20Guide/Remote%20Folder%20Open.png) - -## Configuring VS Code - -### Installing Extensions -Install the following extensions: -- [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) for working with Python virtual environments and debugging -- [Git Graph](https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph) for a more detailed view of git info -- [Markdown Preview GitHub Styling](https://marketplace.visualstudio.com/items?itemName=bierner.markdown-preview-github-styles) for previewing Markdown as it will appear on GitHub - -#### Frontend Extensions: -- [ES Lint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) for JavaScript linting -- [Babel JavaScript](https://marketplace.visualstudio.com/items?itemName=mgmcdermott.vscode-language-babel) for JavaScript and JSX syntax highlighting and error checking -- [MDX](https://marketplace.visualstudio.com/items?itemName=silvenon.mdx) to provide MDX syntax support - -#### Backend/API Extensions: -- [Python Docstring Generator](https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring) for generating Google style docstrings according to section 3.8 of [Google's Python style guide](https://google.github.io/styleguide/pyguide.html#s3.8-comments-and-docstrings) - -### Configuring Extensions - -#### Python -The Python extension supports virtual environments but needs to be told where the virtual environment is. - -Create or modify the file `.vscode/settings.json` and add the following: -```json -"python.pythonPath": "./api/venv/bin/python3" -``` - -**Note:** The Python extension may complain and tell you to select another interpreter. Ignore this warning for now. - -#### Python Docstring Generator -For consistentcy, we'll use a docstring template. - -Create or modify the file `.vscode/settings.json` and add the following: -```json -"autoDocstring.customTemplatePath": "./docstring-format.mustache" -``` - -At this point, your `.vscode/settings.json` file should look like this: -```json -{ - "python.pythonPath": "./api/venv/bin/python3", - "autoDocstring.customTemplatePath": "./docstring-format.mustache" -} -``` - -## Configuring Tools -Install npm dependencies: -```bash -npm install -``` - -Create the Python virtual environment: -```bash -npm run venv:create -``` - -## Using Tools -All of the tools in this project are accessible as an npm task so you can interact with them by running `npm run `. The tasks are: - -| Task | Description | -| - | - | -| `start:frontend` | This will start a development server on [localhost:3000](http://localhost:3000). (If the server is on your local machine, this will also launch your default browser at that address.) As you save changes in the `/public` or `/src` directories you'll see your changes in the browser. (API requests are automatically proxied to the API server.) | -| `start:api` | This will start a local WSGI server on [localhost:5000](http://localhost:5000) to access the API. You can interact with the API using `curl` or [Postman](https://www.postman.com/) | -| `start:docs` | This will start a local server on [localhost:6060](http://localhost:6060) showing you the React component documentation. As you change a components documentation file in `/src/components//.md` you'll see your changes in the browser. | -| `build:frontend` | This will output a static bundle of the frontend in `/build` that can be put on any webserver. | -| `build:docs` | This will output a static bundle of the frontend documentation in `/styleguidist/frontend-docs` that can be put on any webserver. | -| `kill:frontend` | Kills the runaway frontend process(es). | -| `kill:api` | Kills the runaway API process(es). | -| `venv:create` | This will create a virtual environment in `/api/venv` and install requirements from `/api/requirements.txt`. | -| `venv:delete` | This will delete the folder `/api/venv`. | -| `venv:reset` | This will run `venv:delete` then `venv:create`. | -| `venv:freeze` | Regenerates the API requirements.txt file and mitigates [this pip bug](https://github.com/pypa/pip/issues/4022). | diff --git a/Dev Logs.md b/Dev Logs.md deleted file mode 100644 index 8cfb71b..0000000 --- a/Dev Logs.md +++ /dev/null @@ -1,509 +0,0 @@ -# Dev Logs -These are daily and weekly summaries of the work thats been done on webqueue2. They start on 6/23 because that's whe this document was started but other work was done before this time. - -## Week 10: 8/24/20 - 8/28/20 -### This Week's Goals -- Onboard Jacob -- Set path for frontend documentation - - - - ---- - -### Monday 8/24/20 -- Began onboarding Jacob -- Continued work on integrating styleguidist - -### Tuesday 8/25/20 -- Continued onboarding Jacob -- Continued work on integrating styleguidist - -### Wednesday 8/26/20 -- Continued onboarding Jacob; assigned independent task for [this issue](https://github.itap.purdue.edu/ECN/webqueue2/issues/36) -- Decided to shift from styleguidist to docz because styleguidist is not maintainable. - - - - - - -## Week 9: 8/17/20 - 8/21/20 -### This Week's Goals -- Finish lingering documentation tasks -- Automate documentation generation for API -- Choose documentation standard for JSX - - - -- Begin porting codebase to stylguidist, more work needed - ---- - -### Monday 8/17/20 -- Experimented with [React Styleguidist](https://react-styleguidist.js.org/) for React styleguide generation. - - Will need to restructure `/src` directory and create modular components - _Example:_ - ``` - /src/components/ - ├── ComponentName - │   ├── ComponentName.css Component CSS (if used) - │   ├── ComponentName.js Componenet - │   ├── ComponentName.md Styleguidist Content - │   └── index.js Exports Component - ``` -- Created ItemLockAlert to show when an item is locked -- Began using dense AppBars - -### Tueday 8/18/20 -- Began implementing react-styleguidist documentation system (starting with ItemTable) -- Began rewriting JSDoc doclets for JS[X] components. See [this article](https://2ality.com/2011/08/jsdoc-intro.html) for an overview of doclet format and tags. -- Began destructuring exisiting componennts -- Created proper MUI theme wrapper - -### Wednesday 8/19/20 -- Tied Stylgudist into npm. Stylgudisit can be run with `npm run start:docs` -- Updated stylegudist configuartion: - - Now launches a browser on a local machine - - Added title, version, sections, template (for favicon) - - Created style and theme config. These can be hot loaded while the server is running. -- Moved UI snapshots and updated README snapshot - -## Week 8: 8/10/20 - 8/16/20 -### This Week's Goals -- Finish responsive two panel view -- Start on ItemView rewrite - -### This Week's Recap -- Finished responsive two panel view -- Updated documentation following GitHub transfer -- Updated dependencies for API -- Separated ItemViewAppBar and ItemMetadataView into separate components -- Gathered resources for onboarding new hire -- Began working on ItemView rewrite - - ---- - -### Monday 8/10/20 -- Updated Dev Environment Setup Guide to include Python and VS Code setup -- Updated requirements for API virtual environment -- Fixed broken links post GitHub migration - -### Tuesday 8/11/20 -- Finished responsive two panel view -- Experiemented with using a scroll trigger to toggle AppBar elevation; descided to use fixed elevation for now and revisit this later. -- Separated ItemViewAppBar from ItemView -- Added spacing in ItemView for readability - -### Wednesday 8/12/20 -- Added docs for: - - [#31 Fix AppBar positioning in Safari](https://github.itap.purdue.edu/ECN/webqueue2/issues/31) - - [#32 Remove scrollbars from column views](https://github.itap.purdue.edu/ECN/webqueue2/issues/32) - - [#33 Implement assignment controls in ItemView](https://github.itap.purdue.edu/ECN/webqueue2/issues/33) -- Out in the afternoon. - -### Thursday 8/13/20 -- Gathered resources for new hire including: - - [React: Getting Started on Pluralsight](https://app.pluralsight.com/library/courses/react-js-getting-started/table-of-contents) - - [Intro to React on YouTube](https://www.youtube.com/watch?v=QFaFIcGhPoM&list=PLC3y8-rFHvwgg3vaYJgHGnModB54rxOk3) - - [Getting Started w/ Material UI](https://www.youtube.com/watch?v=pHclLuRolzE) - - [Getting Started w/ Flask-SQLAlchemy](https://www.youtube.com/watch?v=jTiyt6W1Qpo) -- Updated internal tooling to consolidate pieces into npm control - -### Friday 8/14/20 -- Separated ItemView metadata content into its own component -- Added conditional alert if item is locked -- Experiemented with hiding scrollbars - - - - -## Week 7: 8/3/20 - 8/9/20 -### This Week's Goals -- Finish responsive two panel view -- Start on ItemView rewrite - -### This Week's Recap -- Responsive two panel view is mostly complete, breakpoints are needed. -- Migrated from RCAC GitHub to ITaP GitHub - - ---- - -### Monday 8/3/20 -- Experimented with [``](https://material-ui.com/components/grid/#grid) based two column layout: works for fixed grid counts but not fluid. -- Experimented with flexbox two column layout: `flex-grow`, `flex-shrink` and `flex-basis` properties behave inconsistantly sometimes not respective responsive units. -- Built a drawer based UI example - -### Tuesday 8/4/20 -- Watched [Introduction to CSS by Scott Alan](https://app.pluralsight.com/library/courses/css-intro/table-of-contents) on Pluralsight. -- Experimented with [``](https://material-ui.com/components/transitions/#slide) transitions in Material UI for showing and hiding ItemView. -- Found a working combination of `flex-basis` and `flex-shrink` that makes widths behave expectedly (thanks to @dhallet.) -```jsx -// Create state variable for openning ItemView -const [sidebarOpen, setSidebarOpen] = useState(false) - -// Create JSS Styles -const useStyles = makeStyles({ -"leftCol": { - backgroundColor: "lightgreen" -}, -"rightCol": { - backgroundColor: "lightblue", - overflow: "hidden", - width: "0" -}, -"rightColShift": { - flexShrink: "0", - width: "50%" -}, -"transition-width": { - transition: theme.transitions.create(["width"], { - duration: theme.transitions.duration.enteringScreen, - easing: theme.transitions.easing.enteringScreen - }) -} -}); - -const classes = useStyles(); - -// Render UI -return ( - - - - {/* Content ... */} - - - {/* Content ... */} - - -); -``` - -### Wednesday 8/5/20 -- Gathered data about browser usage among ECN staff -![Poll Data Results](https://github.itap.purdue.edu/ECN/webqueue2/raw/feature-create-drawer-system/docs/Browser%20Poll%20Data%208:5:20.png) -- Created scalable ItemTable AppBar - -### Thursday 8/6/20 -- Working version of responsive drawer system - - Still need to set breakpoints -- Populated [project issues](https://github.itap.purdue.edu/ECN/webqueue2/issues) for visibility and accessibility -- Populated (and automated) [projects](https://github.itap.purdue.edu/ECN/webqueue2/projects) for visibility - -### Friday 8/7/20 -- Simplified issues/projects in GitHub by using tags instead of individual projects. -- Migrated from RCAC GitHub to ITaP Github - - - - -## Week 6: 7/27/20 - 8/2/20 -### This Week's Goals -- Finish Item View -- Finish read-only API - -### This Week's Recap -- Finished initial Item View -- Finished initial read-only API -- Gave first public demo of API and UI - ---- - -### Monday 7/27/20 -- Set errors to replace mode when opening encountering UnicodeDecodeError while reading item files. -- Replaced `json.dumps()` and `jsonpickle` in favor of returning standard serializable datatypes. -- Implemented `/api/` endpoint for a whole queue -- Implemented `/api//` endpoint for a single item - -### Tuesday 7/28/20 -- Gave public demo for initial UI and API - -### Friday 7/31/20 -- Found [this](https://gist.github.com/crearlink/f483dee7970364b0160f11d69e2201f5#file-medium-transitions-create-params-md) documentation for Material UI's undocumented `theme.transitions.create()` method. -- Began working on repsonive drawer interface. - -### Saturday 8/1/20 -- After reading [How we launched docs.github.com](https://github.blog/2020-07-02-how-we-launched-docs-github-com/) by GitHub and seeing [their REST API docs](https://docs.github.com/en/rest/reference/repos) I think it would make sense moving forward to develop a usable docs site. - - -## Week 5: 7/20/20 - 7/26/20 -### This Week's Goals -- Finish Item View -- Finish read-only API - -### This Week's Recap -- ECNQueue has been rewritten and can do everything the old module could except strip attachments. -- Significant progress on the API was acheived by implementing JSON safe representations of Item and Queue classes in ECNQueue module - ---- - -### Monday - 7/20/20 -- Began rewritting ECNQueue.py - - Decided on an object structure of: - - Items: Individual items with headers, content, and attachments - - Queues: Collection of all active items from one queue - -### Tuesday - 7/21/20 -- Added `requirements.txt` to Python environment for reproducable builds. -- Updated [Dev Environment Setup Guide](https://github.itap.purdue.edu/ECN/webqueue2/blob/master/Dev%20Environment%20Setup%20Guide.md) to include Python and VS Code setup. -- Decided to use Google style Python docstrings according to [section 3.8 of this styleguide](https://google.github.io/styleguide/pyguide.html#s3.8-comments-and-docstrings) - -### Wednesday - 7/22/20 -- Implemented path building and modification time in Item class in ECNQueue module -- Started porting email attachment processing; deferring for Friday's demo -- Started header processing - -### Thursday - 7/23/20 -- Finished header processing -- Updated [Dev Environment Setup Guide](https://github.itap.purdue.edu/ECN/webqueue2/blob/master/Dev%20Environment%20Setup%20Guide.md) to include Python Docstring Generator plugin for VS Code -- Implemented initial section parsing in Item class of ECNQueue module - -### Friday - 7/24/20 -- Initial ECNQueue module completed - - Public Item Attributes: - - lastUpdated - - headers - - content - - isLocked w/ lockfile details - - Private Item Attributes and Methods - - __path - - __getLastUpdated() - - __getRawItem() - - __parseHeaders() - - __getContent() - - __isLocked() - -### Sunday - 7/26/20 -- Added React dev server proxy for API -- Implemented several new attributes and methods in Item class: - - Item.userEmail and Item.userName via Item.__parseFromData() - - Item.userAlias via Item.__getUserAlias() - - Item.assignedTo via Item.__getAssignedTo() - - Item.subject, Item.department, Item.building, Item.dateReceived from headers. -- Replaced all instanced of returning None with empty data structures -- Implement JSON safe representations of Item and Queue via toJson() methods - -## Week 4: 7/13/20 - 7/19/20 -### This Week's Goals -- Finish Item View -- Finish read-only API - -### This Week's Recap -- Created a working and reproducable environment to run Flask and WSGI apps in Python 3 using virtual environments and gunicorn - ---- - -### Monday - 7/13/20 -- Got python virtual environments to work with mod_python under Apache - - **Note:** Commands run through the virtual environment's interpreter MUST be run on templeton. -- Found that Flask will not run under mod_python. I need mod_wsgi. Tomorrow will be spent making sure this works before requesting it. - -### Tuesday - 7/14/20 -- Experiemented with mod_wsgi configuration - -### Wednesday - 7/15/20 -- Got mod_wsgi-py3 running under Ubutnu 18.04. See [installation notes](https://github.itap.purdue.edu/ECN/webqueue2/blob/master/docs/Installing%20Apache2%20and%20mod_wsgi%20on%20Ubuntu%2018.04.md). -- Got mod_wsgi-p2 running under CentOS 6.10. - -### Thursday - 7/16/20 -- Successfully ran Flask in a Python 3 virtual environment and proxied api requests to a Flask app via gunicorn. Plan to proceed with this method. - -## Week 3: 7/6/20 - 7/12/20 -### This Week's Goals: -- Finish item view -- Rewrite ECNQueue.py as a CGI script that can receive requests from webqueue2 an return JSON data - -**If there is time:** - -- Create development environment setup guide -- Work on automated deployment tooling - -### This Week's Recap: -- Item view was not worked on; I spent too much time on the table. -- ECNQueue.py migration was started -- Development environment was created -- Automated deployment was not worked on -- Semantic versioning started to be used -- Decided to stop working on a responsive table using material-table - - Instead, the non-responsive table will be used for now - - react-table might be a better option for the future -- Began using Python, Flask and Flask-RESTful for API development - ---- - -### Monday - 7/6/20 -- Decided to use [Semantc Versioning](https://semver.org/) guidelines for releases - - Format: [Major].[Minor].[Patch]-[Release Identifier] - - Major is bumped for considerable feature additions - - Minor is bumped for minor feature additions/improvements - - Patch is bumped for bug fixes - - Release Identifier can be: - - **alpha**: buggy, incomplete changes, not meant for general use - - **beta**: testing, should be complete but room to grow - - **release**: ready for general consumption -- Began using [CssBaseline](https://material-ui.com/api/css-baseline/#cssbaseline-api) componenet from MUI as a CSS normalizer -- Worked on creating a fluid drawer for item views similar to [this MUI example](https://material-ui.com/components/drawers/#persistent-drawer) - - [This video](https://www.youtube.com/watch?v=k_AN49fA9g0) about the `makeStyles` and `useStyles` hooks was quite helpful in explaining how to extend [MUI's default theme](https://material-ui.com/customization/default-theme/). - -### Tuesday - 7/7/20 -- Continued work on a fluid drawer -- Began working on a responsive table similiar to [this project](https://github.com/ArsenyYankovsky/react-responsive-cards-table) -- After many hours of experimenting with [material-table's styling options](https://material-table.com/#/docs/features/styling) it seems that the options exposed do not provid the granularity needed for a resonsive table. Options are: - - Forego a responsive table at this point and leave it for further version, opting for scrolling tables on mobile - - Implement a CSS workaround by manually assigning styles to the table via an external styling source - - Look for an implement another library that allows for more desired behavior - - Implement a custom solution for this searchable table -- Because of time and a need to get something out, I will forego a responsive table for now -- Tomorrow should be spent working on a reponsive drawer interface - -### Wednesday - 7/8/20 -- Continues working on a responsive drawer interface -- A truly responsive drawer interface seems would be something that adapts to every discrete viewport width. This does not seem an easy way forward. However, breakpoints can be considered instead. Using MUI's [`useMediaQuery()` hook](https://material-ui.com/components/use-media-query/) and predetermined percentage values I can create a usable though limited alternative. - - _Ex:_ - ```js - drawer: { - [theme.breakpoints.up('xl')]: { - width: `calc(60%)`, - flexShrink: 0, - }, - }, - ``` -- Implemented custom toolbar with stateful action buttons -- Added dark mode toggle using custom toolbar - -### Thursday - 7/9/20 -- Continued work on responsive table -- More than two weeks have been spent trying to make the material-table library work, another library shuld be considered for what is needed here. [react-table](https://github.com/tannerlinsley/react-table) looks functionally promising thought thematically challenging. -- Moved from feature-configure-reactjs back to master -- Finished [Dev Environment Setup Guide](https://github.itap.purdue.edu/ECN/webqueue2/blob/master/Dev%20Environment%20Setup%20Guide.md) - -### Friday - 7/10/20 -- Decided to use Python, Flask and Flask-RESTful in a virtual environment for the API -- Developed a working version of an API using Python as a CGI script -- Began implementing ECNQueue.py login in the API - -## Week 2: 6/29/20 - 7/5/20 -### This Week's Goals: -- Configure automated deployment systems -- Create dev environment setup walkthrough -- Rewrite ECNQueue.py (from origial webqueue) for inital item reading support -- Create final UI mockups for v1 - -### This Week's Recap: -- Automated deployment systems have not been addressed; static builds transfered over FTP are the current solution -- Dev environment setup walkthrough was not completed -- ECNQueue.py rewrite was not started -- UI mockups were not completed -- Moved from GitHub.com to RCAC GitHub -- Created simple branding for webqueue -- Integrated [Material UI](https://material-ui.com/) and [material-table](https://material-table.com/) -- Pushed first proof of concept to qwebtest using [Material UI](https://material-ui.com/) and [material-table](https://material-table.com/) - - ---- - -### Monday - 6/29/20 -- Found [this article](https://skryvets.com/blog/2018/09/20/an-elegant-solution-of-deploying-react-app-into-a-subdirectory/) on deplying a React app to a subdirectory. -- Looked into automated deployment methods: - - Decided git hooks aren't the way to go b/c they aren't comitted to version control and wouldn't be ubiquitous - - GitHub Webhooks and RESTful APIs might be a route for the future after reading [Deploy Web Applications Automatically Using GitHub Webhooks](https://www.toptal.com/devops/deploy-web-applications-automatically-using-github-webhooks) - - Manual `npm run build` and copying from the build directory to production will work for now -- Created and initial branded app - - Color/font info from [Purdue's brand guide](https://brand.purdue.edu/visual/) - - Icon design available [here on Google Slides](https://docs.google.com/presentation/d/1bTom3z9NgdabBS6pAAgiBTMOpCpgmkbg_NFGUXHO1ZU/edit?usp=sharing) - - Generated images using [favicon.io](https://favicon.io/) -- The decision to move from GitHub proper to RCAC GitHub was made and started. Next actions to be taken after accounts are created tomorrow. - -### Tuesday - 6/30/20 -- Move to RCAC GitHub was completed. Deployment tools were updated. -- Decided to move forward with Material UI framwork -- Integrated MUI into project and set bare bones example -- Studied MUI components, appbars, drawers and tables can makeup the UI -- Should consider React Router for more complicated navigations (like per ticket views in separate windows) - -### Wednesday - 7/01/20 -- This day's time was carried over from last week's overtime -- Played with MUI during flights - -### Thursday - 7/02/20 -- Integrated [material-table](https://material-table.com/) for viewing and filtering items -- Pushed alpha to qwebtest -- Need to customize views for mobile and replace filter icons with search icons - -### Friday - 7/03/20 -- No work was done because of the holiday - -### Saturday - 7/04/20 -- Worked on a responsive drawer for active items views; incomplete work - -## Week 1: 6/22/20 - 6/28/20 -### This Week's Goals: -- Move existing jQuery/DataTables view to React Components -- Rewrite ECNQueue.py (from origial webqueue) for inital item reading support - -### This Week's Recap: -- Moved from a private to public repo and sanitized comitt logs -- Drafted new UI mockups to move forward with in React -- Completed [React Getting Started](https://app.pluralsight.com/library/courses/react-js-getting-started/table-of-contents) course on Pluralsight -- Moved from server-side to client-side rendering. -- Finalized development toolchait with [Create React App](https://github.com/facebook/create-react-app) and VS Code -- Built successful proof of concept for client-side rendering - ---- - -### Monday - 6/22/20 -- Decided to move to a public repo for: - - - **Reference-ability:** With a private repo, if I want to share code I need to either send snippets and screenshare. With a public repo I can simply link to the up to date code. - - - **Utility:** With a private repo, scripted access to a repo requires authentication credentials to be stored with the script leaving those credentials vulnerable. Since the business logic of webqueue2 is not confidential, moving to a public repo would allow simpler scripted access. - - - **Docs:** GitHub allows easy integration into various doc generation systems. Interaction with these tools is much more accessile with a public repo. - -- Removed sensitive item info from git commit logs in preparation for making a public repo. - -### Tuesday - 06/23/20 -- Finished the move from a private to public repo. - -- Recreated non-sensitive commit logs for previous work. Many previosu commits were consolidated for simplicity. - -- Drafted new UI mockups. - -- Decided to move to ReactJS after reading [this article comparing ReactJS and jQuery](https://academind.com/learn/javascript/jquery-future-angular-react-vue/) because: - - - ReactJS controls the DOM through declarative creation and selctive rendering rather tha jQuery's query-based modification. - - - ReactJS appears to be better suited for long term support. - -- Began building React data tables. - -### Wednesday - 06/24/20 - -- Worked through [React Getting Started](https://app.pluralsight.com/library/courses/react-js-getting-started/table-of-contents) course on Pluralsight. - -### Thursday - 06/25/20 - -- Finished [React Getting Started](https://app.pluralsight.com/library/courses/react-js-getting-started/table-of-contents) course on Pluralsight. - -- Began implementing ReactJS with client side rendering because NodeJS is not available on the web host. - -### Friday - 06/26/20 - -- Set initial toolchain and development environment - - **ReactJS**: for UI development - - **ESLint**: for JSX, JavaScript linting - - **Babel**: to compile JSX to JavaScript and JavaScript to <=ES6 for backwards compatibility. - - **Autoprefixer**: for automagic CSS prefixing. - - **Webpack**: to combines and minimize all assets into production bundles - - **Jest**: for testng - - **NodeJS**: as a runtime for all the needed tools. - -- [Create React App](https://github.com/facebook/create-react-app) provides all of this and more easily. - -### Saturday 06/27/20 -- Finalized development environment - -- Built first successful production package and tested successfuly on [qwebtest](https://engineering.purdue.edu/qwebtest/). diff --git a/README.md b/README.md index ead41cb..35760f9 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,61 @@ -# webqueue2 Frontend -A ReactJS based web app to interact with the [webqueue2 API](https://github.itap.purdue.edu/ECN/webqueue2-api) +# webqueue2 +A re-write of Purdue ECN's webqueue -![UI Snapshot](./docs/UI%20Snapshots/UI-Snapshot%202020-12-03%20at%208.10.32%20PM.png) +![UI Snapshot](./UI%20Snapshots/UI-Snapshot%202021-08-02%20at%2011.30.54%20PM.png) -## Stay Up To Date -See what's being worked on with [the webqueue2 Project](https://github.itap.purdue.edu/ECN/webqueue2/projects/). +## Using This Project +This is a web based client of [webqueue2-api](https://github.itap.purdue.edu/ECN/webqueue2-api). To use it you will need to do the following: -See and participate in the conversation by viewing the [issues](https://github.itap.purdue.edu/ECN/webqueue2/issues). -## Get Involved -Reading the [Dev Environment Setup Guide](https://github.itap.purdue.edu/ECN/webqueue2/blob/master/Dev%20Environment%20Setup%20Guide.md) +### Clone this GitHub repo: +```bash +git clone https://github.itap.purdue.edu/ECN/webqueue2-frontend.git +``` + +### Enter the repo directory: +```bash +cd webqueue2-frontend/ +``` + +### Install dependencies: +```bash +npm install +``` + +### Modify the "homepage" value in package.json +**Example:** +| Serving From | `homepage` Value | +| - | - | +| `www.coolproject.com` | `http://www.coolproject.com/` | +| `www.anothercoolproject.com/subdirectory` | `http://www.anothercoolproject.com/subdirectory` | + +```bash +nano package.json +``` + +### Build the Frontend +```bash +npm run build:frontend +``` +This will output a static bundle in the `build/` directory. This can be served by most webservers with some configuartion. See [Create React App's docs on Deployment](https://create-react-app.dev/docs/deployment/) for general info. + +For ECN's infrastructure, we assume you're deployment on Templeton using Apache with the webqueue2-api running on Pier. In that case, you can use this `.htaccess` configuartion: + +``` +# Enable the rewrite module +RewriteEngine On + +# Reverse proxy all requests to the API to the API server. +# See mod_rewrite docs: https://httpd.apache.org/docs/current/mod/mod_rewrite.html +RewriteRule ^api/(.*)$ http://pier.ecn.purdue.edu:5000/api/$1 [P] + +# Defer requests that are not files to client side routing +# See: https://create-react-app.dev/docs/deployment/#serving-apps-with-client-side-routing +RewriteCond %{REQUEST_FILENAME} !-f +RewriteRule ^ index.html [QSA,L] + +# Diable Auth +Satisfy any +``` + +If you're not using ECN infrastructure or this documentation is out of date by the time you're reading it, refer to the [webqueue2-api deployment docs.](https://pages.github.itap.purdue.edu/ECN/webqueue2-api/webqueue2api%20Package/Deployment/) \ No newline at end of file diff --git a/docs/UI Snapshots/UI-Snapshot 2020-08-14 at 9.52.04 AM.png b/UI Snapshots/UI-Snapshot 2020-08-14 at 9.52.04 AM.png similarity index 100% rename from docs/UI Snapshots/UI-Snapshot 2020-08-14 at 9.52.04 AM.png rename to UI Snapshots/UI-Snapshot 2020-08-14 at 9.52.04 AM.png diff --git a/docs/UI Snapshots/UI-Snapshot 2020-08-19 at 2.10.48 PM.png b/UI Snapshots/UI-Snapshot 2020-08-19 at 2.10.48 PM.png similarity index 100% rename from docs/UI Snapshots/UI-Snapshot 2020-08-19 at 2.10.48 PM.png rename to UI Snapshots/UI-Snapshot 2020-08-19 at 2.10.48 PM.png diff --git a/docs/UI Snapshots/UI-Snapshot 2020-09-22 at 1.48.58 PM.png b/UI Snapshots/UI-Snapshot 2020-09-22 at 1.48.58 PM.png similarity index 100% rename from docs/UI Snapshots/UI-Snapshot 2020-09-22 at 1.48.58 PM.png rename to UI Snapshots/UI-Snapshot 2020-09-22 at 1.48.58 PM.png diff --git a/docs/UI Snapshots/UI-Snapshot 2020-11-13 at 1.48.58 PM.png b/UI Snapshots/UI-Snapshot 2020-11-13 at 1.48.58 PM.png similarity index 100% rename from docs/UI Snapshots/UI-Snapshot 2020-11-13 at 1.48.58 PM.png rename to UI Snapshots/UI-Snapshot 2020-11-13 at 1.48.58 PM.png diff --git a/docs/UI Snapshots/UI-Snapshot 2020-11-23 at 8.57.36 AM.png b/UI Snapshots/UI-Snapshot 2020-11-23 at 8.57.36 AM.png similarity index 100% rename from docs/UI Snapshots/UI-Snapshot 2020-11-23 at 8.57.36 AM.png rename to UI Snapshots/UI-Snapshot 2020-11-23 at 8.57.36 AM.png diff --git a/docs/UI Snapshots/UI-Snapshot 2020-12-03 at 8.10.32 PM.png b/UI Snapshots/UI-Snapshot 2020-12-03 at 8.10.32 PM.png similarity index 100% rename from docs/UI Snapshots/UI-Snapshot 2020-12-03 at 8.10.32 PM.png rename to UI Snapshots/UI-Snapshot 2020-12-03 at 8.10.32 PM.png diff --git a/UI Snapshots/UI-Snapshot 2021-08-02 at 11.30.54 PM.png b/UI Snapshots/UI-Snapshot 2021-08-02 at 11.30.54 PM.png new file mode 100644 index 0000000..996fc4e Binary files /dev/null and b/UI Snapshots/UI-Snapshot 2021-08-02 at 11.30.54 PM.png differ diff --git a/api/ECNQueue.py b/api/ECNQueue.py deleted file mode 100644 index f5888a1..0000000 --- a/api/ECNQueue.py +++ /dev/null @@ -1,1392 +0,0 @@ -"""A library for interacting with Purdue ECN's ticketing system. - -This library allows interacting with queue Items (called Items) and collections -of items (called Queues). - -Example: - # Create a single Item (ce100) - >>> item = Item("ce", 100) - # Get the sender's email address from an Item - >>> item = Item("ce", 100) - >>> item.userEmail - - # Create an entire Queue (ce) - >>> queue = Queue("ce") - # Get the number of items in a Queue - >>> queue = Queue("ce") - >>> numItems = len(queue) - - # Get all queues (and their items) - >>> queues = getQueues() - -Attributes: - queueDirectory: The directory to load queues from. - queuesToIgnore: Queues that will not be loaded when running getQueues() -""" - -#------------------------------------------------------------------------------# -# Imports -#------------------------------------------------------------------------------# -import os -import time -import email -import re -import datetime -from dateutil.parser import parse -from dateutil import tz -from typing import Union -import json - - -#------------------------------------------------------------------------------# -# Configuration -#------------------------------------------------------------------------------# - -# The directory where queue items are -currentFilePath = __file__ -currentFileDirectory = os.path.dirname(currentFilePath) -currentFileDirectoryParent = os.path.dirname(currentFileDirectory) -queueDirectory = os.path.join(currentFileDirectoryParent, "q-snapshot") - -# Queues to not load in getQueues() -queuesToIgnore = ["archives", "drafts", "inbox", "coral"] - - - -#------------------------------------------------------------------------------# -# Utilities -#------------------------------------------------------------------------------# - -def isValidItemName(name: str) -> bool: - """Returns true if file name is a valid item name. - - A file name is true if it contains between 1 and 3 integer numbers allowing for - any integer between 0 and 999. - - Example: - isValidItemName("21") -> true - isValidItemName("twentyone") -> false - - Args: - name (str): The name to test. - - Returns: - bool: Name is valid item name. - """ - itemPattern = re.compile("^[0123456789]{1,3}$") - return True if itemPattern.match(name) else False - - - -#------------------------------------------------------------------------------# -# Classes -#------------------------------------------------------------------------------# -class Item: - """A chronological representation of an interaction with a user. - - Example: - # Create an Item (ce100) - >>> item = Item("ce", 100, headersOnly=false) - # Create an Item without parsing its contents (ce100) - >>> item = Item("ce", 100, headersOnly=True) - - Args: - queue (str): The name of the Item's queue. - number (int): The number of the Item. - headersOnly (bool, optional): Whether or not to parse headers only. Defaults to True. - - Attributes: - lastUpdated: An ISO 8601 formatted time string showing the last time the file was updated according to the filesystem. - headers: A list of dictionaries containing header keys and values. - content: A list of section dictionaries (only included if headersOnly is False). - isLocked: A boolean showing whether or not a lockfile for the item is present. - userEmail: The email address of the person who this item is from. - userName: The real name of the person who this item is from. - userAlias: The Purdue career account alias of the person this item is from. - assignedTo: The Purdue career account alias of the person this item is assigned to - subject: The subject of the original message for this item. - status: The most recent status update for the item. - priority: The most recent priority for this item. - department: The most recent department for this item. - dateReceived: The date this item was created. - jsonData: A JSON serializable representation of the Item. - - Raises: - ValueError: When the number passed to the constructor cannot be parsed. - """ - - def __init__(self, queue: str, number: int, headersOnly: bool = False) -> None: - self.queue = queue - try: - self.number = int(number) - except ValueError: - raise ValueError(f'Could not convert "{number}" to an integer') - self.__path = "/".join([queueDirectory, self.queue, str(self.number)]) - self.lastUpdated = self.__getLastUpdated() - self.__rawItem = self.__getRawItem() - self.headers = self.__parseHeaders() - if not headersOnly: self.content = self.__parseSections() - self.isLocked = self.__isLocked() - self.userEmail = self.__parseFromData(data="userEmail") - self.userName = self.__parseFromData(data="userName") - self.userAlias = self.__getUserAlias() - self.assignedTo = self.__getMostRecentHeaderByType("Assigned-To") - self.subject = self.__getMostRecentHeaderByType("Subject") - self.status = self.__getMostRecentHeaderByType("Status") - self.priority = self.__getMostRecentHeaderByType("Priority") - self.department = self.__getMostRecentHeaderByType("Department") - self.building = self.__getMostRecentHeaderByType("Building") - self.dateReceived = self.__getFormattedDate(self.__getMostRecentHeaderByType("Date")) - self.jsonData = {} - - for attribute in self.__dir__(): - if "_" not in attribute and attribute != "toJson" and attribute != "jsonData": - self.jsonData[attribute] = self.__getattribute__(attribute) - - def __getLastUpdated(self) -> str: - """Returns last modified time of item reported by the filesystem in mm-dd-yy hh:mm am/pm format. - - Example: - 07-23-20 10:34 AM - - Returns: - str: last modified time of item reported by the filesystem in mm-dd-yy hh:mm am/pm format. - """ - # TODO: Simplify this code block by allowing __getFormattedDate to accept milliseconds since the epoch. - unixTime = os.path.getmtime(self.__path) - formattedTime = time.strftime( - '%m-%d-%y %I:%M %p', time.localtime(unixTime)) - return self.__getFormattedDate(formattedTime) - - def __getRawItem(self) -> list: - """Returns a list of all lines in the item file - - Returns: - list: List of all the lines in the item file - """ - with open(self.__path, errors="replace") as file: - return file.readlines() - - def __getHeaderBoundary(self) -> int: - """Returns the 0 based line number where the Item headers stop. - - Example: The header end would be on line 13 - 12: X-ECN-Queue-Original-URL: - 13: - 14: I need help. - - Returns: - int: line number where the Item headers end - """ - for lineNumber, line in enumerate(self.__rawItem): - if line == "\n": - return lineNumber - - def __parseHeaders(self) -> list: - """Returns a list containing dictionaries of header type and data. - Removes queue prefixes and whitespace. - - Examples: - "[ce] QStatus: Dont Delete\\nFrom: Justin Campbell \\n" - becomes - [ - {"QStatus": "Don't Delete"}, - {"From": "Justin Campbell "} - ] - - Returns: - list: Header dicts - """ - headerString = "" - - # Remove '[queue] ' prefixes: - # Example: - # [ce] QTime-Updated-By: campb303 becomes - # QTime-Updated-By: campb303 - queuePrefixPattern = re.compile(r"\[.*?\] {1}") - for lineNumber in range(self.__getHeaderBoundary()): - line = self.__rawItem[lineNumber] - lineHasQueuePrefix = queuePrefixPattern.match(line) - - if lineHasQueuePrefix: - queuePrefix = line[lineHasQueuePrefix.regs[0] - [0]: lineHasQueuePrefix.regs[0][1]] - line = line.replace(queuePrefix, "") - - headerString += line - - # message = email.message_from_string(headerString + "".join(self.__getContent())) - message = email.message_from_string(headerString) - - headers = [] - dateHeaders=[ - "QStatus-Updated-Time", - "Status-Updated-Time", - "Edited-Time", - "QTime-Updated-Time", - "Merged-Time", - "Time-Updated-Time", - "Replied-Time", - "Assigned-To-Updated-Time", - "QAssigned-To-Updated-Time", - "Date", - "Sent" - ] - - for key in message.keys(): - headers.append({"type": key, "content": self.__getFormattedDate(message[key]) if key in dateHeaders else message[key]}) - - return headers - - # TODO: Implement attachment parsing - - def __parseSections(self) -> list: - # List of all item events - sections = [] - - contentStart = self.__getHeaderBoundary() + 1 - contentEnd = len(self.__rawItem) - 1 - - # List of assignments for the item - assignementLsit = self.__assignmentParsing(contentStart) - - # Appends each assignment individually to sections - for assignment in assignementLsit: - sections.append(assignment) - - # Checks for empty content within an item and returns and - if contentEnd <= contentStart: - blankInitialMessage = self.__initialMessageParsing([""]) - sections.append(blankInitialMessage) - return sections - - # Checks for Directory Identifiers - if self.__rawItem[contentStart] == "\n" and self.__rawItem[contentStart + 1].startswith("\t"): - - directoryStartLine = contentStart + 1 - - # Parses the directory information and returns a dictionary of directory values - directoryInfo = self.__directoryParsing(directoryStartLine) - - # Appends Directory Information into the sections array - sections.append(directoryInfo) - - # Sets the initial message start to the next line after all directory lines and newlines - contentStart = contentStart + len(directoryInfo) + 1 - - # The start line, type, and end line for item events - sectionBoundaries = [] - - # Delimiter info - delimiters = [ - {"name": "edit", "pattern": "*** Edited"}, - {"name": "status", "pattern": "*** Status"}, - {"name": "replyToUser", "pattern": "*** Replied"}, - {"name": "replyFromUser", "pattern": "=== "}, - ] - - # Signifies that there is an initial message to parse - initialMessageSection = True - - # Parses the entire contents of the message, stores everything before any delimiter as the initial message - # and the line number of any delimiters as well as the type - for lineNumber in range(contentStart, contentEnd + 1): - - line = self.__rawItem[lineNumber] - - # Looks for a starting delimiter and explicity excludes the reply-from-user ending delimiter - if (line.startswith("*** Edited by: ") or - line.startswith("*** Replied by: ") or - line.startswith("*** Status updated by: ") or - line == "=== Additional information supplied by user ===\n" and not - line == "===============================================\n" - ): - - # Sets the delimiter type based on the pattern within the delimiters list - for delimiter in delimiters: - - if line.startswith(delimiter["pattern"]): - sectionBoundaries.append( - {"start": lineNumber, "type": delimiter["name"]}) - break - - # If a starting delimiter was encountered, then there is no initial message - if initialMessageSection: - initialMessageSection = False - - elif initialMessageSection == True: - # Delimiter not encountered yet, so append initial message starting line as the current lin number - sectionBoundaries.append( - {"start": lineNumber, "type": "initial_message"}) - initialMessageSection = False - - # Used to set the end line of the last delimiter - sectionBoundaries.append({"start": contentEnd + 1}) - - # Sets the end of the section boundary to the begining of the next section boundary - for boundaryIndex in range(0, len(sectionBoundaries) - 1): - - sectionBoundaries[boundaryIndex]["end"] = sectionBoundaries[boundaryIndex + 1]["start"] - - # Remove End of File boundary since the line number has been assigned to the last delimiter - del sectionBoundaries[-1] - - # Parses through all the boundaries in section boundaries - for boundary in sectionBoundaries: - - # Sets line to the first line of the boundary (which is always the delimiter) - line = self.__rawItem[boundary["start"]] - - # Returns all of the lines within the current section - sectionContent = self.__rawItem[boundary["start"]: boundary["end"]] - - # Appends an initial message dictionary to sections - if boundary["type"] == "initial_message": - initialMessageDictionary = self.__initialMessageParsing( - sectionContent) - sections.append(initialMessageDictionary) - - elif boundary["type"] == "edit": - # Returns a dictionary with edit information - editInfo = self.__editParsing( - sectionContent, boundary["start"]) - - # Checks for a parse error and appends it, returning the sections list which stops the parsing - if editInfo["type"] == "parse_error": - sections.append(editInfo) - return self.__getSortedSections(sections) - - # Appends the edit dictionary to sections - sections.append(editInfo) - - elif boundary["type"] == "replyToUser": - # Returns a dictionary with reply-to information - replyToInfo = self.__replyToParsing( - sectionContent, boundary["start"]) - - # Checks for a parse error and appends it, returning the sections list which stops the parsing - if replyToInfo["type"] == "parse_error": - sections.append(replyToInfo) - return self.__getSortedSections(sections) - - # Appends the reply-to to sections - sections.append(replyToInfo) - - elif boundary["type"] == "status": - # Returns a dictionary with status information - statusInfo = self.__statusParsing( - sectionContent, boundary["start"]) - - if statusInfo["type"] == "parse_error": - sections.append(statusInfo) - return self.__getSortedSections(sections) - - # Appends the status to sections - sections.append(statusInfo) - - elif boundary["type"] == "replyFromUser": - # Returns a dictionary with userReply information - replyFromInfo = self.__userReplyParsing( - sectionContent, boundary["start"]) - - if replyFromInfo["type"] == "parse_error": - sections.append(replyFromInfo) - return self.__getSortedSections(sections) - - # Appends the replyFrom to sections - sections.append(replyFromInfo) - - sortedSections = self.__getSortedSections(sections) - - return sortedSections - # return sections - - def __directoryParsing(self, directoryStartLine: int) -> dict: - """Returns a dictionary with directory information - - Example: - Name: Nestor Fabian Rodriguez Buitrago - Login: rodri563 - Computer: ce-205-38 (128.46.205.67) - Location: HAMP G230 - Email: rodri563@purdue.edu - Phone: 7654766893 - Office: HAMP G230 - UNIX Dir: /home/bridge/b/rodri563 - Zero Dir: U=\\bridge.ecn.purdue.edu\rodri563 - User ECNDB: http://eng.purdue.edu/jump/2e8399a - Host ECNDB: http://eng.purdue.edu/jump/2e83999 - Subject: Autocad installation - - Args: - directoryStartLine (int): line number within the item that the directory starts on - - Returns: - dict: dictionary that splits each line within the directory into a key and a value - """ - directoryInformation = {"type": "directory_information"} - - directoryPossibleKeys = [ - "Name", - "Login", - "Computer", - "Location", - "Email", - "Phone", - "Office", - "UNIX Dir", - "Zero Dir", - "User ECNDB", - "Host ECNDB", - "Subject" - ] - # Executies until the directory start line is greater than the directory ending line - while True: - - # Returns the line number at directory start line - info = self.__rawItem[directoryStartLine] - - # Breaks the loop if it encountrs a newline, signifying the end of the directory information - if info == "\n": - - break - - else: - - # Removes white including space, newlines, and tabs from the directory info line - strippedInfo = info.strip() - - # Attempts to find ": " but will accept ":", denoting a blank entry for a directory item - if ": " in strippedInfo: - - # Seperates the directory info line into two variables, the first variable being the key, the second being the value - # swt1 - key, value = strippedInfo.split(": ", 1) - - if key in directoryPossibleKeys: - # Adds the key value pair to the directory info dictionary - directoryInformation[key] = value - else: - # Casts the list type on to a dictionary - dictionaryList = list(directoryInformation) - # Length of dictionary list - lenDictionaryList = len(dictionaryList) - # The last key appended to the directory dictionary - lastKeyAppended = dictionaryList[lenDictionaryList - 1] - - directoryInformation[lastKeyAppended] = directoryInformation[lastKeyAppended] + \ - " " + strippedInfo - - elif ":" in strippedInfo: - - # Seperates the directory info line into two variables, the first variable being the key, the second being the value - key, value = strippedInfo.split(":", 1) - - if key in directoryPossibleKeys: - # Adds the key value pair to the directory info dictionary - directoryInformation[key] = value - else: - # Casts the list type on to a dictionary - dictionaryList = list(directoryInformation) - # Length of dictionary list - lenDictionaryList = len(dictionaryList) - # The last key appended to the directory dictionary - lastKeyAppended = dictionaryList[lenDictionaryList - 1] - - directoryInformation[lastKeyAppended] = directoryInformation[lastKeyAppended] + \ - " " + strippedInfo - - # Signifies that this line belongs to the most previous line - elif ": " not in strippedInfo and ":" not in strippedInfo: - # Casts the list type on to a dictionary - dictionaryList = list(directoryInformation) - # Length of dictionary list - lenDictionaryList = len(dictionaryList) - # The last key appended to the directory dictionary - lastKeyAppended = dictionaryList[lenDictionaryList - 1] - - directoryInformation[lastKeyAppended] = directoryInformation[lastKeyAppended] + \ - " " + strippedInfo - # Counter to denote the end of the directory - directoryStartLine = directoryStartLine + 1 - - # Returns the directory information dictionary - return directoryInformation - - def __assignmentParsing(self, contentStart: int) -> list: - """Returns a list with assignment information dictionaries - - Example: - Assigned-To: campb303 - Assigned-To-Updated-Time: Tue, 23 Jun 2020 13:27:00 EDT - Assigned-To-Updated-By: campb303 - - Args: - contentStart (int): line number where the content starts - - Returns: - list: [ - {"type": "assignment", - "datetime": datetime of the assignment, - "by": user who initiated the assignment, - "to": user who was assigned - }, - ] - """ - assignmentList = [] - - # Assignment Information - assignedBy = "" - assignedDateTime = "" - assignedTo = "" - - # Parses the header looking for assignment delimeters and stores info into their respective variables - for headerContent in range(0, contentStart): - - line = self.__rawItem[headerContent] - - # Gets who the Item was assigned to - if line.startswith("Assigned-To: "): - - assignedTo = ( - re.search("(?<=Assigned-To: )(.*)", line)).group() - - # Gets the date the Item was assigned - elif line.startswith("Assigned-To-Updated-Time: "): - - dateFromLine = ( - re.search("(?<=Assigned-To-Updated-Time: )(.*)", line)).group() - - assignedDateTime = self.__getFormattedDate(dateFromLine) - - # Gets who assigned the Item - elif line.startswith("Assigned-To-Updated-By: "): - - assignedBy = ( - re.search("(?<=Assigned-To-Updated-By: )(.*)", line)).group() - - # Appends the assignment to the sections list - assignmentList.append( - {"type": "assignment", - "datetime": assignedDateTime, - "by": assignedBy, - "to": assignedTo} - ) - - return assignmentList - - def __initialMessageParsing(self, content: list) -> dict: - """Returns a dictionary with initial message information - - Example: - \n - Testtest\n - \n - - Args: - content (list): content of the initial message - - Returns: - dict: - "type": "initial_message", - "datetime": datetime the initial message was sent, - "from_name": from_name, - "from_email": user_email, - "to": [{email, name}], - "cc": [{email, name}], - "subject": initial message subject - "content": content of the initial message - """ - initialMessageDictionary = {} - - initialMessageDictionary["type"] = "initial_message" - - # Gets the initial message date from the header - rawMessageDateStr = self.__getMostRecentHeaderByType("Date") - - # Sets datetime in the intialMessage dictionary to UTC formatted date - initialMessageDictionary["datetime"] = self.__getFormattedDate( - rawMessageDateStr) - - initialMessageDictionary["from_name"] = self.__parseFromData( - data="userName") - - initialMessageDictionary["from_email"] = self.__parseFromData( - data="userEmail") - - # Stores list of dictionaries for the recipients of the initial message - initialMessageDictionary["to"] = [] - - # Parses the header looking for recipients of the initial message and stores it in a list of tuples - rawMessageRecipientsList = email.utils.getaddresses( - [self.__getMostRecentHeaderByType("To")]) - - # Parses the CC list and stores the cc recipient information in a list of dictionaries - for recipients in rawMessageRecipientsList: - - initialMessageDictionary["to"].append( - {"name": recipients[0], - "email": recipients[1]} - ) - - # Stores list of dictionaries for CC information - initialMessageDictionary["cc"] = [] - - # Parses the header looking for CC recipients of the initial message and stores it in a list of tuples - rawMessageCCList = email.utils.getaddresses( - [self.__getMostRecentHeaderByType("CC")]) - - # Parses the CC list and stores the cc recipient information in a list of dictionaries - for ccRecipients in rawMessageCCList: - - initialMessageDictionary["cc"].append( - {"name": ccRecipients[0], - "email": ccRecipients[1]} - ) - - initialMessageDictionary["subject"] = self.__getMostRecentHeaderByType( - "Subject") - - # Removes unecessary newlines from the begining and the end of the initial message - initialMessageDictionary["content"] = self.__getFormattedSectionContent( - content) - - return initialMessageDictionary - - def __editParsing(self, content: list, lineNum: int) -> dict: - """Returns a dictionary with edit information - - Example: - *** Edited by: campb303 at: 06/23/20 13:27:56 ***\n - \n - This be an edit my boy\n - \n - \n - \n - - Args: - content (list): content of an edit - lineNum (int): line number of an edit within an item - - Returns: - dict: a dictionary with these keys, - "type": "edi", - "by": initiator of the edit, - "datetime": datetime of the edit, - "content": content of the edit - """ - - # Edit Info dictionary - editInfo = {} - - for count, line in enumerate(content): - if line == "===============================================\n": - errorMessage = "Reply-from-user ending delimter encountered without Reply-from-user starting delimter" - return self.__errorParsing(line, lineNum + count + 1, errorMessage) - - editInfo["type"] = "edit" - - delimiterLine = content[0] - # Parses for the author of the edit, which is located between the "*** Edited by: " and " at:" substrings - try: - editInfo["by"] = ( - re.search("(?<=\*{3} Edited by: )(.*)(?= at:)", delimiterLine)).group() - except: - errorMessage = "*** Edited by: [username] at: [date and time] ***\n" - return self.__errorParsing(delimiterLine, lineNum, errorMessage) - - try: - # Parses for the date and time of the edit, which is located between the " at: " and "***\n" substrings - dateTimeString = ( - re.search("(?<= at: )(.*)(?= \*\*\*\n)", delimiterLine)).group() - except: - # Returns an error message if there is no space after "at:" - errorMessage = "*** Edited by: [username] at: [date and time] ***\n" - return self.__errorParsing(delimiterLine, lineNum, errorMessage) - - # Attempts to format the date and time into utc format - editInfo["datetime"] = self.__getFormattedDate(dateTimeString) - - # Remove the delimiter String and unecessary newlines - editInfo["content"] = self.__getFormattedSectionContent(content) - - return editInfo - - def __replyToParsing(self, content: list, lineNum: int) -> dict: - """Returns a dictionary with reply to user information - - Example: - *** Replied by: campb303 at: 06/23/20 13:28:18 ***\n - \n - This be a reply my son\n - \n - Justin\n - ECN\n - \n - - Args: - content (list): content of a reply to user - lineNum (int): line number of a reply to user in an item - - Returns: - dict: a dictionary with these keys, - "type": "reply_to_user", - "by": initiator of the reply to user, - "datetime": datetime of the reply to user, - "content": content of the reply to user - """ - replyInfo = {} - - replyInfo["type"] = "reply_to_user" - - delimiterLine = content[0] - - for count, line in enumerate(content): - if line == "===============================================\n": - errorMessage = "Reply-from-user ending delimter encountered without Reply-from-user starting delimter" - return self.__errorParsing(line, lineNum + count + 1, errorMessage) - - try: - # Parses for the author of the reply, which is located between the "*** Replied by: " and " at:" substrings - replyInfo["by"] = ( - re.search("(?<=\*{3} Replied by: )(.*)(?= at:)", delimiterLine)).group() - except: - errorMessage = "*** Replied by: [username] at: [date and time] ***\n" - return self.__errorParsing(delimiterLine, lineNum, errorMessage) - - # Parses for the date and time of the reply, which is located between the " at: " and "***\n" substrings - try: - dateTimeString = ( - re.search("(?<= at: )(.*)(?= \*\*\*\n)", delimiterLine)).group() - except: - errorMessage = "*** Replied by: [username] at: [date and time] ***\n" - return self.__errorParsing(delimiterLine, lineNum, errorMessage) - - # Formats date to UTC - replyInfo["datetime"] = self.__getFormattedDate(dateTimeString) - - replyInfo["content"] = self.__getFormattedSectionContent(content) - - return replyInfo - - def __statusParsing(self, content: list, lineNum: int) -> dict: - """Returns a dictionary with status information - - Example: - *** Status updated by: campb303 at: 6/23/2020 13:26:55 ***\n - Dont Delete\n - - Args: - content (list): The content of a status update - lineNum (int): The line number of a status update in an item - - Returns: - dict: a dictionary with these keys, - "type": "status", - "by": initiator of the status update, - "datetime": datetime of the status update, - "content": content of the status update - """ - statusInfo = {} - - statusInfo["type"] = "status" - - delimiterLine = content[0] - - for count, line in enumerate(content): - if line == "===============================================\n": - errorMessage = "Reply-from-user ending delimter encountered without Reply-from-user starting delimter" - return self.__errorParsing(line, lineNum + count + 1, errorMessage) - - # Parses for the author of the status change, which is located between the "*** Status updated by: " and " at:" substrings - try: - statusInfo["by"] = ( - re.search("(?<=\*{3} Status updated by: )(.*)(?= at:)", delimiterLine)).group() - except: - errorMessage = "*** Status updated by: [username] at: [date and time] ***\n" - - return self.__errorParsing(delimiterLine, lineNum, errorMessage) - - # Parses for the date and time of the status change, which is located between the " at: " and "***\n" substrings - try: - dateTimeString = re.search( - "(?<= at: )(.*)(?= \*\*\*\n)", delimiterLine).group() - except: - errorMessage = "*** Status updated by: [username] at: [date and time] ***\n" - - return self.__errorParsing(delimiterLine, lineNum, errorMessage) - - # Formats the date to UTC - statusInfo["datetime"] = self.__getFormattedDate(dateTimeString) - - # Remove the delimiter String and unecessary newlines - statusInfo["content"] = self.__getFormattedSectionContent(content) - - return statusInfo - - def __userReplyParsing(self, replyContent: list, lineNumber: int) -> dict: - """Returns a dictionary with user reply information - - Example: - === Additional information supplied by user ===\n - \n - Subject: Re: Beepboop\n - From: Justin Campbell \n - Date: Tue, 23 Jun 2020 13:30:45 -0400\n - X-ECN-Queue-Original-Path: /home/pier/e/queue/Attachments/inbox/2020-06-23/212-original.txt\n - X-ECN-Queue-Original-URL: https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-06-23/212-original.txt\n - \n - Huzzah!\n - \n - ===============================================\n - \n - Args: - replyContent (list): The entire section of a reply-from-user - lineNumber (int): The line number of the begining of a reply-from-user section within and item - - Returns: - dict: a dictionary with these keys, - "type": "reply_from_user", - "from_name": name of the user that sent the reply, - "from_email": email of the user that sent the reply, - "subject": subject of the reply, - "datetime": the datetime of the reply, - "cc": [ - {"name": name of the carbon copied recipient, - "email": email of the carbon copied recipient - }, - ] - "content": content of the reply - "headers": [ - {"type": headerType, - "content": content - }, - ] - """ - replyFromInfo = {} - - replyFromInfo["type"] = "reply_from_user" - - replyFromHeaders = [] - newLineCounter = 0 - endingDelimiterCount = 0 - - # Delimiter information line numbers to remove from reply from user - linesToRemove = [] - - # Parses the section content looking for any line that starts with a metadata, also tracks the line - # number with the enumerate function - for lineNum, line in enumerate(replyContent): - - if endingDelimiterCount == 0 and lineNum == len(replyContent) - 1: - errorMessage = "Did not encounter a reply-from-user ending delimiter" - return self.__errorParsing(line, lineNumber + lineNum + 1, errorMessage) - - if newLineCounter == 1 and line != "\n": - - try: - # Append header information for each headr line - headerType, content = line.split(": ", 1) - replyFromHeaders.append( - {"type": headerType, - "content": content - } - ) - except: - lenReplyFromHeaders = len(replyFromHeaders) - if lenReplyFromHeaders == 0: - errorMessage = ("Expected reply-from-user header information:\n" + - "=== Additional information supplied by user ===\n" + - "\n" + - "[Header Type]: [Header Value]\n" + - "\n" - ) - return self.__errorParsing(line, lineNumber + lineNum + 1, errorMessage) - - else: - replyFromHeaders[lenReplyFromHeaders - - 1]["content"] = replyFromHeaders[lenReplyFromHeaders - 1]["content"] + " " + line - - linesToRemove.append(lineNum) - # Checks for a newline and breaks for loop on second occurance of a newline - if line == "\n": - newLineCounter = newLineCounter + 1 - - if newLineCounter == 2 and "datetime" not in replyFromInfo.keys(): - errorMessage = "Expected \"Date: [datetime]\" in the header info" - return self.__errorParsing(line, lineNumber + lineNum + 1, errorMessage) - - elif line == "===============================================\n": - endingDelimiterCount = endingDelimiterCount + 1 - - elif line.startswith("From: ") and newLineCounter == 1: - # Returns a list of one tuples with a name stored in the first index of the tuple and an email stored in the second index of the tuple - emailList = email.utils.getaddresses([line]) - replyFromInfo["from_name"] = emailList[0][0] - replyFromInfo["from_email"] = emailList[0][1] - - elif line.startswith("Subject: ") and newLineCounter == 1: - # Matches everything after "Subject: " - try: - subjectStr = ( - re.search("(?<=Subject: )(.*)", line)).group() - except: - errorMessage = "Expeted syntax of \"Subject: [subject]\"" - return self.__errorParsing(line, lineNumber + lineNum + 1, errorMessage) - - # Formatts the date to UTC - replyFromInfo["subject"] = subjectStr - - elif line.startswith("Date: ") and newLineCounter == 1: - # Matches everything after "Date: " - try: - dateStr = (re.search("(?<=Date: )(.*)", line)).group() - except: - errorMessage = "\"Date: [datetime]\"" - return self.__errorParsing(line, lineNumber + lineNum + 1, errorMessage) - - # Formatts the date to UTC - replyFromInfo["datetime"] = self.__getFormattedDate(dateStr) - - elif line.startswith("Cc: ") and newLineCounter == 1: - - replyFromInfo["cc"] = [] - - # Returns a list of tuples with email information - recipientsList = email.utils.getaddresses([line]) - - # Parses through the cc tuple list - for cc in recipientsList: - # Stores the cc information in a dictionary and appends it to the ccRecipientsList - replyFromInfo["cc"].append( - {"name": cc[0], - "email": cc[1]} - ) - - # Deletes reduntant lines from the message content in reverse order - for lineNum in sorted(linesToRemove, reverse=True): - replyContent.pop(lineNum) - - # Strips any unnecessary newlines or any delimiters frm the message content - replyFromInfo["content"] = self.__getFormattedSectionContent( - replyContent) - - replyFromInfo["headers"] = replyFromHeaders - - return replyFromInfo - - def __getFormattedSectionContent(self, sectionContent: list) -> list: - """Returns a list with message content that is stripped of unnecessary newlines and begining delimiters - - Example: - *** Edited by: mph at: 02/21/20 10:27:16 ***\n - \n - Still need to rename machines - but the networking issue now seems to \n - be resolved via another ticket.\n - \n - \n - \n - \n - \n - - Args: - sectionContent (list): The section content of a parsed section - - Returns: - list: the section content of a parsed section without any delimiters and unnecessary newlines - """ - # Continually removes the first line of sectionContent if it is a newline or delimiter in each iteration - while len(sectionContent) > 1: - if (sectionContent[0] == "\n" or - sectionContent[0].startswith("*** Edited by: ") or - sectionContent[0].startswith("*** Replied by: ") or - sectionContent[0].startswith("*** Status updated by: ") or - sectionContent[0] == "=== Additional information supplied by user ===\n" or - sectionContent[0] == "===============================================\n" - ): - sectionContent.pop(0) - else: - # Breaks the loop if the first line isn't a newline or delimiter - break - - # Continually removes the last line of sectionContent if it is a newline or delimiter in each iteration - while len(sectionContent) > 1: - # Initializes the Length of sectionContent each iteration of the loop - sectionContentLength = len(sectionContent) - - if (sectionContent[sectionContentLength - 1] == "\n" or - sectionContent[sectionContentLength - - 1] == "===============================================\n" - ): - sectionContent.pop(sectionContentLength - 1) - else: - # Breaks the loop if the last line isn't a newline or delimiter - break - - return sectionContent - - def __errorParsing(self, line: str, lineNum: int, expectedSyntax: str) -> dict: - """Returns a dictionary with error parse information when a line is malformed - - Example: - "*** Status updated by: ewhile at: 5/7/2020 10:59:11 *** sharing between\n" - - Args: - line (str): line of that threw error - lineNum (int): line number in the item that threw error - expectedSyntax (str): a message stating the syntax the line should follow - - Returns: - dict: a dictionary with these keys, - "type": "parse_error", - "datetime": time the error was encountered, - "file_path": path of the item with erroneos line, - "expected": expectedSyntax, - "got": line, - "line_num": lineNum - """ - errorDictionary = {} - - # Type - errorDictionary["type"] = "parse_error" - - # Dateime of the parse error - errorDictionary["datetime"] = self.__getFormattedDate( - str(datetime.datetime.now())) - - # Item filepath - errorDictionary["file_path"] = self.__path - - # Expected value - errorDictionary["expected"] = expectedSyntax - - # line that threw error - errorDictionary["got"] = line - - # line number that threw error - errorDictionary["line_num"] = lineNum - - # returns the error dictionary - return errorDictionary - - def __getSortedSections(self, sectionsList: list) -> list: - """Sorts the sections chronologically by datetime - - Example: - [example] need to do - - Args: - sections (list): the list of sections to be sorted - - Returns: - list: a list of sections sorted by datetime - """ - sectionsLength = len(sectionsList) - sortedSections = [] - oldestSection = {} - - while len(sortedSections) < sectionsLength: - - for iteration, currentSection in enumerate(sectionsList): - - if currentSection["type"] == "directory_information": - sortedSections.append(currentSection) - sectionsList.remove(currentSection) - break - - if iteration == 0: - oldestSection = currentSection - - #datetime.datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S.%f') - - elif parse(currentSection["datetime"]) < parse(oldestSection["datetime"]): - oldestSection = currentSection - - if iteration == len(sectionsList) - 1: - sortedSections.append(oldestSection) - sectionsList.remove(oldestSection) - - return sortedSections - - def __isLocked(self) -> Union[str, bool]: - """Returns a string info about the lock if true and a bool False if false - - Example: A file is locked - "CE 100 is locked by campb303 using qvi" - - Example: a file is not locked - False - - Returns: - Union[str, bool]: String with info about lock if true, bool False if false - """ - lockFile = self.__path + ".lck" - if os.path.exists(lockFile): - with open(lockFile) as file: - lockInfo = file.readline().split(" ") - lockedBy = lockInfo[4] - lockedUsing = lockInfo[1] - return "{queue} {number} is locked by {lockedBy} using {lockedUsing}".format(queue=self.queue, number=self.number, lockedBy=lockedBy, lockedUsing=lockedUsing) - else: - return False - - def __getMostRecentHeaderByType(self, headerType: str) -> str: - """Return the data of most recent header of the given type. - If no header of that type exists, return an empty string. - - Example: Requesting a Status header that does exist - __getMostRecentHeaderByType("Status") - becomes "Waiting for Reply" - - Example: Requesting a Status header that doesn't exist - __getMostRecentHeaderByType("Status") - becomes "" - - Args: - headerType (str): Type of header to return. - - Returns: - str: data of most recent header of the given type or empty string. - """ - for header in self.headers: - if header["type"] == headerType: - return header["content"] - return "" - - def __parseFromData(self, data: str) -> str: - """Parse From header and return requested data. - Returns empty string if requested data is unavailable. - - Examples: From data is "From: Campbell, Justin " - __parseFromData(data="userName") returns "Campbell, Justin" - __parseFromData(data="userEmail") returns "campb303@purdue.edu" - - Args: - data (str): The data desired; can be "userName" or "userEmail". - - Returns: - str: userName, userEmail or empty string. - """ - fromHeader = self.__getMostRecentHeaderByType("From") - userName, userEmail = email.utils.parseaddr(fromHeader) - - if data == "userName": - return userName - elif data == "userEmail": - return userEmail - else: - raise ValueError( - "data='" + str(data) + "' is not a valid option. data must be \"userName\" or \"userEmail\".") - - def __getUserAlias(self) -> str: - """Returns user's Career Account alias if present. - If Career Account alias isn't present, returns empty string. - - Example: Email from campb303@purdue.edu - userAlias = "campb303" - - Example: Email from spam@spammer.net - userAlias = "" - - Returns: - str: User's Career Account alias if present or empty string - """ - - - try: - emailUser, emailDomain = self.userEmail.split("@") - - # Returns an error parse if the self.useremail doesn't contain exactally one "@" symbol - except ValueError: - # Parses through the self.headers list to find the "From" header and its line number - for lineNum, header in enumerate(self.headers): - if header["type"] == "From": - headerString = header["type"] + ": " + header["content"] - return self.__errorParsing(headerString, lineNum + 1, "Expected valid email Address") - - return emailUser if emailDomain.endswith("purdue.edu") else "" - - def __getFormattedDate(self, date: str) -> str: - """Returns the date/time formatted as RFC 8601 YYYY-MM-DDTHH:MM:SS+00:00. - Returns empty string if the string argument passed to the function is not a datetime. - See: https://en.wikipedia.org/wiki/ISO_8601 - - Returns: - str: Properly formatted date/time recieved or empty string. - """ - try: - # This date is never meant to be used. The default attribute is just to set timezone. - parsedDate = parse(date, default=datetime.datetime( - 1970, 1, 1, tzinfo=tz.gettz('EDT'))) - except: - return "" - - parsedDateString = parsedDate.strftime("%Y-%m-%dT%H:%M:%S%z") - - return parsedDateString - - def toJson(self) -> dict: - """Returns a JSON safe representation of the item. - - Returns: - dict: JSON safe representation of the item. - """ - return self.jsonData - - def __repr__(self) -> str: - return self.queue + str(self.number) - -class Queue: - """A collection of Items. - - Example: - # Create a queue (ce) - >>> queue = Queue("ce") - # Create a queue without parsing item contents (ce) - >>> queue = Queue("ce", headersOnly=False) - - Args: - queue (str): The name of the queue. - headersOnly (bool, optional): Whether or not to parse headers only. Defaults to True. - - Attributes: - name: The name of the queue. - items: A list of Items in the queue. - jsonData: A JSON serializable representation of the Queue. - """ - - def __init__(self, name: str, headersOnly: bool = True) -> None: - self.name = name - self.headersOnly = headersOnly - self.__directory = queueDirectory + "/" + self.name + "/" - self.items = self.__getItems() - self._index = 0 - - self.jsonData = { - "name": self.name, - "length": len(self) - } - - def __getItems(self) -> list: - """Returns a list of items for this Queue - - Returns: - list: a list of items for this Queue - """ - items = [] - - for item in os.listdir(self.__directory): - itemPath = self.__directory + "/" + item - - isFile = True if os.path.isfile(itemPath) else False - - if isFile and isValidItemName(item): - items.append(Item(self.name, item, headersOnly=self.headersOnly)) - - return items - - def toJson(self) -> dict: - """Return JSON safe representation of the Queue - - The JSON representation of every item in the Queue is added to the - Queue's JSON data then the Queue's JSON data is returned. - - Returns: - dict: JSON safe representation of the Queue - """ - items = [] - for item in self.items: - items.append(item.toJson()) - self.jsonData["items"] = items - - return self.jsonData - - def __len__(self) -> int: - return len(self.items) - - def __repr__(self) -> str: - return f'{self.name}_queue' - - # Implements the interable interface requirements by passing direct references - # to the item list's interable values. - def __iter__(self) -> list: - return iter(self.items) - def __next__(self) -> int: - return iter(self.items).__next__() - -def getValidQueues() -> list: - """Returns a list of queues on the filesystem excluding ignored queues. - - Example: - ["bidc", "me", "ce"] - - Returns: - list: Valid queues - """ - queues = [] - - for file in os.listdir(queueDirectory): - currentFile = queueDirectory + "/" + file - isDirectory = os.path.isdir(currentFile) - isValid = file not in queuesToIgnore - - if isDirectory and isValid: - queues.append(file) - - return queues - -def getQueueCounts() -> list: - """Returns a list of dictionaries with the number of items in each queue. - - Example: - [ - { - name: "me", - number_of_items: 42 - }, - { - name: "bidc", - number_of_items: 3 - } - ] - - Returns: - list: Dictionaries with the number of items in each queue. - """ - queueInfo = [] - for queue in getValidQueues(): - possibleItems = os.listdir(queueDirectory + "/" + queue) - validItems = [file for file in possibleItems if isValidItemName(file)] - queueInfo.append( {"name": queue, "number_of_items": len(validItems)} ) - - # Sorts list of queue info alphabetically - sortedQueueInfo = sorted(queueInfo, key = lambda queueInfoList: queueInfoList['name']) - - return sortedQueueInfo - -def loadAllQueues(headersOnly: bool = True) -> list: - """Return a list of Queues for each queue. - - Example: - # Load all Queues without parsing Item content - >>> loadAllQueues(); - Load all Queues and parsing Item content - >>> loadAllQueues(headersOnly=False) - - Args: - headersOnly (bool, optional): Whether or not to parse headers only. Defaults to True. - - Returns: - list: List of Queues for each queue. - """ - queues = [] - - for queue in getValidQueues(): - queues.append(Queue(queue, headersOnly=headersOnly)) - - return queues - -if __name__ == "__main__": - abe = Queue("abe") - abeCount = getQueueCounts() - print() \ No newline at end of file diff --git a/api/ECNQueue_old.py b/api/ECNQueue_old.py deleted file mode 100755 index 8bef24b..0000000 --- a/api/ECNQueue_old.py +++ /dev/null @@ -1,473 +0,0 @@ -#!/usr/local/bin/python - -#------------------------------------------------------------# -# Summary: Generates pages viewed by end users -#------------------------------------------------------------# - - -#------------------------------------------------------------# -# Import Libraries -#------------------------------------------------------------# -import email -import base64 -import os -import sys -import time -from string import digits -from email.Utils import parseaddr - - -#------------------------------------------------------------# -# Configure Script Environment -#------------------------------------------------------------# -c_queue_command_dir = '/usr/local/etc/ecn/queue/' - -# Use Live Queue: -# c_queue_dir = '/home/pier/e/queue/Mail/' - -# Use Test Queue: -c_queue_dir = '/Users/justincampbell/GitHub/ecn-queue/webqueue/q-snapshot' - -c_queues_to_skip = ['archives', 'drafts', 'inbox'] - -""" -c_header_map = { - 'priority':'qpriority', - 'status':'qstatus', - 'building':'qbuilding', - 'status-updated-by':'qstatus-updated-by', - 'time':'qtime', - 'assigned-to':'qassigned-to' -} -""" - - -class QueueItem: - - def __init__(self, queue_name, number, archive=''): - " Initialize a new Queue Item " - self.queue_name = queue_name # name of the queue containing the item - self.number = int(number) # queue item number - self.attributes = {'number': int(number), 'queue_name': queue_name} # dictionary of headers, attributes, etc. - self.headers = '' # text version of e-mail headers - self.content = '' # text version of e-mail content - self.body = {} # text version of the body of the e-mail - self.attachments = {} # dictionary of attachments keyed on filename - self.message = None # python e-mail representation of the message - self.archive = archive - - def load(self, headers_only=0): - " Load the content of this queue item " - - # Get an open file ready to read the queue item - # file = qCmd('qshow', self.queue_name, self.number, file=1) - if self.archive: - queue_dir = '%sarchives/%s/%s/' % (c_queue_dir, - self.queue_name, self.archive) - else: - queue_dir = '%s%s/' % (c_queue_dir, self.queue_name) - - if os.access(queue_dir + str(self.number), os.R_OK): - file = open(queue_dir + str(self.number)) - else: - return False - - self.attributes['last_updated'] = os.path.getmtime( - queue_dir + str(self.number)) - - in_headers = True - self.headers = '' - self.content = '' - - sys.stdout.flush() - line = 1 - num_lines = 0 - while line: - if in_headers: - line = file.readline() - num_lines += 1 - - # Skip lines beginning with [ or ( in the headers - if len(line) and line[0] in '[(': - if line.find('[%s] ' % self.queue_name) == 0: - line = line.replace('[%s] ' % self.queue_name, '') - else: - continue - - # a newline designates the end of the headers - if len(line) and line[0] == '\n': - in_headers = False - if headers_only: break - - self.headers += line - - else: - self.content += file.read() - break - - file.close() - - self.content = self.stripAttachments(self.content) - - self.message = email.message_from_string(self.headers + self.content) - - # Populate the message attributes from the - # message headers - for key in self.message.keys(): - self[key.lower()] = self.message[key] - - self['from_username'] = parseaddr(self['from'])[1].split('@')[0] - self['subject_status'] = '
%(subject)s
%(qstatus)s
' % self - self['for_username'] = self['qassigned-to'].lower() - - if not headers_only: - # Populate the message attachments from the - # message objects - self.body = {} - - if self.message.is_multipart(): - for part in self.message.walk(): - if part.get_filename(): - self.attachments[part.get_filename()] = {'content-type':part.get_content_type(), 'file':part.get_payload(decode=True)} - - elif part.get_content_type()[:5] == 'text/': - content_type = part.get_content_type() - - if not self.body.has_key(content_type): - self.body[content_type] = '' - - self.body[content_type] += part.get_payload(decode=True) - - else: - # If the message is not multipart then - # this is the body of the document - self.body[self.message.get_content_type()] = self.message.get_payload(decode=True) - - return True - - - def locked(self): - if self.archive: - queue_dir = '%sarchives/%s/%s/' % (c_queue_dir, self.queue_name, self.archive) - else: - queue_dir = '%s%s/' % (c_queue_dir, self.queue_name) - - if os.access(queue_dir + str(self.number) + '.lck', os.R_OK): - file = open(queue_dir + str(self.number) + '.lck') - parts = file.read().replace('\n', '').split(' ') - lock_info = { - 'file':parts[0], - 'program':parts[1], - 'user':parts[-1] - } - return lock_info - return False - - - def stripAttachments(self, message): - if not message: return '' - - lines = message.split('\n') - - attachments = [] - attachment_boundary = '' - attachment_data = '' - message_data = '' - - for line_index, line in enumerate(lines): - if attachment_boundary: - if line.find(attachment_boundary) == 0: - attachments.append(attachment_data) - attachment_boundary = '' - attachment_data = '' - else: - attachment_data += line + '\n' - - elif line.lower().find('content-type:') == 0: - header, value = line.split(':', 1) - value = value.strip().lower() - if value.find('text') == 0 or \ - value.find('multipart') == 0 or \ - value.find('message') == 0: - message_data += line + '\n' - else: - for x in range(line_index-1, 0, -1): - if lines[x].find('--') == 0: - attachment_boundary = lines[x] - for y in range(x+1, line_index): - attachment_data += lines[y] + '\n' - break - attachment_data += line + '\n' - - else: - message_data += line + '\n' - - for attachment in attachments: - message = email.message_from_string(attachment) - self.message = message - self.attachments[str(message.get_filename())] = {'content-type':message.get_content_type(), 'file':message.get_payload(decode=True)} - - return message_data - - def loadHeaders(self): - """ Helper function which calls load with headers_only=1 """ - self.load(headers_only=1) - - def getHeaders(self): - " Return the HTML Headers for this queue item " - if not self.headers: self.loadHeaders() - return self.headers - - def getBody(self, content_types=['text/plain','text/html']): - """ - Return the body of the e-mail using the content_types - to specify a prefered content type. If no content type - matching the prefered type is found it returns the first - body element - """ - - if not self.content: self.load() - - body_text = '' - for content_type in content_types: - if content_type in self.body: - body_text += '\n' + self.body[content_type] - if self.message.epilogue: - body_text += '\n' + self.message.epilogue - if body_text: - return body_text - """ - for content_type in content_types: - if content_type in self.body: - return self.body[content_type] - """ - - if len(self.body.keys()): - return self.body[self.body.keys()[0]] - else: - return '' - - def getAttachments(self): - " Return a list of filenames for all attachments " - if not self.content: self.load() - return self.attachments.keys() - - def getAttachment(self, filename): - " Return the content of a specific attachment " - if not self.content: self.load() - return self.attachments[filename]['file'] - - def getAttachmentContentType(self, filename): - " Return the content-type of a specific attachment " - if not self.content: self.load() - return self.attachments[filename]['content-type'] - - def getNumber(self): - " Returns the number of the queue item " - return self.number - - def numAttachments(self): - " Returns the number of attachments " - if not self.content: self.load() - return len(self.getAttachments()) - - def lastUpdated(self): - return self.attributes['last_updated'] - - def __contains__(self, item): - return item in self.attributes - - def __getitem__(self, key): - if not self.headers: - try: - self.loadHeaders() - except: - raise Exception('Error In Headers', 'Queue Item #%s' % self.number) - - key = key.lower() - # key = c_header_map.get(key, key) - return self.attributes.get(key,'') - - def __setitem__(self, key, value): - self.attributes[key.lower()] = value - - def __str__(self): - return "%14s:%-4s %-10s %-40s" % (self.queue_name, self.number, self['from'], self['subject']) - -class Queue: - - - def __init__(self, queue_name, archive=''): - self.loaded = False - self.queue_name = queue_name - self.archive = archive - self.num_items = None - self.items = [] - self.filtered_items = [] - self.filters = {} - self.sort_on = '' - self.sort_direction = 'ascending' - - def loadItems(self): - self.loaded = True - self.items = [] - - if self.archive: - # Where self.archive = 'YM0502' - queue_dir = c_queue_dir + 'archives/' + self.queue_name + '/' + self.archive + '/' - else: - # lines = qCmd('qscan', self.queue_name).split('\n')[1:] - queue_dir = c_queue_dir + self.queue_name + '/' - - if not os.access(queue_dir, os.F_OK): - return - - for file in os.listdir(queue_dir): - valid = True - for letter in file: - if letter not in digits: - valid = False - break - - if valid and os.access(queue_dir + file, os.R_OK): - item_num = file - item = QueueItem(self.queue_name, file, self.archive) - self.items.append(item) - - self.num_items = len(self.items) - - def sort(self, sort_on, sort_direction='ascending'): - if not self.loaded: self.loadItems() - self.sort_on = sort_on - self.sort_direction = sort_direction - if self.sort_on == 'qpriority': - self.items.sort(lambda a,b:cmp(a[sort_on].upper(), b[sort_on].upper())) - elif self.sort_on == 'date': - self.items.sort(lambda a,b:cmp(time.mktime(email.utils.parsedate(a[sort_on])), time.mktime(email.utils.parsedate(b[sort_on])))) - else: - self.items.sort(lambda a,b:cmp(a[sort_on], b[sort_on])) - - if sort_direction == 'descending': - self.items.reverse() - - self.filtered_items = [] - - def setFilter(self, name, value): - self.filters[name.lower()] = value.lower() - self.filtered_items = [] - - def addItems(self, items): - self.items.extend(items) - self.num_items = len(self.items) - self.loaded = True - - def setItems(self, items): - self.items = items[:] - self.num_items = len(self.items) - self.loaded = True - - def getItems(self, exact_match=False): - if not self.loaded: self.loadItems() - - if not self.filters: - return self.items - - elif self.filtered_items: - return self.filtered_items - - for item in self.items: - matches = False - for filter in self.filters: - for word in self.filters[filter].split(' or '): - word = word.strip() - - if not word: - continue - - if word[0] == '!': - if item[filter].lower().find(word[1:]) < 0: - matches = True - - elif exact_match and item[filter].lower() == word: - matches = True - break - elif not exact_match and item[filter].lower().find(word) >= 0: - matches = True - break - - if matches: - self.filtered_items.append(item) - - return self.filtered_items - - def getName(self): - return self.queue_name - - def setNumItems(self, num): - self.num_items = num - - def getNumItems(self): - if self.num_items is None: - self.num_items = 0 - - if self.archive: - queue_dir = c_queue_dir + 'archives/' + self.queue_name + '/' + self.archive - else: - queue_dir = c_queue_dir + self.queue_name - - files = os.listdir(queue_dir) - for file in files: - valid = 1 - for c in str(file): - if c not in digits: - valid = 0 - break - if valid: - self.num_items += 1 - - return self.num_items - - def lastUpdated(self): - update_times = [] - for item in self.getItems(): - update_times.append(item['last_updated']) - update_times.sort() - update_times.reverse() - if len(update_times): - return update_times[0] - return -1 - - def __len__(self): - return self.getNumItems() - - def __str__(self): - return "%-20s %s" % (self.getName(), self.getNumItems()) - - def __add__(self, other): - new_queue = Queue(self.getName() + '+' + other.getName()) - new_queue.addItems(self.getItems()) - new_queue.addItems(other.getItems()) - return new_queue - - def __cmp__(self, other): - return cmp(self.getName(), other.getName()) - - def __getitem__(self, index): - return self.getItems()[index] - -def getQueues(): - queues = [] - - for file in os.listdir(c_queue_dir): - if os.access(c_queue_dir + file, os.R_OK) and os.path.isdir(c_queue_dir + file) and file not in c_queues_to_skip: - queue = Queue(file) - queues.append(queue) - - return queues - -if __name__ == '__main__': - - # Create a combined Queue - item = QueueItem('webmaster', 22) - body = item.getBody() - diff --git a/api/api.py b/api/api.py deleted file mode 100644 index 3a45319..0000000 --- a/api/api.py +++ /dev/null @@ -1,255 +0,0 @@ -from flask import Flask, request, after_this_request -from flask_restful import Api, Resource -from flask_jwt_extended import ( - JWTManager, create_access_token, create_refresh_token, - jwt_required, get_jwt_identity, jwt_refresh_token_required, - set_refresh_cookies, unset_refresh_cookies -) -import os, dotenv -from easyad import EasyAD -from ldap.filter import escape_filter_chars -# pylint says this is an error but it works so ¯\_(ツ)_/¯ -from ldap import INVALID_CREDENTIALS as LDAP_INVALID_CREDENTIALS -import ECNQueue - -# Load envrionment variables for ./.env -dotenv.load_dotenv() - -# Create Flask App -app = Flask(__name__) - -# Create API Interface -api = Api(app) - - -################################################################################ -# Configure Flask-JWT-Extended -################################################################################ - -# Set JWT secret key and create JWT manager -app.config["JWT_SECRET_KEY"] = os.environ.get("JWT_SECRET_KEY") -# Set identity claim field key to sub for JWT RFC complience -# Flask-JWT-Extended uses 'identity' by default for compatibility reasons -app.config["JWT_IDENTITY_CLAIM"] = "sub" -# Set the key for error messages generated by Flask-JWT-Extended -app.config["JWT_ERROR_MESSAGE_KEY"] = "message" - -# Look for JWTs in headers (for access) then cookies (for refresh) -app.config["JWT_TOKEN_LOCATION"] = ["headers", "cookies"] -# Restrict cookies to HTTPS in prod, allow HTTP in dev -app.config["JWT_COOKIE_SECURE"] = False if os.environ.get("ENVIRONMENT") == "dev" else True -# Restrict cookies using SameSite=strict flag -app.config["JWT_COOKIE_SAMESITE"] = "strict" -# Restrict refresh tokens to /token/refresh endpoint -app.config["JWT_REFRESH_COOKIE_PATH"] = '/api/tokens/refresh' -# Set the cookie key for CRSF validation string -# This is the default value. Adding it for easy reference -app.config["JWT_REFRESH_CSRF_HEADER_NAME"] = "X-CSRF-TOKEN" - -tokenManager = JWTManager(app) - - - -def user_is_valid(username: str, password: str) -> bool: - """Checks if user is valid and in webqueue2 login group. - - Args: - username (str): Career account username. - password (str): Career account passphrase. - - Returns: - bool: True if user is valid, otherwise False. - """ - - # Check for empty arguments - if (username == "" or password == ""): - return False - - # Initialize EasyAD - config = { - "AD_SERVER": "boilerad.purdue.edu", - "AD_DOMAIN": "boilerad.purdue.edu" - } - ad = EasyAD(config) - - # Prepare search critiera for Active Directory - credentials = { - "username": escape_filter_chars(username), - "password": password - } - attributes = [ 'cn', "memberOf" ] - filter_string = f'(&(objectClass=user)(|(sAMAccountName={username})))' - - # Do user search - try: - user = ad.search(credentials=credentials, attributes=attributes, filter_string=filter_string)[0] - except LDAP_INVALID_CREDENTIALS: - return False - - # Isolate group names - # Example: - # 'CN=00000227-ECNStuds,OU=BoilerADGroups,DC=BoilerAD,DC=Purdue,DC=edu' becomes - # `00000227-ECNStuds` - user_groups = [ group.split(',')[0].split('=')[1] for group in user["memberOf"] ] - - # Check group membership - webqueue_login_group = "00000227-ECN-webqueue" - if webqueue_login_group not in user_groups: - return False - - return True - - - -class Login(Resource): - def post(self) -> tuple: - """Validates username/password and returns both access and refresh tokens. - - Return Codes: - 200 (OK): On success. - 401 (Unauthroized): When username or password are incorrect. - 422 (Unprocessable Entitiy): When the username or password can't be parsed. - - Example: - curl -X POST - -H "Content-Type: application/json" - -d '{"username": "bob", "password": "super_secret"}' - - { "access_token": fjr09hfp09h932jp9ruj3.3r8ihf8h0w8hr08ifhj804h8i.8h48ith08ity409hip0t4 } - - Returns: - tuple: Response containing tokens and HTTP response code. - """ - if not request.is_json: - return ({ "message": "JSON missing from request body"}, 422) - - data = request.json - - fields_to_check = ["username", "password"] - for field in fields_to_check: - if field not in data.keys(): - return ({ "message": f"{field} missing from request body"}, 422) - - if not user_is_valid(data["username"], data["password"]): - return ({ "message": "Username or password is invalid"}, 401) - - access_token = create_access_token(data["username"]) - refresh_token = create_refresh_token(data["username"]) - - # This decorator is needed because Flask-RESTful's 'resourceful routing` - # doesn't allow for direct modification to the Flask response object. - # See: https://flask-restful.readthedocs.io/en/latest/quickstart.html#resourceful-routing - @after_this_request - def _does_this_work(response): - set_refresh_cookies(response, refresh_token) - return response - - return ({ "access_token": access_token }, 200) - -class RefreshAccessToken(Resource): - @jwt_refresh_token_required - def post(self): - username = get_jwt_identity() - access_token = create_access_token(username) - return ({"access_token": access_token}, 200) - -class Item(Resource): - @jwt_required - def get(self, queue: str, number: int) -> tuple: - """Returns the JSON representation of the item requested. - - Return Codes: - 200 (OK): On success. - - Example: - { - "lastUpdated": "07-23-20 10:11 PM", - "headers": [...], - "content": [...], - "isLocked": "ce 100 is locked by knewell using qvi", - "userEmail": "campb303@purdue.edu", - "userName": "Justin Campbell", - "userAlias": "campb303", - "assignedTo": "campb303", - "subject": "Beepboop", - "status": "Dont Delete", - "priority": "", - "deparment": "", - "building": "", - "dateReceived": "Tue, 23 Jun 2020 13:25:51 -0400" - } - - Args: - queue (str): The queue of the item requested. - item (int): The number of the item requested. - - Returns: - tuple: Item as JSON and HTTP response code. - """ - - headersOnly = True if request.args.get("headersOnly") == "True" else False - return ECNQueue.Item(queue, number, headersOnly=headersOnly).toJson() - -class Queue(Resource): - @jwt_required - def get(self, queues: str) -> tuple: - """Returns the JSON representation of the queue requested. - - Example: - { - "name": ce, - "items": [...] - } - - Return Codes: - 200 (OK): On success. - - Args: - queues (str): Plus (+) deliminited list of queues. - - Returns: - tuple: Queues as JSON and HTTP response code. - """ - headersOnly = False if request.args.get("headersOnly") == "False" else True - queues_requested = queues.split("+") - - queue_list = [] - for queue in queues_requested: - queue_list.append(ECNQueue.Queue(queue, headersOnly=headersOnly).toJson()) - return (queue_list, 200) - -class QueueList(Resource): - @jwt_required - def get(self) -> tuple: - """Returns a list of dictionaries with the number of items in each queue. - - Return Codes: - 200 (OK): On success. - - Example: - [ - { - name: "me", - number_of_items: 42 - }, - { - name: "bidc", - number_of_items: 3 - } - ] - - Returns: - tuple: Queues and item counts as JSON and HTTP response code. - """ - return (ECNQueue.getQueueCounts(), 200) - - - -api.add_resource(Login, "/api/login") -api.add_resource(RefreshAccessToken, "/api/tokens/refresh") -api.add_resource(Item, "/api/data//") -api.add_resource(Queue, "/api/data/") -api.add_resource(QueueList, "/api/data/get_queues") - -if __name__ == "__main__": - app.run() \ No newline at end of file diff --git a/api/requirements.txt b/api/requirements.txt index 48ec2fb..f18a7bf 100644 --- a/api/requirements.txt +++ b/api/requirements.txt @@ -1,25 +1 @@ -# The Python virtual environment should be managed via the venv-manager utility, not directly by pip. -# See: https://pip.pypa.io/en/stable/reference/pip_install/#example-requirements-file - -# General Utilities -gunicorn -pipdeptree -pylint - -# API -python-dotenv -Flask-RESTful -python-dateutil -Flask-JWT-Extended -# Flask-JWT-Extended doesn't support PyJWT 2.x as of 3.25.0 -# Prevent upgrade to PyJWT 2.x until Flask-JWT-Extended is updated to support it. -# Check: https://github.com/vimalloc/flask-jwt-extended/tags -PyJWT == 1.* -# Custom python-ldap without SASL -git+https://github.itap.purdue.edu/ECN/python-ldap.git@python-ldap-3.3.1#egg=python-ldap==3.3.1 -easyad - -# API Documentation -mkdocs -mkdocs-material -mkautodoc \ No newline at end of file +webqueue2api @ git+https://github.itap.purdue.edu/ECN/webqueue2-api@1.1.0#egg=webqueue2api \ No newline at end of file diff --git a/docs/Browser Poll Data 8:5:20.png b/docs/Browser Poll Data 8:5:20.png deleted file mode 100644 index 5e07f57..0000000 Binary files a/docs/Browser Poll Data 8:5:20.png and /dev/null differ diff --git a/docs/Dev Environment Setup Guide/Add SSH Key to GitHub.gif b/docs/Dev Environment Setup Guide/Add SSH Key to GitHub.gif deleted file mode 100644 index b812c5b..0000000 Binary files a/docs/Dev Environment Setup Guide/Add SSH Key to GitHub.gif and /dev/null differ diff --git a/docs/Dev Environment Setup Guide/Connect to Remote SSH Host.gif b/docs/Dev Environment Setup Guide/Connect to Remote SSH Host.gif deleted file mode 100644 index 3d644dd..0000000 Binary files a/docs/Dev Environment Setup Guide/Connect to Remote SSH Host.gif and /dev/null differ diff --git a/docs/Dev Environment Setup Guide/Open Repo.gif b/docs/Dev Environment Setup Guide/Open Repo.gif deleted file mode 100644 index 08cd8e3..0000000 Binary files a/docs/Dev Environment Setup Guide/Open Repo.gif and /dev/null differ diff --git a/docs/Dev Environment Setup Guide/Remote Folder Open.png b/docs/Dev Environment Setup Guide/Remote Folder Open.png deleted file mode 100644 index 6a53201..0000000 Binary files a/docs/Dev Environment Setup Guide/Remote Folder Open.png and /dev/null differ diff --git a/docs/Dev Environment Setup Guide/Remote SSH Icon.png b/docs/Dev Environment Setup Guide/Remote SSH Icon.png deleted file mode 100644 index 32f210c..0000000 Binary files a/docs/Dev Environment Setup Guide/Remote SSH Icon.png and /dev/null differ diff --git a/docs/Dev Environment Setup Guide/VS Code Select Platform.png b/docs/Dev Environment Setup Guide/VS Code Select Platform.png deleted file mode 100644 index f69c3ed..0000000 Binary files a/docs/Dev Environment Setup Guide/VS Code Select Platform.png and /dev/null differ diff --git a/docs/Example GIF/Example GIF.gif b/docs/Example GIF/Example GIF.gif deleted file mode 100644 index d1fea10..0000000 Binary files a/docs/Example GIF/Example GIF.gif and /dev/null differ diff --git a/docs/GitHub Reference Resources/Conversational UI 2020-10-09 at 12.19.39 PM.png b/docs/GitHub Reference Resources/Conversational UI 2020-10-09 at 12.19.39 PM.png deleted file mode 100644 index 2983594..0000000 Binary files a/docs/GitHub Reference Resources/Conversational UI 2020-10-09 at 12.19.39 PM.png and /dev/null differ diff --git a/docs/GitHub Reference Resources/ItemTable w Banded Row.png b/docs/GitHub Reference Resources/ItemTable w Banded Row.png deleted file mode 100644 index 1ea36e3..0000000 Binary files a/docs/GitHub Reference Resources/ItemTable w Banded Row.png and /dev/null differ diff --git a/docs/GitHub Reference Resources/ItemTable w_o Banded Row.png b/docs/GitHub Reference Resources/ItemTable w_o Banded Row.png deleted file mode 100644 index 395a2f2..0000000 Binary files a/docs/GitHub Reference Resources/ItemTable w_o Banded Row.png and /dev/null differ diff --git a/docs/GitHub Reference Resources/No Active State for Sorting Dark.gif b/docs/GitHub Reference Resources/No Active State for Sorting Dark.gif deleted file mode 100644 index aad0fc1..0000000 Binary files a/docs/GitHub Reference Resources/No Active State for Sorting Dark.gif and /dev/null differ diff --git a/docs/GitHub Reference Resources/No Active State for Sorting.gif b/docs/GitHub Reference Resources/No Active State for Sorting.gif deleted file mode 100644 index 8e150ec..0000000 Binary files a/docs/GitHub Reference Resources/No Active State for Sorting.gif and /dev/null differ diff --git a/docs/GitHub Reference Resources/react-table UI 2020-10-09 at 11.49.02 AM.png b/docs/GitHub Reference Resources/react-table UI 2020-10-09 at 11.49.02 AM.png deleted file mode 100644 index 7e3971f..0000000 Binary files a/docs/GitHub Reference Resources/react-table UI 2020-10-09 at 11.49.02 AM.png and /dev/null differ diff --git a/docs/Hide Scroll Bars/No Scrollbars.png b/docs/Hide Scroll Bars/No Scrollbars.png deleted file mode 100644 index f1977ec..0000000 Binary files a/docs/Hide Scroll Bars/No Scrollbars.png and /dev/null differ diff --git a/docs/Hide Scroll Bars/Scrollbars.png b/docs/Hide Scroll Bars/Scrollbars.png deleted file mode 100644 index 3acbe12..0000000 Binary files a/docs/Hide Scroll Bars/Scrollbars.png and /dev/null differ diff --git a/docs/ItemTable Responsive Examples/Cell Component override.jpg b/docs/ItemTable Responsive Examples/Cell Component override.jpg deleted file mode 100644 index bd8afcb..0000000 Binary files a/docs/ItemTable Responsive Examples/Cell Component override.jpg and /dev/null differ diff --git a/docs/ItemTable Responsive Examples/Default ItemTable behavior.jpg b/docs/ItemTable Responsive Examples/Default ItemTable behavior.jpg deleted file mode 100644 index 842bece..0000000 Binary files a/docs/ItemTable Responsive Examples/Default ItemTable behavior.jpg and /dev/null differ diff --git a/docs/ItemTable Responsive Examples/Row Component override example.jpg b/docs/ItemTable Responsive Examples/Row Component override example.jpg deleted file mode 100644 index 221dc18..0000000 Binary files a/docs/ItemTable Responsive Examples/Row Component override example.jpg and /dev/null differ diff --git a/docs/ItemTable Responsive Examples/mui-datatables example.gif b/docs/ItemTable Responsive Examples/mui-datatables example.gif deleted file mode 100644 index db42e7d..0000000 Binary files a/docs/ItemTable Responsive Examples/mui-datatables example.gif and /dev/null differ diff --git a/docs/ItemView Annimation Examples/Desktop-Animated.gif b/docs/ItemView Annimation Examples/Desktop-Animated.gif deleted file mode 100644 index 11c0e82..0000000 Binary files a/docs/ItemView Annimation Examples/Desktop-Animated.gif and /dev/null differ diff --git a/docs/ItemView Annimation Examples/Desktop-Non-Animated.gif b/docs/ItemView Annimation Examples/Desktop-Non-Animated.gif deleted file mode 100644 index 146cb93..0000000 Binary files a/docs/ItemView Annimation Examples/Desktop-Non-Animated.gif and /dev/null differ diff --git a/docs/ItemView Annimation Examples/Mobile-Animated.gif b/docs/ItemView Annimation Examples/Mobile-Animated.gif deleted file mode 100644 index a3fbe5b..0000000 Binary files a/docs/ItemView Annimation Examples/Mobile-Animated.gif and /dev/null differ diff --git a/docs/ItemView Annimation Examples/Mobile-Non-Animated.gif b/docs/ItemView Annimation Examples/Mobile-Non-Animated.gif deleted file mode 100644 index 7f422fd..0000000 Binary files a/docs/ItemView Annimation Examples/Mobile-Non-Animated.gif and /dev/null differ diff --git a/docs/ItemView Assignment Control/Contact Entry in Gmail.gif b/docs/ItemView Assignment Control/Contact Entry in Gmail.gif deleted file mode 100644 index 20e0863..0000000 Binary files a/docs/ItemView Assignment Control/Contact Entry in Gmail.gif and /dev/null differ diff --git a/docs/ItemView Assignment Control/Current webqueue Assignment.png b/docs/ItemView Assignment Control/Current webqueue Assignment.png deleted file mode 100644 index d42965b..0000000 Binary files a/docs/ItemView Assignment Control/Current webqueue Assignment.png and /dev/null differ diff --git a/docs/ItemViewAppBar displays unexpectedly/ItemTableAppBar Expected Display.png b/docs/ItemViewAppBar displays unexpectedly/ItemTableAppBar Expected Display.png deleted file mode 100644 index bf265d7..0000000 Binary files a/docs/ItemViewAppBar displays unexpectedly/ItemTableAppBar Expected Display.png and /dev/null differ diff --git a/docs/ItemViewAppBar displays unexpectedly/ItemViewAppBar Unexpected Display.png b/docs/ItemViewAppBar displays unexpectedly/ItemViewAppBar Unexpected Display.png deleted file mode 100644 index 84b1964..0000000 Binary files a/docs/ItemViewAppBar displays unexpectedly/ItemViewAppBar Unexpected Display.png and /dev/null differ diff --git a/docs/Overview + Position Behavior/Overflow+Sticky Positioning Intended Behavior.gif b/docs/Overview + Position Behavior/Overflow+Sticky Positioning Intended Behavior.gif deleted file mode 100644 index a820810..0000000 Binary files a/docs/Overview + Position Behavior/Overflow+Sticky Positioning Intended Behavior.gif and /dev/null differ diff --git a/docs/Overview + Position Behavior/Overflow+Sticky Positioning Safari Behavior.gif b/docs/Overview + Position Behavior/Overflow+Sticky Positioning Safari Behavior.gif deleted file mode 100644 index bf82f76..0000000 Binary files a/docs/Overview + Position Behavior/Overflow+Sticky Positioning Safari Behavior.gif and /dev/null differ diff --git a/docs/Section Parsing Formatting.md b/docs/Section Parsing Formatting.md deleted file mode 100644 index e732d98..0000000 --- a/docs/Section Parsing Formatting.md +++ /dev/null @@ -1,400 +0,0 @@ -# Section Parsing Definitions - - - -- [Introduction](#introduction) -- [Directory Information](#directory-information) -- [Initial Message](#initial-message) -- [Edit](#edit) -- [Status](#status) -- [Assignment](#assignment) -- [Reply To User](#reply-to-user) -- [Reply from User](#reply-from-user) -- [Parse Error](#parse-error) - - - -## Introduction -The body of an item is made up of seven distinct actions Below are descriptions of each action, its purpose, behavior, metadata and delimiters. - -## Directory Information -Information about the user such as alias, phone number and office location. This only appears once right after the headers and right before the initial message. This only occurs if the item is submitted through the [Trouble Reporting](https://engineering.purdue.edu/ECN/AboutUs/ContactUs) page. - -### Fields -| Key | Value | -| - | - | -|`type`|`directory_information`| -| `Name` | The real name of the sender. | -| `Login` | The career account alias of the sender. | -| `Computer` | The computer the item is related to. Formatting may vary. | -| `Location` | Where the computer is located. | -| `Email` | The email address of the sender. | -| `Phone` | The phone number of the sender. | -| `Office` | The office location of the sender. | -| `UNIX Dir` | The home directory for the user on non-Windows systems | -| `Zero Dir` | The home directory for the user via Active Directory | -| `User ECNDB` | Link to the sender's username report in ECNDB | -| `Host ECNDB` | Link to the computer report in ECNDB | -| `Subject` | The subject of the email sent to the queue | - -### Delimiters -- **Start**: The second line after the first newline followed by a tab `\n\t`. -- **End**: The first non-empty line after the start that begins with whitespace then "Subject:" - -### Plain Text Example -``` -\tName: Jerry L Guerrero\n - Login: jerry\n" - Computer: x-ee27å0bpc1 (128.46.164.29)\n - Location: EE 270B\n - Email: jerry@purdue.edu\n - Phone: \n - Office: \n - UNIX Dir: /home/pier/c/jerry\n - Zero Dir: U=\\\\pier.ecn.purdue.edu\\jerry\n - User ECNDB: http://eng.purdue.edu/jump/bcafa8\n - Host ECNDB: http://eng.purdue.edu/jump/2dbd461 \n - Subject: Win7 to Win10 Migration List - kevin\n -``` - -### Parsed Example -```jsonc -{ - "type": "directory_information", - "Name": "Jerry L Guerrero", - "Login": "jerry", - "Computer": "x-ee27å0bpc1 (128.46.164.29)", - "Location": "EE 270B", - "Email": "jerry@purdue.edu", - "Phone": "", - "Office": "", - "UNIX Dir": "/home/pier/c/jerry", - "Zero Dir": "U=\\\\pier.ecn.purdue.edu\\jerry", - "User ECNDB": "http://eng.purdue.edu/jump/bcafa8", - "Host ECNDB": "http://eng.purdue.edu/jump/2dbd461", - "Subject": "Win7 to Win10 Migration List - kevin" -} -``` - -## Initial Message -The body of the email the item originated from. This usually appears directly after the headers unless directory information is present. - -### Fields -| Key | Value | -| - | - | -| `type` | `initial_message` | -| `datetime` | RFC 8061 formatted datetime string. | -| `from_name` | The sender's real name. Formatting may vary. This can be empty. | -| `from_email` | The sender's email address. | -| `to` | A list of names(s) and email(s) of people this message was sent to. | -| `cc` | A list of name(s) and email(s) of people who were CC'd. This can be empty. | -| `subject` | The subject of the initial message. | -| `content` | The content of the message as an list of strings. | - -### Delimiters -- **Start**: First newline after directory information if present, otherwise first newline. -- **End**: Beginning of another delimiter if present, otherwise end of file. - -### Plain Text Example -``` -I need some help with something. -``` - -### Parsed Example -```jsonc -{ - "type": "initial_message", - "datetime": "2020-09-11T01:26:45+00:00", - "from_name": "Justin Campbell", - "from_email": "campb303@purdue.edu", - "to": [ - { "name": "John Doe", "email": "johndoe@example.com" }, - ], - "cc": [ - { "name": "", "email": "janesmith@example.com" } - ], - "subject": Maps to item.subject, - "content": [ - "I need some help with something.\n" - ] -} -``` - -## Edit -Information added by someone at ECN, usually for internal use and/or communication. This can occur anywhere in the item after the initial message. - -### Fields -| Key | Value | -| - | - | -| `type` | `edit` | -| `datetime` | RFC 8061 formatted datetime string. | -| `by` | The career account alias of the person who added the edit. | -| `content` | The content of the edit as a list of strings. | - -### Delimiters -- **Start**: Line starting with `*** Edited` -- **End**: Beginning of another delimiter if present, otherwise end of file. - -### Plain Text Example -``` -*** Edited by: knewell at: 04/22/20 16:39:51 *** -This is related to another item. I need to do X next. -``` - -### Parsed Example -```jsonc -{ - "type": "edit", - "datetime": "2020-04-22T16:39:51", - "by": "knewell", - "content": [ - "This is related to another item. I need to do X next.\n" - ] -} -``` - -## Status -A short message about the progress of the item. This can occur anywhere in the item after the initial message. - -### Fields -| Key | Value | -| - | - | -| `type` | `status` | -| `datetime` | RFC 8061 formatted datetime string. | -| `by` | The career account alias of the person who updated the status. | -| `content` | The content of the status as a list of strings. | - - -### Delimiters -- **Start**: Line starting with `*** Status` -- **End**: Beginning of another delimiter if present, otherwise end of file. - -### Plain Text Example -``` -*** Status updated by: knewell at: 4/23/2020 10:35:47 *** -Doing X thing. -``` - -### Parsed Example -```jsonc -{ - "type": "status", - "datetime": "2020-04-23T10:35:47", - "by": "knewell", - "content": [ - "Doing X thing." - ] -} -``` - -## Assignment -Assigning the item to someone. This does not occur in the body of the item. It it tracked in the headers using three different entries: - - -- `Assigned-To-Updated-By`: the career account alias of the person who updated the assignment -- `Assigned-To-Updated-Time`: the time the assignment was updated -- `Assigned-To`: the career account alias of the person the item was assigned to - -### Fields -| Key | Value | -| - | - | -| `type` | `assignment` | -| `datetime` | RFC 8061 formatted datetime string. | -| `by` | The career account alias of the person who changed the |assignment. | -| `to` | The career account alias of the person who the item was assigned to. | - -### Delimiters -N/A - -### Plain Text Example -``` -Assigned-To: campb303 -Assigned-To-Updated-Time: Tue, 23 Jun 2020 13:27:00 EDT -Assigned-To-Updated-By: harley -``` - -### Parsed Example -```jsonc -{ - "type": "assignment", - "datetime": "2020-06-23T13:27:00", - "by": "harley", - "to": "campb303", -} -``` - -## Reply To User -A message from ECN to the user and/or related parties. This can occur anywhere in the item after the initial message. - -### Fields -| Key | Value | -| - | - | -| `type` | `reply_to_user` | -| `datetime` | RFC 8061 formatted datetime string. | -| `by` | The sender's real name. Formatting may vary. This can be empty. | -| `content` | The content of the message as an list of strings | - - -### Delimiters -- **Start**: Line starting with `*** Replied` -- **End**: Beginning of another delimiter if present, otherwise end of file. - -### Plain Text Example -``` -*** Replied by: ewhile at: 05/08/20 09:21:43 *** -Sascha, - -Chicken kevin biltong, flank jowl prosciutto shoulder meatball meatloaf sirloin. - -Ethan White -ECN -``` - -### Parsed Example -```jsonc -{ - "type": "reply_to_user", - "datetime": "2020-05-08T09:21:43", - "by": "ewhile", - "content": [ - "Sascha,\n", - "\n", - "Chicken kevin biltong, flank jowl prosciutto shoulder meatball meatloaf sirloin.\n", - "\n", - "Ethan White\n", - "ECN" - ] -} -``` - -## Reply from User -A message from the user and/or related parties. This is only found after two or more items have been merged together. This can occur anywhere in the item after the initial message. - -### Fields -| Key | Value | -| - | - | -| `type` | `reply_from_user` | -| `datetime` | RFC 8061 formatted datetime string. | -| `from_name` | The sender's real name. Formatting may vary. This can be empty. | -| `from_email` | The sender's email address. | -| `cc` | A list of name(s) and email(s) of people who were CC'd. This can be empty. | -| `headers` | A dictionary of headers from the reply. | -| `subject` | The subject of the reply. | -| `content` | The content of the message as an list of strings | - -### Delimiters: -- **Start**: Line starting with `=== ` -- **End**: Line starting with `====` - -### Plain Text Example -``` -=== Additional information supplied by user === - -Subject: RE: New Computer Deploy -From: "Reckowsky, Michael J." -Date: Fri, 8 May 2020 13:57:17 +0000 - -Ethan, - -Biltong beef ribs doner chuck, pork chop jowl salami cow filet mignon pork. - -Mike -=============================================== -``` - -### Parsed Example -```jsonc -{ - "type": "reply_from_user", - "datetime": "2020-05-08T13:57:18+00:00", - "from_name": "Reckowsky, Michael J.", - "from_email": "mreckowsky@purdue.edu", - "cc": [ - { "name": "John Doe", "email": "johndoe@example.com" }, - { "name": "", "email": "janesmith@example.com" } - ], - "headers" : [ - { - "type": "Subject", - "content": "RE: New Computer Deploy" - }, - { - "type": "From", - "content": "\"Reckowsky, Michael J.\" " - }, - { - "type": "Date", - "content": "Fri, 8 May 2020 13:57:17 +0000" - }, - ], - "subject": "RE: New Computer Deploy", - "content": [ - "Ethan,\n", - "\n", - "Biltong beef ribs doner chuck, pork chop jowl salami cow filet mignon pork.\n", - "\n", - "Mike\n", - ] -} -``` - -## Parse Error -An error caused by unexpected formatting. This is not found in the item but generated when the item is parsed. - -### Fields -| Key | Value | -| - | - | -|`type`|`parse_error`| -| `datetime` | RFC 8061 formatted datetime string. | -| `file_path` | Full path of the item with the error. | -| `expected` | Description of what the parser was expecting. | -| `got` | Line that cause the parse error. | -| `line_num` | The line number in the item that caused the parse error. | - -### Plain Text Example -``` -(item aae2 in qsnapshot) -=== Additional information supplied by user === - -Subject: RE: Help with hardware upgrades -From: "Ezra, Kristopher L" -Date: Wed, 5 Feb 2020 18:11:58 +0000 - -If it makes no difference between windows and linux for the fileserver I'd -rather service a linux machine. - -Considering the switches, i could do 2 8s and 2 16s. Two of the switches -I'm replacing already service 9 connections and I'd rather not daisy chain. -Is there something driving the price here? I see gigabit switches from -tplink on amazon right now for $50. I dont need managed switches or -anything fancy. - -Kris -*** Replied by: emuffley at: 02/05/20 13:22:02 *** - -Kris, - -Thank you on the server operating question. We will kick that off to our linux folks for discussion. - -No daisy chain, agreed. These switches are unmanaged. - -For the workstations, are you wanting Windows, Linux or a mix? - - -Eric Muffley - -Systems Engineer, Engineering Computer Network - -=============================================== -``` -### Parsed Example -```jsonc -{ - "type": "parse_error", - "datetime": "2020-10-16T10:44:45", - "file_path": "/home/pier/e/benne238/webqueue2/q-snapshot/aae/2", - "expected": "Did not encounter a reply_from_user ending delimiter", - "got": "Kris", - "line_num": 468 -} -``` diff --git a/docs/Styleguidist TOC Behavior/with indicator.gif b/docs/Styleguidist TOC Behavior/with indicator.gif deleted file mode 100644 index b7d6898..0000000 Binary files a/docs/Styleguidist TOC Behavior/with indicator.gif and /dev/null differ diff --git a/docs/Styleguidist TOC Behavior/without Indicator.gif b/docs/Styleguidist TOC Behavior/without Indicator.gif deleted file mode 100644 index afb405e..0000000 Binary files a/docs/Styleguidist TOC Behavior/without Indicator.gif and /dev/null differ diff --git a/docs/Summary of State 07.26.20.md b/docs/Summary of State 07.26.20.md deleted file mode 100644 index d57feb6..0000000 --- a/docs/Summary of State 07.26.20.md +++ /dev/null @@ -1,137 +0,0 @@ -# Summary of State -**Date:** Sunday, July 7, 2020 - -## Overview -webqueue2 consists of three parts: - -- The Backend (`api/ECNQueue.py`) -- The API (`api/api.py`) -- The Frontend (Source: `src/ + public/`; Build: `build/`) - -## The Backend -The backend is responsible for interacting with the queue-cli. Because webqueue2 is read-only at this point, that means the backend if responsible for reading and parsing files. - -### What Has Been Done - -### What Needs Doing -- Implement section parsing for the front-end to better display information to ECN staff. - -_Example:_ -``` -Testtest - -*** Status updated by: campb303 at: 6/23/2020 13:26:55 *** -Dont Delete -*** Edited by: campb303 at: 06/23/20 13:27:56 *** - -This be an edit my boy - - - -*** Replied by: campb303 at: 06/23/20 13:28:18 *** - -This be a reply my son - -Justin -ECN - -=== Additional information supplied by user === - -Subject: Re: Beepboop -From: Justin Campbell -Date: Tue, 23 Jun 2020 13:30:45 -0400 -X-ECN-Queue-Original-Path: /home/pier/e/queue/Attachments/inbox/2020-06-23/212-original.txt -X-ECN-Queue-Original-URL: https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-06-23/212-original.txt - -Huzzah! - -=============================================== -``` -would become a list of dictionaries with meta data about each section: -```python -[ - { - "type": "initialMessage", - "content": [ - "Testtest\n" - ] - }, - { - "type": "status", - "updatedBy": "campb303", - "updatedTime": "6/23/2020 01:26 PM", - "content": [ - "Don't Delete" - ] - }, - { - "type": "edit", - "updatedBy": "campb303", - "updatedTime": "06/23/20 01:27 PM", - "content": [ - "This be an edit my boy.\n" - ] - }, - { - "type": "replyToUser", - "sentBy": "campb303", - "sentTime": "06/23/20 01:28 PM", - "content": [ - "This be a reply my son\n", - "\n", - "Justin\n", - "ECN\n" - } -] -``` -- Finish documentation at the Module, Class, and Method levels. -- Implement attachment parsing. - - This might be possible using the `EmailMessage.walk()` function from the `email` module in Python's standard library. -- Implement a metadata only loading function to populate only data needed for the frontend's ItemTable for faster loader when the entire item isn't needed. -- Implement custom JSON parsing for Item and Queue objects for more perfoemant API calls. - - Currently the [`jsonpickle`](https://jsonpickle.github.io/) module is being used. However, this introduces unnecessary bloat to JSON packages by including things that don't need to be sent to the frontend. -- Implement tracking for refiles. - - Refile headers do not track the from/to of when an item is refiled. -- Deal with UnicodeDecodeError in coral104 and others. See ECNQueue configuration section. - - [Similar StackOverflow case](https://stackoverflow.com/questions/35028683/python3-unicodedecodeerror-with-readlines-method) - - [Official docs on error param in builtin open() fucntion](https://docs.python.org/3.7/library/functions.html#open) -- Deal with blank subject on some items. See me 67, uds 14, and ece 47 -- Deal with non-uniform timezones. See getDateReceived.py and the [time standard library](https://docs.python.org/3.7/library/time.html#time.struct_time) - -## The API - -### What Has Been Done - -### What Needs Doing -- Implement a mechanism for controlling the start/stop/restart of gunicorn. Some options include: - 1. **Using the Apache control script** that is interacted with via the captive shell for a web server user on Templeton. This would allow for a seamless start/stop/restart workflow because it is tied into the same actions for Apache. However, this would also require that Apache be restarted for any API change which could disrupt active connections unnecessarily. - 2. **Using user level cron jobs** @reboot to start the service. This doesn't not allow for easy stopping and restarting. - 3. **Using a system wide init system hook** (Templeton using SysV aka init.d.) This could allow for easy start/stop/restart functions and the user could be allowed to interact with webqueue-api init script but no other init script. This option provides the most flexibility. -- Integrate with Purdue Directory service. - -## The Frontend - -### What Has Been Done - -### What Needs Doing -- Implement [`react-table`](https://github.com/tannerlinsley/react-table) based ItemTable for responsive item views. -- Implement queue selection displays -- Implement webpage level authentication accessible to password managers -- Implement queue highlighting -- Implement jump to ticket -- Implement [`react-router`](https://reactrouter.com/) for URL based navigation -- Implement stored user preferences - -## The Project Overall - -### What Has Been Done - -### What Needs Doing -- Implement testing -- Implement automated testing/deployment mechanisms -- Implement update mechanisms -- Automate documentation creating using [Sphinx](https://www.sphinx-doc.org/en/master/) -- For the ItemTable from column: -```javascript -let ItemTable.from = userAlias ? userAlias : userName -``` \ No newline at end of file diff --git a/docs/Testing Best Practices.md b/docs/Testing Best Practices.md deleted file mode 100644 index 851615b..0000000 --- a/docs/Testing Best Practices.md +++ /dev/null @@ -1,86 +0,0 @@ -# ["Testing Best Practices (Tutorial)" by: Randy Syring](https://www.youtube.com/watch?v=HH20YPp_5WI&feature=youtu.be) -Video resources are available [on GitHub](https://github.com/rsyring/pyweb-flog). - -# Table of Contents - - -- [Introduction](#introduction) -- [Steps to Make Testing an Asset](#steps-to-make-testing-an-asset) -- [Just Get Started](#just-get-started) -- [Explicit Is Better Than Implicit](#explicit-is-better-than-implicit) -- [Make Tests As Close To the "real world" As Possible](#make-tests-as-close-to-the-real-world-as-possible) -- [Refecator Code for Easier Testing](#refecator-code-for-easier-testing) -- [CLI's Can Test Library Code](#clis-can-test-library-code) -- [Test The Unhappy Paths](#test-the-unhappy-paths) -- [External Dependencies Should Be Mocked](#external-dependencies-should-be-mocked) -- [Tests Are Responsible For Setting State](#tests-are-responsible-for-setting-state) -- [Closing Comments](#closing-comments) - - - -## Introduction -- Testing can be an asset, liability or expense. -- Tests are assets when they are easy to run, interpret and respond to. This allows for problems to be dealt with in development before code reaches an end user. -- Tests are liabilities when written poorly, producing false negatives and/or test the wrong things. -- Tests are expenses when they take away from the developer working on actual code. -- Time is money so manual, slow, finnicky tests become money sinks whereas automated, quick, robust tests save money. - -## Steps to Make Testing an Asset -Well formed tests should be: - -**Easy to setup:** -- Make dependencies/requirements clear. This can be done with a setup guide, package manager manifest or script. We do this with pip's `requirements.txt` and npm's `package.json`. -- Make environment requirements clear. This can be done with a setup guide, docker file or script. We do this by developing against the known standard of ECN supported Ubuntu hosts. - -**Easy to run:** -- Make tests accessible. We do this by simplifying test running through automated discovery with pytest and jest. - -**Accesible:** -- Where possible, allow unit and integration testing to be run on the developer's machine. We do not current have these types of test but it is what we need to create. The video details using a set of libraries to allow for browser simulation, API mocking and more. - -**Stateless:** -- The success of tests should not depend on the order they're run. -- Each test should clean up after itself so as to not affect the output of the next test. -- The environment (dev, prod; Win, macOS, Ubuntu) should not affect whether a test passes or fails. Logically, this is limited to supported environments. webqueue2 will cannot run on Windows because gunicorn cannot run on Windows, however, webqueue2 will never run on a Windows host so this is ok. -- Use generators instead of static test data to avoid tests failing due to outdated example data. -- Test should be modular, allowing for as broad or specific of testing as needed. (This debugger break points) - -## Just Get Started -The biggest hurdle to testing is starting. Avoid decision fatigue by testing the low haning fruit. - -## Explicit Is Better Than Implicit -When testing, do not hide errors and prevent hiding where it is the default. - -_Ex:_ Handle exceptions in production code, run tests in debug mode. - -## Make Tests As Close To the "real world" As Possible -Automated testing of web applications often runs at the command line, not a browser. Therefore, browser simulators (discussed in the video) become useful as the simulate working with an application as if you were in the browser -- running JavaScript, using User-Agent strings etc. - -## Refecator Code for Easier Testing -Smaller functions are easier to test than large chunks of code so sepearte logical steps into helper functions. - -- In Python this can be dunder functions like `__getMostRecentHeaderByType()`. -- In React this can be adding common functionality to the `/src/utilities.js` file and importing them for use as needed. - -## CLI's Can Test Library Code -Sometimes it is easier to test library code (which should be context agnostic) by running it via the command line instead of in a particular script. It should behave the same given the right data. - -_Ex:_ Bank transaction software cannot have tests run during production because it would actually move money. Instead, the library could be used to mock tests in development without affecting real systems. - -## Test The Unhappy Paths -"Happy paths" are the paths we expect with well formed input. "Unhappy paths" are everything else. For the program to function the happy paths must work but for the program to be robust the unhappy paths needs to be dealt with as well. - -## External Dependencies Should Be Mocked -If your test depends on something you cannot control, the test environment should not rely on that dependency. Instead, it should mock the behavior of the working external dependency. - -_Ex:_ [fake-smtp](http://nilhcem.com/FakeSMTP/) is a program that mocks an SMTP server. Using this in testing allows for a known working SMTP server that will tell us of the problem is in our code or a non-working production SMTP server. - -## Tests Are Responsible For Setting State -The test, not the environment, should check, set and cleanup state to insure the test is testing what it was written to test. Ex: A previous test was supposed to create an object for a subsequent test to use but fails. Now the subsequent test fails despite because its input is bad, not its logic. - -## Closing Comments -- Thinking in tests is a mindset that takes time to learn. -- Test Driven Development is writing tests for the expected behavior _then_ writing the code to conform to that behavior, modelling to code to fit the test. -- Treat tests like code: write it well and keep it updated, improve tests when possible -- Use test coverage tools to see where tests are applied (codecov.io) -- The best time to start is now. \ No newline at end of file diff --git a/docs/asset-manifest.json b/docs/asset-manifest.json new file mode 100644 index 0000000..853690d --- /dev/null +++ b/docs/asset-manifest.json @@ -0,0 +1,20 @@ +{ + "files": { + "main.js": "./main.5ca4778a5b6f376dfe8d.bundle.js", + "main.js.map": "./main.5ca4778a5b6f376dfe8d.bundle.js.map", + "runtime~main.js": "./runtime~main.5ca4778a5b6f376dfe8d.bundle.js", + "runtime~main.js.map": "./runtime~main.5ca4778a5b6f376dfe8d.bundle.js.map", + "vendors~main.js": "./vendors~main.5ca4778a5b6f376dfe8d.bundle.js", + "vendors~main.js.map": "./vendors~main.5ca4778a5b6f376dfe8d.bundle.js.map", + "iframe.html": "./iframe.html", + "precache-manifest.d25fcb372fc25092b1c78f5276eef19c.js": "./precache-manifest.d25fcb372fc25092b1c78f5276eef19c.js", + "service-worker.js": "./service-worker.js", + "static/media/loading-annimation.gif": "./static/media/loading-annimation.9b818ae3.gif", + "vendors~main.5ca4778a5b6f376dfe8d.bundle.js.LICENSE.txt": "./vendors~main.5ca4778a5b6f376dfe8d.bundle.js.LICENSE.txt" + }, + "entrypoints": [ + "runtime~main.5ca4778a5b6f376dfe8d.bundle.js", + "vendors~main.5ca4778a5b6f376dfe8d.bundle.js", + "main.5ca4778a5b6f376dfe8d.bundle.js" + ] +} \ No newline at end of file diff --git a/docs/favicon.ico b/docs/favicon.ico new file mode 100755 index 0000000..f444752 Binary files /dev/null and b/docs/favicon.ico differ diff --git a/docs/iframe.html b/docs/iframe.html new file mode 100644 index 0000000..a66fed4 --- /dev/null +++ b/docs/iframe.html @@ -0,0 +1,133 @@ +Storybook

No Preview

Sorry, but you either have no stories or none are selected somehow.

  • Please check the Storybook config.
  • Try reloading the page.

If the problem persists, check the browser console, or the terminal you've run Storybook from.

\ No newline at end of file diff --git a/docs/index-maintenance.html b/docs/index-maintenance.html new file mode 100644 index 0000000..9f35883 --- /dev/null +++ b/docs/index-maintenance.html @@ -0,0 +1,67 @@ + + + + + + + + webqueue2 + + + + +
+
+

Under Maintenance

+
+

webqueue2 is having some work done. Please check back later.

+

Mar 14 2021 @ 11:30 PM EDT

+
+
+ + + \ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..600f402 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,55 @@ +Storybook
\ No newline at end of file diff --git a/docs/logo192.png b/docs/logo192.png new file mode 100755 index 0000000..dd78570 Binary files /dev/null and b/docs/logo192.png differ diff --git a/docs/logo512.png b/docs/logo512.png new file mode 100755 index 0000000..ee7a71d Binary files /dev/null and b/docs/logo512.png differ diff --git a/docs/main.5ca4778a5b6f376dfe8d.bundle.js b/docs/main.5ca4778a5b6f376dfe8d.bundle.js new file mode 100644 index 0000000..b97bfa8 --- /dev/null +++ b/docs/main.5ca4778a5b6f376dfe8d.bundle.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{108:function(module,__webpack_exports__,__webpack_require__){"use strict";var _ItemProvider__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(195);__webpack_require__.d(__webpack_exports__,"a",(function(){return _ItemProvider__WEBPACK_IMPORTED_MODULE_0__.a})),__webpack_require__.d(__webpack_exports__,"b",(function(){return _ItemProvider__WEBPACK_IMPORTED_MODULE_0__.b})),__webpack_require__.d(__webpack_exports__,"c",(function(){return _ItemProvider__WEBPACK_IMPORTED_MODULE_0__.c}))},109:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return EmailHeader}));var react=__webpack_require__(0),react_default=__webpack_require__.n(react),useTheme=__webpack_require__(59),makeStyles=__webpack_require__(115),Paper=__webpack_require__(200),Grid=__webpack_require__(1364),Typography=__webpack_require__(97),RelativeTime=__webpack_require__(122),RelativeTime_default=__webpack_require__.n(RelativeTime),components_UserAvatar=__webpack_require__(88).a;function EmailHeader(_ref){var datetime=_ref.datetime,userAlias=_ref.userAlias,from_name=_ref.from_name,from_email=_ref.from_email,to=_ref.to,cc=_ref.cc,theme=Object(useTheme.a)(),classes=Object(makeStyles.a)({paperWrapper:{padding:"".concat(theme.spacing(1),"px ").concat(theme.spacing(2),"px"),margin:"".concat(theme.spacing(1),"px 0"),borderBottomLeftRadius:0,borderBottomRightRadius:0},removeNegativeMargin:{margin:0},secondaryInformation:{backgroundColor:"light"===theme.palette.type?theme.palette.grey[100]:theme.palette.grey[700],margin:"".concat(theme.spacing(1),"px ").concat(-theme.spacing(2),"px ").concat(-theme.spacing(1),"px ").concat(-theme.spacing(2),"px"),padding:"".concat(theme.spacing(1),"px ").concat(theme.spacing(2),"px")}})();function buildEmailNameString(name,email){var emailNameString="",isNotEmpty=function isNotEmpty(value){return""!==value&&null!==value};return isNotEmpty(name)&&(emailNameString+="".concat(name)),isNotEmpty(email)&&(emailNameString+=" <".concat(email,">")),emailNameString}function buildRecipientString(recipients){if(0===recipients.length)return"";var recipientString="";return recipients.map((function(recipient,index){return recipientString+=buildEmailNameString(recipient.name,recipient.email),indexObject(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_Assignment__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"Assignment"})),layoutProps={Template:Template};function MDXContent({components:components,...props}){return Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Meta,{title:"Components/Assignment",component:_Assignment__WEBPACK_IMPORTED_MODULE_3__.a,argTypes:{datetime:{control:{type:"date"}}},mdxType:"Meta"}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("p",null,"Renders a formatted string showing an Item's assignment action."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Canvas,{mdxType:"Canvas"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Story,{name:"Default",args:{datetime:"2020-06-23T13:27:00-0400",by:"campb303",to:"campb303"},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_Assignment__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"Assignment"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_Assignment__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_Assignment__WEBPACK_IMPORTED_MODULE_3__.a,args);defaultStory.storyName="Default",defaultStory.args={datetime:"2020-06-23T13:27:00-0400",by:"campb303",to:"campb303"},defaultStory.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/Assignment",component:_Assignment__WEBPACK_IMPORTED_MODULE_3__.a,argTypes:{datetime:{control:{type:"date"}}},includeStories:["defaultStory"]},mdxStoryNameToKey={Default:"defaultStory"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},1278:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"__page",(function(){return __page}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_AuthProvider__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(145);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;i\n \n \n );\n}\n')),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h2",{id:"hooks"},"Hooks"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("table",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("thead",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("tr",{parentName:"thead"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("th",{parentName:"tr",align:null},"Name"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("th",{parentName:"tr",align:null},"Description"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("th",{parentName:"tr",align:null},"Type"))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("tbody",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("td",{parentName:"tr",align:null},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("inlineCode",{parentName:"td"},"useLogin")),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("td",{parentName:"tr",align:null},"Indicates whether the client is logged in or not."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("td",{parentName:"tr",align:null},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("inlineCode",{parentName:"td"},"boolean"))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("td",{parentName:"tr",align:null},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("inlineCode",{parentName:"td"},"useLoginSetter")),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("td",{parentName:"tr",align:null},"A function to set the login value."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("td",{parentName:"tr",align:null},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("inlineCode",{parentName:"td"},"function"))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("td",{parentName:"tr",align:null},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("inlineCode",{parentName:"td"},"useToken")),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("td",{parentName:"tr",align:null},"The current access token. Will be ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("inlineCode",{parentName:"td"},"null")," if there is no access token."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("td",{parentName:"tr",align:null},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("inlineCode",{parentName:"td"},"String"))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("td",{parentName:"tr",align:null},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("inlineCode",{parentName:"td"},"useLoginSetter")),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("td",{parentName:"tr",align:null},"A function to set the token value."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("td",{parentName:"tr",align:null},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("inlineCode",{parentName:"td"},"function"))))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("p",null,"For an in depth explanation of this pattern, see ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("a",{parentName:"p",href:"https://github.itap.purdue.edu/ECN/webqueue2/issues/15#issuecomment-341",target:"_blank",rel:"nofollow noopener noreferrer"},"this GitHub comment"),"."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h2",{id:"examples"},"Examples"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h3",{id:"use-login-data"},"Use Login Data"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("pre",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("code",{parentName:"pre",className:"language-js"},'// LoginMessage.js\nimport { useLogin } from "./AuthProvider";\n\nexport default function LoginMessage(){\n const loggedIn = useLogin();\n return

The user is {loggedIn ? "" : "not"} logged in.

\n}\n')),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("pre",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("code",{parentName:"pre",className:"language-js"},'// App.js\nimport AuthProvider from "./AuthProvider";\nimport LoginMessage from "./LoginMessage";\n\nexport default function App(){\n return (\n \n \n \n );\n}\n')),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h3",{id:"set-login-data"},"Set Login Data"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("pre",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("code",{parentName:"pre",className:"language-js"},'// LoginButton.js\nimport { useLoginSetter } from "./AuthProvider";\n\nexport default function Login(){\n const setLogin = useLoginSetter();\n\n return \n}\n')),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("pre",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("code",{parentName:"pre",className:"language-js"},'// App.js\nimport AuthProvider from "./AuthProvider";\nimport LoginButton from "./LoginButton";\n\nexport default function App(){\n return (\n \n \n \n );\n}\n')),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h3",{id:"use-token-data"},"Use Token Data"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("pre",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("code",{parentName:"pre",className:"language-js"},'// TokenMessage.js\nimport { useToken } from "./AuthProvider";\n\nexport default function TokenMessage(){\n const token = useToken();\n return

The user\'s token is {token ? token : "empty"}.

\n}\n')),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("pre",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("code",{parentName:"pre",className:"language-js"},'// App.js\nimport AuthProvider from "./AuthProvider";\nimport TokenMessage from "./TokenMessage";\n\nexport default function App(){\n return (\n \n \n \n );\n}\n')),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h3",{id:"set-token-data"},"Set Token Data"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("pre",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("code",{parentName:"pre",className:"language-js"},'// TokenMessage.js\nimport { useTokenSetter } from "./AuthProvider";\n\nexport default function SetTokenButton(){\n const setToken = useTokenSetter();\n const token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";\n return \n}\n')),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("pre",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("code",{parentName:"pre",className:"language-js"},'// App.js\nimport AuthProvider from "./AuthProvider";\nimport SetTokenButton from "./SetTokenButton";\n\nexport default function App(){\n return (\n \n \n \n );\n}\n')))}MDXContent.isMDXComponent=!0;const __page=()=>{throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};const componentMeta={title:"Components/AuthProvider",component:_AuthProvider__WEBPACK_IMPORTED_MODULE_3__.a,includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},1279:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"defaultStory",(function(){return defaultStory}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_DirectoryInformation__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(170);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;iObject(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_DirectoryInformation__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"DirectoryInformation"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_DirectoryInformation__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_DirectoryInformation__WEBPACK_IMPORTED_MODULE_3__.a,args);defaultStory.storyName="Default",defaultStory.args={section:{type:"directory_information",Name:"Heyi Feng",Login:"feng293",Computer:"civil4147pc2.ecn",Location:"HAMP 4147",Email:"feng293@purdue.edu",Phone:"5039154835",Office:"","UNIX Dir":"None","Zero Dir":"U=\\\\myhome.itap.purdue.edu\\myhome\\%username%","User ECNDB":"http://eng.purdue.edu/jump/2e29495","Host ECNDB":"http://eng.purdue.edu/jump/2eccc3f",Subject:"Upgrade system and Abaqus"}},defaultStory.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/DirectoryInformation",component:_DirectoryInformation__WEBPACK_IMPORTED_MODULE_3__.a,argTypes:{section:{control:{type:"object"}}},includeStories:["defaultStory"]},mdxStoryNameToKey={Default:"defaultStory"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},128:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return ItemTableAppBarAction}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__),_material_ui_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(639),_material_ui_core__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(640),_material_ui_core__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(641),_material_ui_icons_CheckBoxOutlineBlank__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(316),_material_ui_icons_CheckBoxOutlineBlank__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(_material_ui_icons_CheckBoxOutlineBlank__WEBPACK_IMPORTED_MODULE_4__);function ItemTableAppBarAction(_ref){var title=_ref.title,onClick=_ref.onClick,icon=_ref.icon;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_1__.a,{title:title,arrow:!0,onClick:onClick,TransitionComponent:_material_ui_core__WEBPACK_IMPORTED_MODULE_2__.a},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_3__.a,{color:"inherit"},icon))}ItemTableAppBarAction.defaultProps={title:"",icon:react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_CheckBoxOutlineBlank__WEBPACK_IMPORTED_MODULE_4___default.a,null)},ItemTableAppBarAction.__docgenInfo={description:"",methods:[],displayName:"ItemTableAppBarAction",props:{title:{defaultValue:{value:'""',computed:!1},type:{name:"string"},required:!1,description:"The title of the action."},icon:{defaultValue:{value:"",computed:!1},type:{name:"node"},required:!1,description:'MUI Icon to go inside an IconButton.'},onClick:{type:{name:"func"},required:!0,description:"Callback for clicking on action."}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/ItemTableAppBarAction/ItemTableAppBarAction.js"]={name:"ItemTableAppBarAction",docgenInfo:ItemTableAppBarAction.__docgenInfo,path:"src/components/ItemTableAppBarAction/ItemTableAppBarAction.js"})},1280:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"basicUsageWOProps",(function(){return basicUsageWOProps})),__webpack_require__.d(__webpack_exports__,"singleSenderAndRecipient",(function(){return singleSenderAndRecipient})),__webpack_require__.d(__webpack_exports__,"toAndCcFields",(function(){return toAndCcFields}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_EmailHeader__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(109);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;iObject(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_EmailHeader__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"EmailHeader"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h3",{id:"single-sender-and-recipient"},"Single Sender and Recipient"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("p",null,"When the ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("inlineCode",{parentName:"p"},"first_name")," prop is passed, the user's avatar is replaced with the first letter of that prop."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Canvas,{mdxType:"Canvas"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Story,{name:"Single Sender and Recipient",args:{datetime:"2020-05-11T13:44:12+0000",from_name:"Di Wang",from_email:"wang2039@purdue.edu"},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_EmailHeader__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"EmailHeader"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h3",{id:"to-and-cc-fields"},"To and Cc Fields"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Canvas,{mdxType:"Canvas"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Story,{name:"To and Cc Fields",args:{datetime:"2020-05-11T13:44:12+0000",from_name:"Di Wang",from_email:"wang2039@purdue.edu",to:[{name:"'cesite@ecn.purdue.edu'",email:"cesite@ecn.purdue.edu"}],cc:[{name:"Zavattieri, Pablo D",email:"zavattie@purdue.edu"}]},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_EmailHeader__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"EmailHeader"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_EmailHeader__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const basicUsageWOProps=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_EmailHeader__WEBPACK_IMPORTED_MODULE_3__.a,args);basicUsageWOProps.storyName="Basic Usage w/o Props",basicUsageWOProps.parameters={storySource:{source:"args => "}};const singleSenderAndRecipient=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_EmailHeader__WEBPACK_IMPORTED_MODULE_3__.a,args);singleSenderAndRecipient.storyName="Single Sender and Recipient",singleSenderAndRecipient.args={datetime:"2020-05-11T13:44:12+0000",from_name:"Di Wang",from_email:"wang2039@purdue.edu"},singleSenderAndRecipient.parameters={storySource:{source:"args => "}};const toAndCcFields=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_EmailHeader__WEBPACK_IMPORTED_MODULE_3__.a,args);toAndCcFields.storyName="To and Cc Fields",toAndCcFields.args={datetime:"2020-05-11T13:44:12+0000",from_name:"Di Wang",from_email:"wang2039@purdue.edu",to:[{name:"'cesite@ecn.purdue.edu'",email:"cesite@ecn.purdue.edu"}],cc:[{name:"Zavattieri, Pablo D",email:"zavattie@purdue.edu"}]},toAndCcFields.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/EmailHeader",component:_EmailHeader__WEBPACK_IMPORTED_MODULE_3__.a,argTypes:{datetime:{control:{type:"date"}}},includeStories:["basicUsageWOProps","singleSenderAndRecipient","toAndCcFields"]},mdxStoryNameToKey={"Basic Usage w/o Props":"basicUsageWOProps","Single Sender and Recipient":"singleSenderAndRecipient","To and Cc Fields":"toAndCcFields"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},1281:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"defaultStory",(function(){return defaultStory})),__webpack_require__.d(__webpack_exports__,"loading",(function(){return loading}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_ItemBodyView__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(134);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;iObject(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemBodyView__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"ItemBodyView"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("p",null,"If you're loading sections asynchronously, you can inidicate loading with the ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("inlineCode",{parentName:"p"},"loading")," prop:"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Canvas,{mdxType:"Canvas"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Story,{name:"Loading",args:{sections:[],loading:!0},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemBodyView__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"ItemBodyView"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_ItemBodyView__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemBodyView__WEBPACK_IMPORTED_MODULE_3__.a,args);defaultStory.storyName="Default",defaultStory.args={sections:[{type:"directory_information",Name:"Heyi Feng",Login:"feng293",Computer:"civil4147pc2.ecn",Location:"HAMP 4147",Email:"feng293@purdue.edu",Phone:"5039154835",Office:"","UNIX Dir":"None","Zero Dir":"U=\\\\myhome.itap.purdue.edu\\myhome\\%username%","User ECNDB":"http://eng.purdue.edu/jump/2e29495","Host ECNDB":"http://eng.purdue.edu/jump/2eccc3f",Subject:"Upgrade system and Abaqus"},{type:"assignment",datetime:"2020-06-23T13:27:00-0400",by:"campb303",to:"campb303"},{type:"initial_message",datetime:"2020-06-23T13:25:51-0400",from_name:"Justin Campbell",user_email:"campb303@purdue.edu",to:[{name:"",email:"cesite@ecn.purdue.edu"}],cc:[],content:["Testtest\n"]},{type:"status",datetime:"2020-06-23T13:26:55",by:"campb303",content:["Dont Delete\n"]},{type:"edit",datetime:"2020-06-23T13:27:56",by:"campb303",content:["This be an edit my boy\n"]},{type:"reply_to_user",datetime:"2020-06-23T13:28:18",by:"campb303",content:["This be a reply my son\n","\n","Justin\n","ECN\n"]},{type:"reply_from_user",datetime:"2020-06-23T13:30:45-0400",from_name:"Justin Campbell",from_email:"campb303@purdue.edu",cc:[],content:["X-ECN-Queue-Original-Path: /home/pier/e/queue/Attachments/inbox/2020-06-23/212-original.txt\n","X-ECN-Queue-Original-URL: https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-06-23/212-original.txt\n","\n","Huzzah!\n"]},{type:"parse_error",datetime:"2021-04-14T13:35:23-0400",file_path:"/home/pier/e/queue/Mail//aae/2",expected:"Did not encounter a reply-from-user ending delimiter",got:"\n",line_num:973}],loading:!1},defaultStory.parameters={storySource:{source:"args => "}};const loading=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemBodyView__WEBPACK_IMPORTED_MODULE_3__.a,args);loading.storyName="Loading",loading.args={sections:[],loading:!0},loading.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/ItemBodyView",component:_ItemBodyView__WEBPACK_IMPORTED_MODULE_3__.a,argTypes:{item:{control:{type:"object"}},loading:{control:{type:"boolean"}}},includeStories:["defaultStory","loading"]},mdxStoryNameToKey={Default:"defaultStory",Loading:"loading"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},1282:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"defaultStory",(function(){return defaultStory}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_ItemHeaderView__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(173);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;i"},{type:"Message-ID",content:"<911CE050-3240-4980-91DD-9C3EBB8DBCF8@purdue.edu>"},{type:"Subject",content:"Beepboop"},{type:"To",content:"cesite@ecn.purdue.edu"},{type:"Content-Type",content:'text/plain; charset="utf-8"'},{type:"X-ECN-Queue-Original-Path",content:"/home/pier/e/queue/Attachments/inbox/2020-06-23/208-original.txt"},{type:"X-ECN-Queue-Original-URL",content:"https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-06-23/208-original.txt"}]},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemHeaderView__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"ItemHeaderView"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_ItemHeaderView__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemHeaderView__WEBPACK_IMPORTED_MODULE_3__.a,args);defaultStory.storyName="Default",defaultStory.args={data:[{type:"Status-Updated-By",content:"campb303"},{type:"Date",content:"Tue, 23 Jun 2020 13:25:51 -0400"},{type:"From",content:"Justin Campbell "},{type:"Message-ID",content:"<911CE050-3240-4980-91DD-9C3EBB8DBCF8@purdue.edu>"},{type:"Subject",content:"Beepboop"},{type:"To",content:"cesite@ecn.purdue.edu"},{type:"Content-Type",content:'text/plain; charset="utf-8"'},{type:"X-ECN-Queue-Original-Path",content:"/home/pier/e/queue/Attachments/inbox/2020-06-23/208-original.txt"},{type:"X-ECN-Queue-Original-URL",content:"https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-06-23/208-original.txt"}]},defaultStory.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/ItemHeaderView",component:_ItemHeaderView__WEBPACK_IMPORTED_MODULE_3__.a,argTypes:{data:{control:{type:"object"}}},includeStories:["defaultStory"]},mdxStoryNameToKey={Default:"defaultStory"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},1283:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"defaultStory",(function(){return defaultStory})),__webpack_require__.d(__webpack_exports__,"lockedItem",(function(){return lockedItem}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_ItemMetadataView__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(133);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;i"},{type:"Subject",content:"Autocad installation"},{type:"To",content:"cesite@ecn.purdue.edu"},{type:"Content-Type",content:'text/plain; charset="utf-8"'},{type:"X-ECN-Queue-Original-Path",content:"/home/pier/e/queue/Attachments/inbox/2020-03-16/187-original.txt"},{type:"X-ECN-Queue-Original-URL",content:"https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-03-16/187-original.txt"}],content:[{type:"directory_information",Name:"Nestor Fabian Rodriguez Buitrago",Login:"rodri563",Computer:"ce-205-38 (128.46.205.67)",Location:"HAMP G230",Email:"rodri563@purdue.edu",Phone:"7654766893",Office:"HAMP G230","UNIX Dir":"/home/bridge/b/rodri563","Zero Dir":"U=\\\\bridge.ecn.purdue.edu\\rodri563","User ECNDB":"http://eng.purdue.edu/jump/2e8399a","Host ECNDB":"http://eng.purdue.edu/jump/2e83999",Subject:"Autocad installation"},{type:"initial_message",datetime:"2020-03-16T10:41:10-0400",from_name:"",from_email:"rodri563@purdue.edu",to:[{name:"",email:"cesite@ecn.purdue.edu"}],cc:[],subject:"Autocad installation",content:["I want to know if it's possible to install Autocad on the computer\n","I've been assigned and if it does generates any cost for me or my\n","advisor.\n"]},{type:"reply_to_user",by:"schmid22",datetime:"2020-03-16T10:46:56-0400",content:["Fabian,\n","\n","We have this software and we can push it to your machine. This will not \n","cost anything for you or your advisor. We'll need to know what machine \n","you would like it installed on and we'll need a time when all users will \n","be signed-out. Please let us know.\n","\n","Thanks,\n","\n","Steven\n","ECN\n"]},{type:"status",by:"schmid22",datetime:"2020-03-16T10:48:22-0400",content:["Waiting for reply\n"]},{type:"assignment",datetime:"2020-03-16T10:48:28-0400",by:"schmid22",to:"schmid22"},{type:"edit",by:"jgfranks",datetime:"2020-03-16T10:58:48-0400",content:["User was moving a bunch of files of the c drive. Will push at 11:30.\n"]},{type:"edit",by:"jgfranks",datetime:"2020-03-16T11:58:21-0400",content:["Pushed AutoCad\n"]},{type:"status",by:"jgfranks",datetime:"2020-03-16T11:58:37-0400",content:["Waiting on push\n"]},{type:"assignment",datetime:"2020-03-23T08:09:11-0400",by:"jgfranks",to:"schmid22/jgfranks"},{type:"assignment",datetime:"2020-03-27T11:49:40-0400",by:"harley",to:"schmid22"},{type:"parse_error",datetime:"2021-04-14T18:21:34-0400",file_path:"/home/pier/e/campb303/webqueue2/q-snapshot/ce/10",expected:"Did not encounter a reply-from-user ending delimiter",got:"\n",line_num:346}],isLocked:!1,userEmail:"rodri563@purdue.edu",userName:"",userAlias:"rodri563",assignedTo:"schmid22",subject:"Autocad installation",status:"Fix DNS Issue",priority:"covid",department:"",building:"",dateReceived:"2020-03-16T10:41:10-0400"}},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemMetadataView__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"ItemMetadataView"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("p",null,"If an Item is locked, a warning will be displayed showing this."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Canvas,{mdxType:"Canvas"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Story,{name:"Locked Item",args:{item:{queue:"ce",number:100,lastUpdated:"2020-12-01T19:53:00-0500",headers:[{type:"Merged-Time",content:"2020-06-23T13:31:53-0400"},{type:"Merged-By",content:"campb303"},{type:"QTime",content:"1"},{type:"QTime-Updated-Time",content:"2020-06-23T13:28:50-0400"},{type:"QTime-Updated-By",content:"campb303"},{type:"Time",content:"1"},{type:"Time-Updated-Time",content:"2020-06-23T13:28:50-0400"},{type:"Time-Updated-By",content:"campb303"},{type:"Replied-Time",content:"2020-06-23T13:28:48-0400"},{type:"Replied-By",content:"campb303"},{type:"Edited-Time",content:"2020-06-23T13:27:56-0400"},{type:"Edited-By",content:"campb303"},{type:"QAssigned-To",content:"campb303"},{type:"QAssigned-To-Updated-Time",content:"2020-06-23T13:27:00-0400"},{type:"QAssigned-To-Updated-By",content:"campb303"},{type:"Assigned-To",content:"campb303"},{type:"Assigned-To-Updated-Time",content:"2020-06-23T13:27:00-0400"},{type:"Assigned-To-Updated-By",content:"campb303"},{type:"QStatus",content:"Dont Delete"},{type:"QStatus-Updated-Time",content:"2020-06-23T13:26:55-0400"},{type:"QStatus-Updated-By",content:"campb303"},{type:"Status",content:"Dont Delete"},{type:"Status-Updated-Time",content:"2020-06-23T13:26:55-0400"},{type:"Status-Updated-By",content:"campb303"},{type:"Date",content:"2020-06-23T13:25:51-0400"},{type:"From",content:"Justin Campbell "},{type:"Message-ID",content:"<911CE050-3240-4980-91DD-9C3EBB8DBCF8@purdue.edu>"},{type:"Subject",content:"Beepboop"},{type:"To",content:"cesite@ecn.purdue.edu"},{type:"Content-Type",content:'text/plain; charset="utf-8"'},{type:"X-ECN-Queue-Original-Path",content:"/home/pier/e/queue/Attachments/inbox/2020-06-23/208-original.txt"},{type:"X-ECN-Queue-Original-URL",content:"https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-06-23/208-original.txt"}],content:[{type:"initial_message",datetime:"2020-06-23T13:25:51-0400",from_name:"Justin Campbell",from_email:"campb303@purdue.edu",to:[{name:"",email:"cesite@ecn.purdue.edu"}],cc:[],subject:"Beepboop",content:["Testtest\n"]},{type:"status",by:"campb303",datetime:"2020-06-23T13:26:55-0400",content:["Dont Delete\n"]},{type:"assignment",datetime:"2020-06-23T13:27:00-0400",by:"campb303",to:"campb303"},{type:"edit",by:"campb303",datetime:"2020-06-23T13:27:56-0400",content:["This be an edit my boy\n"]},{type:"reply_to_user",by:"campb303",datetime:"2020-06-23T13:28:18-0400",content:["This be a reply my son\n","\n","Justin\n","ECN\n"]},{type:"reply_from_user",subject:"Re: Beepboop",from_name:"Justin Campbell",from_email:"campb303@purdue.edu",datetime:"2020-06-23T13:30:45-0400",content:["Huzzah!\n"],headers:[{type:"Subject",content:"Re: Beepboop\n"},{type:"From",content:"Justin Campbell \n"},{type:"Date",content:"Tue, 23 Jun 2020 13:30:45 -0400\n"},{type:"X-ECN-Queue-Original-Path",content:"/home/pier/e/queue/Attachments/inbox/2020-06-23/212-original.txt\n"},{type:"X-ECN-Queue-Original-URL",content:"https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-06-23/212-original.txt\n"}]}],isLocked:"ce 100 is locked by knewell using qvi",userEmail:"campb303@purdue.edu",userName:"Justin Campbell",userAlias:"campb303",assignedTo:"campb303",subject:"Beepboop",status:"Dont Delete",priority:"",department:"",building:"",dateReceived:"2020-06-23T13:25:51-0400"}},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemMetadataView__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"ItemMetadataView"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_ItemMetadataView__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemMetadataView__WEBPACK_IMPORTED_MODULE_3__.a,args);defaultStory.storyName="Default",defaultStory.args={item:{queue:"ce",number:10,lastUpdated:"2020-12-01T19:53:00-0500",headers:[{type:"QPriority",content:"covid"},{type:"QPriority-Updated-Time",content:"Fri, 17 Apr 2020 09:43:22 EDT"},{type:"QPriority-Updated-By",content:"schmid22"},{type:"Priority",content:"covid"},{type:"Priority-Updated-Time",content:"Fri, 17 Apr 2020 09:43:22 EDT"},{type:"Priority-Updated-By",content:"schmid22"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"QPriority",content:"covid"},{type:"QPriority-Updated-Time",content:"Fri, 17 Apr 2020 09:43:22 EDT"},{type:"QPriority-Updated-By",content:"schmid22"},{type:"Priority",content:"covid"},{type:"Priority-Updated-Time",content:"Fri, 17 Apr 2020 09:43:22 EDT"},{type:"Priority-Updated-By",content:"schmid22"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"Merged-Time",content:"2020-04-16T16:49:04-0400"},{type:"Merged-By",content:"schmid22"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"QTime",content:"00:02"},{type:"QTime-Updated-Time",content:"2020-04-16T16:00:52-0400"},{type:"QTime-Updated-By",content:"schmid22"},{type:"Time",content:"00:02"},{type:"Time-Updated-Time",content:"2020-04-16T16:00:52-0400"},{type:"Time-Updated-By",content:"schmid22"},{type:"Replied-Time",content:"2020-04-16T16:00:50-0400"},{type:"Replied-By",content:"schmid22"},{type:"Merged-Time",content:"2020-04-16T16:49:04-0400"},{type:"Merged-By",content:"schmid22"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"QTime",content:"00:02"},{type:"QTime-Updated-Time",content:"2020-04-16T16:00:52-0400"},{type:"QTime-Updated-By",content:"schmid22"},{type:"Time",content:"00:02"},{type:"Time-Updated-Time",content:"2020-04-16T16:00:52-0400"},{type:"Time-Updated-By",content:"schmid22"},{type:"Replied-Time",content:"2020-04-16T16:00:50-0400"},{type:"Replied-By",content:"schmid22"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"Merged-Time",content:"2020-04-16T16:49:04-0400"},{type:"Merged-By",content:"schmid22"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"QTime",content:"00:02"},{type:"QTime-Updated-Time",content:"2020-04-16T16:00:52-0400"},{type:"QTime-Updated-By",content:"schmid22"},{type:"Time",content:"00:02"},{type:"Time-Updated-Time",content:"2020-04-16T16:00:52-0400"},{type:"Time-Updated-By",content:"schmid22"},{type:"Replied-Time",content:"2020-04-16T16:00:50-0400"},{type:"Replied-By",content:"schmid22"},{type:"Merged-Time",content:"2020-04-16T16:49:04-0400"},{type:"Merged-By",content:"schmid22"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"QTime",content:"00:02"},{type:"QTime-Updated-Time",content:"2020-04-16T16:00:52-0400"},{type:"QTime-Updated-By",content:"schmid22"},{type:"Time",content:"00:02"},{type:"Time-Updated-Time",content:"2020-04-16T16:00:52-0400"},{type:"Time-Updated-By",content:"schmid22"},{type:"Replied-Time",content:"2020-04-16T16:00:50-0400"},{type:"Replied-By",content:"schmid22"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"QTime",content:"00:02"},{type:"QTime-Updated-Time",content:"2020-04-16T16:00:52-0400"},{type:"QTime-Updated-By",content:"schmid22"},{type:"Time",content:"00:02"},{type:"Time-Updated-Time",content:"2020-04-16T16:00:52-0400"},{type:"Time-Updated-By",content:"schmid22"},{type:"Replied-Time",content:"2020-04-16T16:00:50-0400"},{type:"Replied-By",content:"schmid22"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"QAssigned-To",content:"schmid22"},{type:"QAssigned-To-Updated-Time",content:"2020-03-27T11:49:40-0400"},{type:"QAssigned-To-Updated-By",content:"harley"},{type:"Assigned-To",content:"schmid22"},{type:"Assigned-To-Updated-Time",content:"2020-03-27T11:49:40-0400"},{type:"Assigned-To-Updated-By",content:"harley"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"Merged-Time",content:"2020-04-16T16:49:04-0400"},{type:"Merged-By",content:"schmid22"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"QTime",content:"00:02"},{type:"QTime-Updated-Time",content:"2020-04-16T16:00:52-0400"},{type:"QTime-Updated-By",content:"schmid22"},{type:"Time",content:"00:02"},{type:"Time-Updated-Time",content:"2020-04-16T16:00:52-0400"},{type:"Time-Updated-By",content:"schmid22"},{type:"Replied-Time",content:"2020-04-16T16:00:50-0400"},{type:"Replied-By",content:"schmid22"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"QTime",content:"00:02"},{type:"QTime-Updated-Time",content:"2020-04-16T16:00:52-0400"},{type:"QTime-Updated-By",content:"schmid22"},{type:"Time",content:"00:02"},{type:"Time-Updated-Time",content:"2020-04-16T16:00:52-0400"},{type:"Time-Updated-By",content:"schmid22"},{type:"Replied-Time",content:"2020-04-16T16:00:50-0400"},{type:"Replied-By",content:"schmid22"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"QAssigned-To",content:"schmid22"},{type:"QAssigned-To-Updated-Time",content:"2020-03-27T11:49:40-0400"},{type:"QAssigned-To-Updated-By",content:"harley"},{type:"Assigned-To",content:"schmid22"},{type:"Assigned-To-Updated-Time",content:"2020-03-27T11:49:40-0400"},{type:"Assigned-To-Updated-By",content:"harley"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"Merged-Time",content:"2020-04-16T16:49:04-0400"},{type:"Merged-By",content:"schmid22"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"Edited-Time",content:"2020-04-10T11:02:17-0400"},{type:"Edited-By",content:"harley"},{type:"QAssigned-To",content:"schmid22"},{type:"QAssigned-To-Updated-Time",content:"2020-03-27T11:49:40-0400"},{type:"QAssigned-To-Updated-By",content:"harley"},{type:"Assigned-To",content:"schmid22"},{type:"Assigned-To-Updated-Time",content:"2020-03-27T11:49:40-0400"},{type:"Assigned-To-Updated-By",content:"harley"},{type:"QStatus",content:"Fix DNS Issue"},{type:"QStatus-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"QStatus-Updated-By",content:"schmid22"},{type:"Status",content:"Fix DNS Issue"},{type:"Status-Updated-Time",content:"2020-04-17T09:40:16-0400"},{type:"Status-Updated-By",content:"schmid22"},{type:"QTime",content:"00:02"},{type:"QTime-Updated-Time",content:"2020-04-16T16:00:52-0400"},{type:"QTime-Updated-By",content:"schmid22"},{type:"Time",content:"00:02"},{type:"Time-Updated-Time",content:"2020-04-16T16:00:52-0400"},{type:"Time-Updated-By",content:"schmid22"},{type:"Replied-Time",content:"2020-04-16T16:00:50-0400"},{type:"Replied-By",content:"schmid22"},{type:"Date",content:"2020-03-16T10:41:10-0400"},{type:"From",content:"rodri563@purdue.edu"},{type:"Message-ID",content:"<20200316104110.31058.1256587335@zeoclient-03.ecn.purdue.edu>"},{type:"Subject",content:"Autocad installation"},{type:"To",content:"cesite@ecn.purdue.edu"},{type:"Content-Type",content:'text/plain; charset="utf-8"'},{type:"X-ECN-Queue-Original-Path",content:"/home/pier/e/queue/Attachments/inbox/2020-03-16/187-original.txt"},{type:"X-ECN-Queue-Original-URL",content:"https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-03-16/187-original.txt"}],content:[{type:"directory_information",Name:"Nestor Fabian Rodriguez Buitrago",Login:"rodri563",Computer:"ce-205-38 (128.46.205.67)",Location:"HAMP G230",Email:"rodri563@purdue.edu",Phone:"7654766893",Office:"HAMP G230","UNIX Dir":"/home/bridge/b/rodri563","Zero Dir":"U=\\\\bridge.ecn.purdue.edu\\rodri563","User ECNDB":"http://eng.purdue.edu/jump/2e8399a","Host ECNDB":"http://eng.purdue.edu/jump/2e83999",Subject:"Autocad installation"},{type:"initial_message",datetime:"2020-03-16T10:41:10-0400",from_name:"",from_email:"rodri563@purdue.edu",to:[{name:"",email:"cesite@ecn.purdue.edu"}],cc:[],subject:"Autocad installation",content:["I want to know if it's possible to install Autocad on the computer\n","I've been assigned and if it does generates any cost for me or my\n","advisor.\n"]},{type:"reply_to_user",by:"schmid22",datetime:"2020-03-16T10:46:56-0400",content:["Fabian,\n","\n","We have this software and we can push it to your machine. This will not \n","cost anything for you or your advisor. We'll need to know what machine \n","you would like it installed on and we'll need a time when all users will \n","be signed-out. Please let us know.\n","\n","Thanks,\n","\n","Steven\n","ECN\n"]},{type:"status",by:"schmid22",datetime:"2020-03-16T10:48:22-0400",content:["Waiting for reply\n"]},{type:"assignment",datetime:"2020-03-16T10:48:28-0400",by:"schmid22",to:"schmid22"},{type:"edit",by:"jgfranks",datetime:"2020-03-16T10:58:48-0400",content:["User was moving a bunch of files of the c drive. Will push at 11:30.\n"]},{type:"edit",by:"jgfranks",datetime:"2020-03-16T11:58:21-0400",content:["Pushed AutoCad\n"]},{type:"status",by:"jgfranks",datetime:"2020-03-16T11:58:37-0400",content:["Waiting on push\n"]},{type:"assignment",datetime:"2020-03-23T08:09:11-0400",by:"jgfranks",to:"schmid22/jgfranks"},{type:"assignment",datetime:"2020-03-27T11:49:40-0400",by:"harley",to:"schmid22"},{type:"parse_error",datetime:"2021-04-14T18:21:34-0400",file_path:"/home/pier/e/campb303/webqueue2/q-snapshot/ce/10",expected:"Did not encounter a reply-from-user ending delimiter",got:"\n",line_num:346}],isLocked:!1,userEmail:"rodri563@purdue.edu",userName:"",userAlias:"rodri563",assignedTo:"schmid22",subject:"Autocad installation",status:"Fix DNS Issue",priority:"covid",department:"",building:"",dateReceived:"2020-03-16T10:41:10-0400"}},defaultStory.parameters={storySource:{source:"args => "}};const lockedItem=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemMetadataView__WEBPACK_IMPORTED_MODULE_3__.a,args);lockedItem.storyName="Locked Item",lockedItem.args={item:{queue:"ce",number:100,lastUpdated:"2020-12-01T19:53:00-0500",headers:[{type:"Merged-Time",content:"2020-06-23T13:31:53-0400"},{type:"Merged-By",content:"campb303"},{type:"QTime",content:"1"},{type:"QTime-Updated-Time",content:"2020-06-23T13:28:50-0400"},{type:"QTime-Updated-By",content:"campb303"},{type:"Time",content:"1"},{type:"Time-Updated-Time",content:"2020-06-23T13:28:50-0400"},{type:"Time-Updated-By",content:"campb303"},{type:"Replied-Time",content:"2020-06-23T13:28:48-0400"},{type:"Replied-By",content:"campb303"},{type:"Edited-Time",content:"2020-06-23T13:27:56-0400"},{type:"Edited-By",content:"campb303"},{type:"QAssigned-To",content:"campb303"},{type:"QAssigned-To-Updated-Time",content:"2020-06-23T13:27:00-0400"},{type:"QAssigned-To-Updated-By",content:"campb303"},{type:"Assigned-To",content:"campb303"},{type:"Assigned-To-Updated-Time",content:"2020-06-23T13:27:00-0400"},{type:"Assigned-To-Updated-By",content:"campb303"},{type:"QStatus",content:"Dont Delete"},{type:"QStatus-Updated-Time",content:"2020-06-23T13:26:55-0400"},{type:"QStatus-Updated-By",content:"campb303"},{type:"Status",content:"Dont Delete"},{type:"Status-Updated-Time",content:"2020-06-23T13:26:55-0400"},{type:"Status-Updated-By",content:"campb303"},{type:"Date",content:"2020-06-23T13:25:51-0400"},{type:"From",content:"Justin Campbell "},{type:"Message-ID",content:"<911CE050-3240-4980-91DD-9C3EBB8DBCF8@purdue.edu>"},{type:"Subject",content:"Beepboop"},{type:"To",content:"cesite@ecn.purdue.edu"},{type:"Content-Type",content:'text/plain; charset="utf-8"'},{type:"X-ECN-Queue-Original-Path",content:"/home/pier/e/queue/Attachments/inbox/2020-06-23/208-original.txt"},{type:"X-ECN-Queue-Original-URL",content:"https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-06-23/208-original.txt"}],content:[{type:"initial_message",datetime:"2020-06-23T13:25:51-0400",from_name:"Justin Campbell",from_email:"campb303@purdue.edu",to:[{name:"",email:"cesite@ecn.purdue.edu"}],cc:[],subject:"Beepboop",content:["Testtest\n"]},{type:"status",by:"campb303",datetime:"2020-06-23T13:26:55-0400",content:["Dont Delete\n"]},{type:"assignment",datetime:"2020-06-23T13:27:00-0400",by:"campb303",to:"campb303"},{type:"edit",by:"campb303",datetime:"2020-06-23T13:27:56-0400",content:["This be an edit my boy\n"]},{type:"reply_to_user",by:"campb303",datetime:"2020-06-23T13:28:18-0400",content:["This be a reply my son\n","\n","Justin\n","ECN\n"]},{type:"reply_from_user",subject:"Re: Beepboop",from_name:"Justin Campbell",from_email:"campb303@purdue.edu",datetime:"2020-06-23T13:30:45-0400",content:["Huzzah!\n"],headers:[{type:"Subject",content:"Re: Beepboop\n"},{type:"From",content:"Justin Campbell \n"},{type:"Date",content:"Tue, 23 Jun 2020 13:30:45 -0400\n"},{type:"X-ECN-Queue-Original-Path",content:"/home/pier/e/queue/Attachments/inbox/2020-06-23/212-original.txt\n"},{type:"X-ECN-Queue-Original-URL",content:"https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-06-23/212-original.txt\n"}]}],isLocked:"ce 100 is locked by knewell using qvi",userEmail:"campb303@purdue.edu",userName:"Justin Campbell",userAlias:"campb303",assignedTo:"campb303",subject:"Beepboop",status:"Dont Delete",priority:"",department:"",building:"",dateReceived:"2020-06-23T13:25:51-0400"}},lockedItem.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/ItemMetadataView",component:_ItemMetadataView__WEBPACK_IMPORTED_MODULE_3__.a,argTypes:{item:{control:{type:"object"}}},includeStories:["defaultStory","lockedItem"]},mdxStoryNameToKey={Default:"defaultStory","Locked Item":"lockedItem"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},1284:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"__page",(function(){return __page}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_ItemProvider__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(195);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;i\n \n \n );\n}\n')),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h2",{id:"hooks"},"Hooks"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("table",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("thead",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("tr",{parentName:"thead"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("th",{parentName:"tr",align:null},"Name"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("th",{parentName:"tr",align:null},"Descrioption"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("th",{parentName:"tr",align:null},"Type"))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("tbody",{parentName:"table"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("td",{parentName:"tr",align:null},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("inlineCode",{parentName:"td"},"useItem")),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("td",{parentName:"tr",align:null},"Returns a reference to the current active Item. Defaults to an empty object."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("td",{parentName:"tr",align:null},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("inlineCode",{parentName:"td"},"Object"))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("tr",{parentName:"tbody"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("td",{parentName:"tr",align:null},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("inlineCode",{parentName:"td"},"useItemSetter")),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("td",{parentName:"tr",align:null},"Returns a callback to set the active Item."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("td",{parentName:"tr",align:null},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("inlineCode",{parentName:"td"},"function"))))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("p",null,"For an in depth explanation of this pattern, see ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("a",{parentName:"p",href:"https://github.itap.purdue.edu/ECN/webqueue2/issues/15#issuecomment-341",target:"_blank",rel:"nofollow noopener noreferrer"},"this GitHub comment"),"."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h2",{id:"examples"},"Examples"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h3",{id:"use-item"},"Use Item"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("pre",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("code",{parentName:"pre",className:"language-js"},'// DisplayItemStatus\nimport { useItem } from "./ItemProvider";\n\nexport default function DisplayItemStatus(){\n const item = useItem();\n return (\n item\n ? `${item.queue} ${item.number}: ${item.status}\n : "No item is active."\n );\n}\n')),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("pre",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("code",{parentName:"pre",className:"language-js"},'// App.js\nimport ItemProviders from "./ItemProvider";\nimport DisplayItemStatus from "./DisplayItemStatus";\n\nexport default function App(){\n return (\n \n \n \n );\n}\n')),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h3",{id:"set-item"},"Set Item"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("pre",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("code",{parentName:"pre",className:"language-js"},'// UpdateItemButton\nimport { useItemSetter } from "./ItemProvider";\n\nexport default function UpdateItemButton(){\n const item = {"queue": "ce", "number": 100, "lastUpdated": "2020-12-01T19:53:00-0500", "headers": [{"type": "Merged-Time", "content": "2020-06-23T13:31:53-0400"}, {"type": "Merged-By", "content": "campb303"}, {"type": "QTime", "content": "1"}, {"type": "QTime-Updated-Time", "content": "2020-06-23T13:28:50-0400"}, {"type": "QTime-Updated-By", "content": "campb303"}, {"type": "Time", "content": "1"}, {"type": "Time-Updated-Time", "content": "2020-06-23T13:28:50-0400"}, {"type": "Time-Updated-By", "content": "campb303"}, {"type": "Replied-Time", "content": "2020-06-23T13:28:48-0400"}, {"type": "Replied-By", "content": "campb303"}, {"type": "Edited-Time", "content": "2020-06-23T13:27:56-0400"}, {"type": "Edited-By", "content": "campb303"}, {"type": "QAssigned-To", "content": "campb303"}, {"type": "QAssigned-To-Updated-Time", "content": "2020-06-23T13:27:00-0400"}, {"type": "QAssigned-To-Updated-By", "content": "campb303"}, {"type": "Assigned-To", "content": "campb303"}, {"type": "Assigned-To-Updated-Time", "content": "2020-06-23T13:27:00-0400"}, {"type": "Assigned-To-Updated-By", "content": "campb303"}, {"type": "QStatus", "content": "Dont Delete"}, {"type": "QStatus-Updated-Time", "content": "2020-06-23T13:26:55-0400"}, {"type": "QStatus-Updated-By", "content": "campb303"}, {"type": "Status", "content": "Dont Delete"}, {"type": "Status-Updated-Time", "content": "2020-06-23T13:26:55-0400"}, {"type": "Status-Updated-By", "content": "campb303"}, {"type": "Date", "content": "2020-06-23T13:25:51-0400"}, {"type": "From", "content": "Justin Campbell "}, {"type": "Message-ID", "content": "<911CE050-3240-4980-91DD-9C3EBB8DBCF8@purdue.edu>"}, {"type": "Subject", "content": "Beepboop"}, {"type": "To", "content": "cesite@ecn.purdue.edu"}, {"type": "Content-Type", "content": "text/plain; charset=\\"utf-8\\""}, {"type": "X-ECN-Queue-Original-Path", "content": "/home/pier/e/queue/Attachments/inbox/2020-06-23/208-original.txt"}, {"type": "X-ECN-Queue-Original-URL", "content": "https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-06-23/208-original.txt"}], "content": [{"type": "initial_message", "datetime": "2020-06-23T13:25:51-0400", "from_name": "Justin Campbell", "from_email": "campb303@purdue.edu", "to": [{"name": "", "email": "cesite@ecn.purdue.edu"}], "cc": [], "subject": "Beepboop", "content": ["Testtest\\n"]}, {"type": "status", "by": "campb303", "datetime": "2020-06-23T13:26:55-0400", "content": ["Dont Delete\\n"]}, {"type": "assignment", "datetime": "2020-06-23T13:27:00-0400", "by": "campb303", "to": "campb303"}, {"type": "edit", "by": "campb303", "datetime": "2020-06-23T13:27:56-0400", "content": ["This be an edit my boy\\n"]}, {"type": "reply_to_user", "by": "campb303", "datetime": "2020-06-23T13:28:18-0400", "content": ["This be a reply my son\\n", "\\n", "Justin\\n", "ECN\\n"]}, {"type": "reply_from_user", "subject": "Re: Beepboop", "from_name": "Justin Campbell", "from_email": "campb303@purdue.edu", "datetime": "2020-06-23T13:30:45-0400", "content": ["Huzzah!\\n"], "headers": [{"type": "Subject", "content": "Re: Beepboop\\n"}, {"type": "From", "content": "Justin Campbell \\n"}, {"type": "Date", "content": "Tue, 23 Jun 2020 13:30:45 -0400\\n"}, {"type": "X-ECN-Queue-Original-Path", "content": "/home/pier/e/queue/Attachments/inbox/2020-06-23/212-original.txt\\n"}, {"type": "X-ECN-Queue-Original-URL", "content": "https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-06-23/212-original.txt\\n"}]}], "isLocked": "ce 100 is locked by knewell using qvi", "userEmail": "campb303@purdue.edu", "userName": "Justin Campbell", "userAlias": "campb303", "assignedTo": "campb303", "subject": "Beepboop", "status": "Dont Delete", "priority": "", "department": "", "building": "", "dateReceived": "2020-06-23T13:25:51-0400"};\n const setItem = useItemSetter();\n return \n}\n')),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("pre",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("code",{parentName:"pre",className:"language-js"},'// App.js\nimport ItemProviders from "./ItemProvider";\nimport UpdateItemButton from "./UpdateItemButton";\n\nexport default function App(){\n return (\n \n \n \n );\n}\n')))}MDXContent.isMDXComponent=!0;const __page=()=>{throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};const componentMeta={title:"Components/ItemProvider",component:_ItemProvider__WEBPACK_IMPORTED_MODULE_3__.a,includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},1285:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"withItems",(function(){return withItems})),__webpack_require__.d(__webpack_exports__,"loading",(function(){return loading}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_ItemTable__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(135);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;iObject(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTable__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"ItemTable"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h3",{id:"loading"},"Loading"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("p",null,"Set the ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("inlineCode",{parentName:"p"},"loading")," prop to true during asynchronous data fetches."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Canvas,{mdxType:"Canvas"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Story,{name:"Loading",args:{data:[],loading:!0},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTable__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"ItemTable"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h3",{id:"selected-styling"},"Selected Styling"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("p",null,"Due to a bug in MUI Table, the ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("inlineCode",{parentName:"p"},"rowCanBeSelected")," prop has been added to control whether rows can be selected. When this is true, rows ca be selected and styled. This this is false, row selection styling is removed.\nSee ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("a",{parentName:"p",href:"https://github.itap.purdue.edu/ECN/webqueue2-frontend/issues/117",target:"_blank",rel:"nofollow noopener noreferrer"},"this GitHub issue")," for more info."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_ItemTable__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const withItems=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTable__WEBPACK_IMPORTED_MODULE_3__.a,args);withItems.storyName="With Items",withItems.args={data:[{queue:"ce",number:9,lastUpdated:"09-11-20 12:14 PM",isLocked:!1,userEmail:"lslusher@purdue.edu",userName:"Slusher, Laura M",userAlias:"lslusher",assignedTo:"bekuma",subject:"RE: New laptop",status:"waiting on reply/time to call",priority:"deploy",department:"che",building:"frny",dateReceived:"2020-03-12T18:07:27+0000"},{queue:"ce",number:42,lastUpdated:"09-11-20 12:14 PM",isLocked:!1,userEmail:"feng293@purdue.edu",userName:"",userAlias:"feng293",assignedTo:"schmid22",subject:"Upgrade system and Abaqus",status:"",priority:"",department:"",building:"",dateReceived:"2020-05-14T10:21:32-0400"},{queue:"ce",number:51,lastUpdated:"09-11-20 12:14 PM",isLocked:!1,userEmail:"jclauso@purdue.edu",userName:"",userAlias:"jclauso",assignedTo:"schmid22",subject:"ECN privileges for future grad student",status:"Waiting for reply",priority:"",department:"",building:"",dateReceived:"2020-05-14T15:03:07-0400"}]},withItems.parameters={storySource:{source:"args => "}};const loading=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTable__WEBPACK_IMPORTED_MODULE_3__.a,args);loading.storyName="Loading",loading.args={data:[],loading:!0},loading.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/ItemTable",component:_ItemTable__WEBPACK_IMPORTED_MODULE_3__.a,argTypes:{items:{control:{type:"object"}},rowCanBeSelected:{control:{type:"boolean"}},loading:{control:{type:"boolean"}}},includeStories:["withItems","loading"]},mdxStoryNameToKey={"With Items":"withItems",Loading:"loading"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},1286:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"defaultStory",(function(){return defaultStory})),__webpack_require__.d(__webpack_exports__,"withActions",(function(){return withActions}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_ItemTableAppBar__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(131),_ItemTableAppBarAction__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(146),_material_ui_icons_Filter1__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(439),_material_ui_icons_Filter1__WEBPACK_IMPORTED_MODULE_5___default=__webpack_require__.n(_material_ui_icons_Filter1__WEBPACK_IMPORTED_MODULE_5__),_material_ui_icons_Filter2__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(440),_material_ui_icons_Filter2__WEBPACK_IMPORTED_MODULE_6___default=__webpack_require__.n(_material_ui_icons_Filter2__WEBPACK_IMPORTED_MODULE_6__);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;iObject(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableAppBar__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"ItemTableAppBar"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("p",null,"Actions can be added to the ItemTableAppBar by passing an array of ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("a",{parentName:"p",href:"/?path=/docs/components-itemtableappbaraction"},"ItemTableAppBarAction")," components to the ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("inlineCode",{parentName:"p"},"action")," prop. They'll be rendered from left to right in the order their passed."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Canvas,{mdxType:"Canvas"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Story,{name:"With Actions",args:{title:"webqueue2",actions:[Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableAppBarAction__WEBPACK_IMPORTED_MODULE_4__.a,{title:"First Action",onClick:_=>alert("You've triggered to the first aciton,"),icon:Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_material_ui_icons_Filter1__WEBPACK_IMPORTED_MODULE_5___default.a,{mdxType:"Filter1Icon"}),mdxType:"ItemTableAppBarAction"}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableAppBarAction__WEBPACK_IMPORTED_MODULE_4__.a,{title:"Second Action",onClick:_=>alert("You've triggered to the second aciton,"),icon:Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_material_ui_icons_Filter2__WEBPACK_IMPORTED_MODULE_6___default.a,{mdxType:"Filter2Icon"}),mdxType:"ItemTableAppBarAction"})]},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableAppBar__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"ItemTableAppBar"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_ItemTableAppBar__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableAppBar__WEBPACK_IMPORTED_MODULE_3__.a,args);defaultStory.storyName="Default",defaultStory.args={title:"webqueue2"},defaultStory.parameters={storySource:{source:"args => "}};const withActions=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableAppBar__WEBPACK_IMPORTED_MODULE_3__.a,args);withActions.storyName="With Actions",withActions.args={title:"webqueue2",actions:[Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableAppBarAction__WEBPACK_IMPORTED_MODULE_4__.a,{title:"First Action",onClick:_=>alert("You've triggered to the first aciton,"),icon:Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_material_ui_icons_Filter1__WEBPACK_IMPORTED_MODULE_5___default.a,null)}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableAppBarAction__WEBPACK_IMPORTED_MODULE_4__.a,{title:"Second Action",onClick:_=>alert("You've triggered to the second aciton,"),icon:Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_material_ui_icons_Filter2__WEBPACK_IMPORTED_MODULE_6___default.a,null)})]},withActions.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/ItemTableAppBar",component:_ItemTableAppBar__WEBPACK_IMPORTED_MODULE_3__.a,includeStories:["defaultStory","withActions"]},mdxStoryNameToKey={Default:"defaultStory","With Actions":"withActions"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},1287:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"defaultStory",(function(){return defaultStory})),__webpack_require__.d(__webpack_exports__,"usedInItemTableAppBar",(function(){return usedInItemTableAppBar}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_ItemTableAppBarAction__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(128),_material_ui_icons_NotificationImportant__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(256),_material_ui_icons_NotificationImportant__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(_material_ui_icons_NotificationImportant__WEBPACK_IMPORTED_MODULE_4__),_ItemTableAppBar__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(253);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;ialert("The British are coming!"),icon:Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_material_ui_icons_NotificationImportant__WEBPACK_IMPORTED_MODULE_4___default.a,{mdxType:"NotificationImportantIcon"})},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableAppBarAction__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"ItemTableAppBarAction"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("p",null,"To use the ItemTableAppBarAction in the ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("a",{parentName:"p",href:"/?path=/docs/components-itemtableappbar"},"ItemTableAppBar"),", put one or more ItemTableAppBarActions in an array and pass that array to the ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("a",{parentName:"p",href:"/?path=/docs/components-itemtableappbar"},"ItemTableAppBar"),"."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Canvas,{mdxType:"Canvas"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Story,{name:"Used In ItemTableAppBar",args:{title:"Alert User",onClick:_=>alert("The British are coming!"),icon:Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_material_ui_icons_NotificationImportant__WEBPACK_IMPORTED_MODULE_4___default.a,{mdxType:"NotificationImportantIcon"})},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableAppBar__WEBPACK_IMPORTED_MODULE_5__.a,{title:"webqueue2",actions:[Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableAppBarAction__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"ItemTableAppBarAction"}))],mdxType:"ItemTableAppBar"}))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_ItemTableAppBarAction__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableAppBarAction__WEBPACK_IMPORTED_MODULE_3__.a,args);defaultStory.storyName="Default",defaultStory.args={title:"Alert User",onClick:_=>alert("The British are coming!"),icon:Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_material_ui_icons_NotificationImportant__WEBPACK_IMPORTED_MODULE_4___default.a,null)},defaultStory.parameters={storySource:{source:"args => "}};const usedInItemTableAppBar=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableAppBar__WEBPACK_IMPORTED_MODULE_5__.a,{title:"webqueue2",actions:[Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableAppBarAction__WEBPACK_IMPORTED_MODULE_3__.a,args)]});usedInItemTableAppBar.storyName="Used In ItemTableAppBar",usedInItemTableAppBar.args={title:"Alert User",onClick:_=>alert("The British are coming!"),icon:Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_material_ui_icons_NotificationImportant__WEBPACK_IMPORTED_MODULE_4___default.a,null)},usedInItemTableAppBar.parameters={storySource:{source:'args => ]} />'}};const componentMeta={title:"Components/ItemTableAppBarAction",component:_ItemTableAppBarAction__WEBPACK_IMPORTED_MODULE_3__.a,includeStories:["defaultStory","usedInItemTableAppBar"]},mdxStoryNameToKey={Default:"defaultStory","Used In ItemTableAppBar":"usedInItemTableAppBar"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},1288:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"defaultStory",(function(){return defaultStory})),__webpack_require__.d(__webpack_exports__,"withForwardedProps",(function(){return withForwardedProps}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_ItemTableCell__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(132);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;iObject(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableCell__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"ItemTableCell"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h2",{id:"forwarded-tablecell-props"},"Forwarded TableCell Props"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("p",null,"Props can be passed to the ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("a",{parentName:"p",href:"https://material-ui.com/api/table-cell/",target:"_blank",rel:"nofollow noopener noreferrer"},"MUI TableCell")," component using the TableCellProps prop."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Canvas,{mdxType:"Canvas"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Story,{name:"With Forwarded props",args:{children:Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("a",{href:"https://www.youtube.com/watch?v=GGjxZY5Ka0g"},"I am small!"),TableCellProps:{size:"small"}},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableCell__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"ItemTableCell"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_ItemTableCell__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableCell__WEBPACK_IMPORTED_MODULE_3__.a,args);defaultStory.storyName="Default",defaultStory.args={children:"Hello, moto!"},defaultStory.parameters={storySource:{source:"args => "}};const withForwardedProps=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableCell__WEBPACK_IMPORTED_MODULE_3__.a,args);withForwardedProps.storyName="With Forwarded props",withForwardedProps.args={children:Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("a",{href:"https://www.youtube.com/watch?v=GGjxZY5Ka0g"},"I am small!"),TableCellProps:{size:"small"}},withForwardedProps.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/ItemTableCell",component:_ItemTableCell__WEBPACK_IMPORTED_MODULE_3__.a,includeStories:["defaultStory","withForwardedProps"]},mdxStoryNameToKey={Default:"defaultStory","With Forwarded props":"withForwardedProps"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},1289:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"defaultStory",(function(){return defaultStory}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_ItemTableFilter__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(169);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;iconsole.log("New Value: ",event.target.value)},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableFilter__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"ItemTableFilter"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_ItemTableFilter__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemTableFilter__WEBPACK_IMPORTED_MODULE_3__.a,args);defaultStory.storyName="Default",defaultStory.args={label:"Check console as you type.",onChange:event=>console.log("New Value: ",event.target.value)},defaultStory.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/ItemTableFilter",component:_ItemTableFilter__WEBPACK_IMPORTED_MODULE_3__.a,includeStories:["defaultStory"]},mdxStoryNameToKey={Default:"defaultStory"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},129:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return TimelineActionCard}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__),_material_ui_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(59),_material_ui_core__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(115),_material_ui_core__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(200),_material_ui_core__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(97),clsx__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(6),react_relative_time__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(122),react_relative_time__WEBPACK_IMPORTED_MODULE_6___default=__webpack_require__.n(react_relative_time__WEBPACK_IMPORTED_MODULE_6__);function TimelineActionCard(_ref){var type=_ref.type,datetime=_ref.datetime,by=_ref.by,content=_ref.content,theme=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_1__.a)(),types={edit:{verbage:"added an edit",coloring:theme.palette.edit.main},reply_to_user:{verbage:"replied",coloring:theme.palette.reply_to_user.main},status:{verbage:"updated the status",coloring:theme.palette.status.main}},classes=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_2__.a)({"Paper-root":{overflow:"hidden"},headerColor:{backgroundColor:types[type].coloring},padding:{padding:theme.spacing(1)}})();return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_3__.a,{classes:{root:classes["Paper-root"]}},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",{className:Object(clsx__WEBPACK_IMPORTED_MODULE_5__.a)(classes.headerColor,classes.padding)},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_4__.a,{variant:"body1"},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("b",null,by)," ",types[type].verbage," ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_relative_time__WEBPACK_IMPORTED_MODULE_6___default.a,{value:datetime}))),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",{className:classes.padding},content.map((function(line){return"\n"===line?react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br",null):react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_4__.a,{variant:"body1"},line)}))))}TimelineActionCard.defaultProps={type:"edit"},TimelineActionCard.__docgenInfo={description:"",methods:[],displayName:"TimelineActionCard",props:{type:{defaultValue:{value:'"edit"',computed:!1},type:{name:"enum",value:[{value:'"edit"',computed:!1},{value:'"reply_to_user"',computed:!1}]},required:!1,description:"The type of card to render."},datetime:{type:{name:"string"},required:!0,description:"Any string, number or Date object understood by React Relative Time. See https://github.com/aharshac/react-relative-time#readme."},by:{type:{name:"string"},required:!0,description:"The name of the person who added the action."},content:{type:{name:"array"},required:!0,description:"An array of strings containing the content of the action."}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/TimelineActionCard/TimelineActionCard.js"]={name:"TimelineActionCard",docgenInfo:TimelineActionCard.__docgenInfo,path:"src/components/TimelineActionCard/TimelineActionCard.js"})},1290:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"defaultStory",(function(){return defaultStory}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_ItemView__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(178),_ItemProvider__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(108);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;i{let[isFirstRender,setIsFirstRender]=Object(react__WEBPACK_IMPORTED_MODULE_0__.useState)(!0),setItem=Object(_ItemProvider__WEBPACK_IMPORTED_MODULE_4__.c)();isFirstRender&&(setItem({queue:"ce",number:100,lastUpdated:"2020-12-01T19:53:00-0500",headers:[{type:"Merged-Time",content:"2020-06-23T13:31:53-0400"},{type:"Merged-By",content:"campb303"},{type:"QTime",content:"1"},{type:"QTime-Updated-Time",content:"2020-06-23T13:28:50-0400"},{type:"QTime-Updated-By",content:"campb303"},{type:"Time",content:"1"},{type:"Time-Updated-Time",content:"2020-06-23T13:28:50-0400"},{type:"Time-Updated-By",content:"campb303"},{type:"Replied-Time",content:"2020-06-23T13:28:48-0400"},{type:"Replied-By",content:"campb303"},{type:"Edited-Time",content:"2020-06-23T13:27:56-0400"},{type:"Edited-By",content:"campb303"},{type:"QAssigned-To",content:"campb303"},{type:"QAssigned-To-Updated-Time",content:"2020-06-23T13:27:00-0400"},{type:"QAssigned-To-Updated-By",content:"campb303"},{type:"Assigned-To",content:"campb303"},{type:"Assigned-To-Updated-Time",content:"2020-06-23T13:27:00-0400"},{type:"Assigned-To-Updated-By",content:"campb303"},{type:"QStatus",content:"Dont Delete"},{type:"QStatus-Updated-Time",content:"2020-06-23T13:26:55-0400"},{type:"QStatus-Updated-By",content:"campb303"},{type:"Status",content:"Dont Delete"},{type:"Status-Updated-Time",content:"2020-06-23T13:26:55-0400"},{type:"Status-Updated-By",content:"campb303"},{type:"Date",content:"2020-06-23T13:25:51-0400"},{type:"From",content:"Justin Campbell "},{type:"Message-ID",content:"<911CE050-3240-4980-91DD-9C3EBB8DBCF8@purdue.edu>"},{type:"Subject",content:"Beepboop"},{type:"To",content:"cesite@ecn.purdue.edu"},{type:"Content-Type",content:'text/plain; charset="utf-8"'},{type:"X-ECN-Queue-Original-Path",content:"/home/pier/e/queue/Attachments/inbox/2020-06-23/208-original.txt"},{type:"X-ECN-Queue-Original-URL",content:"https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-06-23/208-original.txt"}],content:[{type:"initial_message",datetime:"2020-06-23T13:25:51-0400",from_name:"Justin Campbell",from_email:"campb303@purdue.edu",to:[{name:"",email:"cesite@ecn.purdue.edu"}],cc:[],subject:"Beepboop",content:["Testtest\n"]},{type:"status",by:"campb303",datetime:"2020-06-23T13:26:55-0400",content:["Dont Delete\n"]},{type:"assignment",datetime:"2020-06-23T13:27:00-0400",by:"campb303",to:"campb303"},{type:"edit",by:"campb303",datetime:"2020-06-23T13:27:56-0400",content:["This be an edit my boy\n"]},{type:"reply_to_user",by:"campb303",datetime:"2020-06-23T13:28:18-0400",content:["This be a reply my son\n","\n","Justin\n","ECN\n"]},{type:"reply_from_user",subject:"Re: Beepboop",from_name:"Justin Campbell",from_email:"campb303@purdue.edu",datetime:"2020-06-23T13:30:45-0400",content:["Huzzah!\n"],headers:[{type:"Subject",content:"Re: Beepboop\n"},{type:"From",content:"Justin Campbell \n"},{type:"Date",content:"Tue, 23 Jun 2020 13:30:45 -0400\n"},{type:"X-ECN-Queue-Original-Path",content:"/home/pier/e/queue/Attachments/inbox/2020-06-23/212-original.txt\n"},{type:"X-ECN-Queue-Original-URL",content:"https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-06-23/212-original.txt\n"}]}],isLocked:"ce 100 is locked by knewell using qvi",userEmail:"campb303@purdue.edu",userName:"Justin Campbell",userAlias:"campb303",assignedTo:"campb303",subject:"Beepboop",status:"Dont Delete",priority:"",department:"",building:"",dateReceived:"2020-06-23T13:25:51-0400"}),setIsFirstRender(!1));let item=Object(_ItemProvider__WEBPACK_IMPORTED_MODULE_4__.b)();return console.log("Item:",item),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(Story,{mdxType:"Story"})}],mdxType:"Meta"}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("p",null,"Combined view of ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("a",{parentName:"p",href:"/?path=/docs/components-itemmetadataview"},"ItemMetadataView"),", ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("a",{parentName:"p",href:"/?path=/docs/components-itemmbodyview"},"ItemBodyView"),", ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("a",{parentName:"p",href:"/?path=/docs/components-itemmbodyview"},"ItemHeaderView")," split between ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("a",{parentName:"p",href:"https://material-ui.com/components/tabs/",target:"_blank",rel:"nofollow noopener noreferrer"},"MUI Tabs"),"."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("p",null,"The component relies of context of the ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("a",{parentName:"p",href:"/?path=/docs/components-itemprovider"},"ItemProvider")," for data."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Canvas,{mdxType:"Canvas"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Story,{name:"Default",args:{queue:"ce",number:100},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemView__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"ItemView"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_ItemView__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemView__WEBPACK_IMPORTED_MODULE_3__.a,args);defaultStory.storyName="Default",defaultStory.args={queue:"ce",number:100},defaultStory.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/ItemView",decorators:[Story=>{let[isFirstRender,setIsFirstRender]=Object(react__WEBPACK_IMPORTED_MODULE_0__.useState)(!0),setItem=Object(_ItemProvider__WEBPACK_IMPORTED_MODULE_4__.c)();isFirstRender&&(setItem({queue:"ce",number:100,lastUpdated:"2020-12-01T19:53:00-0500",headers:[{type:"Merged-Time",content:"2020-06-23T13:31:53-0400"},{type:"Merged-By",content:"campb303"},{type:"QTime",content:"1"},{type:"QTime-Updated-Time",content:"2020-06-23T13:28:50-0400"},{type:"QTime-Updated-By",content:"campb303"},{type:"Time",content:"1"},{type:"Time-Updated-Time",content:"2020-06-23T13:28:50-0400"},{type:"Time-Updated-By",content:"campb303"},{type:"Replied-Time",content:"2020-06-23T13:28:48-0400"},{type:"Replied-By",content:"campb303"},{type:"Edited-Time",content:"2020-06-23T13:27:56-0400"},{type:"Edited-By",content:"campb303"},{type:"QAssigned-To",content:"campb303"},{type:"QAssigned-To-Updated-Time",content:"2020-06-23T13:27:00-0400"},{type:"QAssigned-To-Updated-By",content:"campb303"},{type:"Assigned-To",content:"campb303"},{type:"Assigned-To-Updated-Time",content:"2020-06-23T13:27:00-0400"},{type:"Assigned-To-Updated-By",content:"campb303"},{type:"QStatus",content:"Dont Delete"},{type:"QStatus-Updated-Time",content:"2020-06-23T13:26:55-0400"},{type:"QStatus-Updated-By",content:"campb303"},{type:"Status",content:"Dont Delete"},{type:"Status-Updated-Time",content:"2020-06-23T13:26:55-0400"},{type:"Status-Updated-By",content:"campb303"},{type:"Date",content:"2020-06-23T13:25:51-0400"},{type:"From",content:"Justin Campbell "},{type:"Message-ID",content:"<911CE050-3240-4980-91DD-9C3EBB8DBCF8@purdue.edu>"},{type:"Subject",content:"Beepboop"},{type:"To",content:"cesite@ecn.purdue.edu"},{type:"Content-Type",content:'text/plain; charset="utf-8"'},{type:"X-ECN-Queue-Original-Path",content:"/home/pier/e/queue/Attachments/inbox/2020-06-23/208-original.txt"},{type:"X-ECN-Queue-Original-URL",content:"https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-06-23/208-original.txt"}],content:[{type:"initial_message",datetime:"2020-06-23T13:25:51-0400",from_name:"Justin Campbell",from_email:"campb303@purdue.edu",to:[{name:"",email:"cesite@ecn.purdue.edu"}],cc:[],subject:"Beepboop",content:["Testtest\n"]},{type:"status",by:"campb303",datetime:"2020-06-23T13:26:55-0400",content:["Dont Delete\n"]},{type:"assignment",datetime:"2020-06-23T13:27:00-0400",by:"campb303",to:"campb303"},{type:"edit",by:"campb303",datetime:"2020-06-23T13:27:56-0400",content:["This be an edit my boy\n"]},{type:"reply_to_user",by:"campb303",datetime:"2020-06-23T13:28:18-0400",content:["This be a reply my son\n","\n","Justin\n","ECN\n"]},{type:"reply_from_user",subject:"Re: Beepboop",from_name:"Justin Campbell",from_email:"campb303@purdue.edu",datetime:"2020-06-23T13:30:45-0400",content:["Huzzah!\n"],headers:[{type:"Subject",content:"Re: Beepboop\n"},{type:"From",content:"Justin Campbell \n"},{type:"Date",content:"Tue, 23 Jun 2020 13:30:45 -0400\n"},{type:"X-ECN-Queue-Original-Path",content:"/home/pier/e/queue/Attachments/inbox/2020-06-23/212-original.txt\n"},{type:"X-ECN-Queue-Original-URL",content:"https://engineering.purdue.edu/webqueue/Attachments/inbox/2020-06-23/212-original.txt\n"}]}],isLocked:"ce 100 is locked by knewell using qvi",userEmail:"campb303@purdue.edu",userName:"Justin Campbell",userAlias:"campb303",assignedTo:"campb303",subject:"Beepboop",status:"Dont Delete",priority:"",department:"",building:"",dateReceived:"2020-06-23T13:25:51-0400"}),setIsFirstRender(!1));let item=Object(_ItemProvider__WEBPACK_IMPORTED_MODULE_4__.b)();return console.log("Item:",item),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(Story,null)}],component:_ItemView__WEBPACK_IMPORTED_MODULE_3__.a,includeStories:["defaultStory"]},mdxStoryNameToKey={Default:"defaultStory"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},1291:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"defaultStory",(function(){return defaultStory}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_ItemViewAppBar__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(177);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;inull},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemViewAppBar__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"ItemViewAppBar"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_ItemViewAppBar__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ItemViewAppBar__WEBPACK_IMPORTED_MODULE_3__.a,args);defaultStory.storyName="Default",defaultStory.args={title:"ce 100",setSidebarOpen:_=>null},defaultStory.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/ItemViewAppBar",component:_ItemViewAppBar__WEBPACK_IMPORTED_MODULE_3__.a,includeStories:["defaultStory"]},mdxStoryNameToKey={Default:"defaultStory"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},1292:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"defaultStory",(function(){return defaultStory})),__webpack_require__.d(__webpack_exports__,"_7DaysOld",(function(){return _7DaysOld})),__webpack_require__.d(__webpack_exports__,"_28DaysOld",(function(){return _28DaysOld})),__webpack_require__.d(__webpack_exports__,"withForwardedProps",(function(){return withForwardedProps}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_LastUpdatedCell__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(87);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;iObject(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_LastUpdatedCell__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"LastUpdatedCell"}))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Story,{name:"7 Days Old",args:{time:(_=>{let today=new Date;return(new Date).setDate(today.getDate()-8)})()},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_LastUpdatedCell__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"LastUpdatedCell"}))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Story,{name:"28 Days Old",args:{time:(_=>{let today=new Date;return(new Date).setDate(today.getDate()-29)})()},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_LastUpdatedCell__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"LastUpdatedCell"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h2",{id:"forwarded-itemtablecell-props"},"Forwarded ItemTableCell Props"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("p",null,"Props can be passed to the ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("a",{parentName:"p",href:"/?path=/docs/components-itemtablecell"},"ItemTableCell")," component using the ItemTableCellProps prop."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Canvas,{mdxType:"Canvas"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Story,{name:"With Forwarded props",args:{time:new Date,ItemTableCellProps:{TableCellProps:{size:"small"}}},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_LastUpdatedCell__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"LastUpdatedCell"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_LastUpdatedCell__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_LastUpdatedCell__WEBPACK_IMPORTED_MODULE_3__.a,args);defaultStory.storyName="Default",defaultStory.args={time:new Date},defaultStory.parameters={storySource:{source:"args => "}};const _7DaysOld=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_LastUpdatedCell__WEBPACK_IMPORTED_MODULE_3__.a,args);_7DaysOld.storyName="7 Days Old",_7DaysOld.args={time:(_=>{let today=new Date;return(new Date).setDate(today.getDate()-8)})()},_7DaysOld.parameters={storySource:{source:"args => "}};const _28DaysOld=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_LastUpdatedCell__WEBPACK_IMPORTED_MODULE_3__.a,args);_28DaysOld.storyName="28 Days Old",_28DaysOld.args={time:(_=>{let today=new Date;return(new Date).setDate(today.getDate()-29)})()},_28DaysOld.parameters={storySource:{source:"args => "}};const withForwardedProps=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_LastUpdatedCell__WEBPACK_IMPORTED_MODULE_3__.a,args);withForwardedProps.storyName="With Forwarded props",withForwardedProps.args={time:new Date,ItemTableCellProps:{TableCellProps:{size:"small"}}},withForwardedProps.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/LastUpdatedCell",component:_LastUpdatedCell__WEBPACK_IMPORTED_MODULE_3__.a,includeStories:["defaultStory","_7DaysOld","_28DaysOld","withForwardedProps"]},mdxStoryNameToKey={Default:"defaultStory","7 Days Old":"_7DaysOld","28 Days Old":"_28DaysOld","With Forwarded props":"withForwardedProps"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},1293:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"defaultStory",(function(){return defaultStory})),__webpack_require__.d(__webpack_exports__,"withData",(function(){return withData}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_MessageView__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(130);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;iObject(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_MessageView__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"MessageView"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h1",{id:"with-data"},"With Data"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Canvas,{mdxType:"Canvas"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Story,{name:"With Data",args:{datetime:"2020-04-15T15:45:45+0000",from_name:"Ricksy, Jennifer R",from_email:"jricksy@purdue.edu",to:[{name:"csite@ecn.purdue.edu",email:"csite@ecn.purdue.edu"}],content:['I still can\'t get this to work. And now the "trial" version that I was\n',"using has expired so I can't do anything with a pdf.\n","\n","Jenny\n","\n","Jenny Ricksy\n","Burke Graduate Program Administrator\n","Lyles School of Civil Engineering\n","Ph: 765-494-2436 Fax: 765-494-0395\n","HAMP 1141G\n"]},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_MessageView__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"MessageView"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_MessageView__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_MessageView__WEBPACK_IMPORTED_MODULE_3__.a,args);defaultStory.storyName="Default",defaultStory.parameters={storySource:{source:"args => "}};const withData=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_MessageView__WEBPACK_IMPORTED_MODULE_3__.a,args);withData.storyName="With Data",withData.args={datetime:"2020-04-15T15:45:45+0000",from_name:"Ricksy, Jennifer R",from_email:"jricksy@purdue.edu",to:[{name:"csite@ecn.purdue.edu",email:"csite@ecn.purdue.edu"}],content:['I still can\'t get this to work. And now the "trial" version that I was\n',"using has expired so I can't do anything with a pdf.\n","\n","Jenny\n","\n","Jenny Ricksy\n","Burke Graduate Program Administrator\n","Lyles School of Civil Engineering\n","Ph: 765-494-2436 Fax: 765-494-0395\n","HAMP 1141G\n"]},withData.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/MessageView",component:_MessageView__WEBPACK_IMPORTED_MODULE_3__.a,includeStories:["defaultStory","withData"]},mdxStoryNameToKey={Default:"defaultStory","With Data":"withData"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},1294:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"defaultStory",(function(){return defaultStory}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_ParseError__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(171);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;iObject(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ParseError__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"ParseError"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_ParseError__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_ParseError__WEBPACK_IMPORTED_MODULE_3__.a,args);defaultStory.storyName="Default",defaultStory.args={file_path:"/home/pier/e/campb303/webqueue2/q-snapshot/ce/32",expected:"Did not encounter a reply-from-user ending delimiter",got:"765-869-4032 to assist please?\tThank you\n",line_num:120},defaultStory.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/ParseError",component:_ParseError__WEBPACK_IMPORTED_MODULE_3__.a,includeStories:["defaultStory"]},mdxStoryNameToKey={Default:"defaultStory"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},1295:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"defaultStory",(function(){return defaultStory}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_QueueSelector__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(174);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;inull,value:[{name:"bidc",number_of_items:5},{name:"epics",number_of_items:6},{name:"wang",number_of_items:13}],setValue:()=>null},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_QueueSelector__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"QueueSelector"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_QueueSelector__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_QueueSelector__WEBPACK_IMPORTED_MODULE_3__.a,args);defaultStory.storyName="Default",defaultStory.args={open:!1,setOpen:()=>null,value:[{name:"bidc",number_of_items:5},{name:"epics",number_of_items:6},{name:"wang",number_of_items:13}],setValue:()=>null},defaultStory.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/QueueSelector",component:_QueueSelector__WEBPACK_IMPORTED_MODULE_3__.a,includeStories:["defaultStory"]},mdxStoryNameToKey={Default:"defaultStory"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},1296:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"edit",(function(){return edit})),__webpack_require__.d(__webpack_exports__,"replyToUser",(function(){return replyToUser}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_TimelineActionCard__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(129);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;iObject(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_TimelineActionCard__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"TimelineActionCard"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h1",{id:"reply"},"Reply"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Canvas,{mdxType:"Canvas"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Story,{name:"Reply to User",args:{type:"reply_to_user",datetime:"2020-06-23T13:28:18",by:"campb303",content:["This be a reply my son\n","\n","Justin\n","ECN\n"]},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_TimelineActionCard__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"TimelineActionCard"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_TimelineActionCard__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const edit=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_TimelineActionCard__WEBPACK_IMPORTED_MODULE_3__.a,args);edit.storyName="Edit",edit.args={type:"edit",datetime:"2020-06-23T13:27:56",by:"campb303",content:["This be an edit my boy\n"]},edit.parameters={storySource:{source:"args => "}};const replyToUser=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_TimelineActionCard__WEBPACK_IMPORTED_MODULE_3__.a,args);replyToUser.storyName="Reply to User",replyToUser.args={type:"reply_to_user",datetime:"2020-06-23T13:28:18",by:"campb303",content:["This be a reply my son\n","\n","Justin\n","ECN\n"]},replyToUser.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/TimelineActionCard",component:_TimelineActionCard__WEBPACK_IMPORTED_MODULE_3__.a,argTypes:{datetime:{control:{type:"date"}},content:{control:{type:"object"}}},includeStories:["edit","replyToUser"]},mdxStoryNameToKey={Edit:"edit","Reply to User":"replyToUser"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},1297:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"defaultStory",(function(){return defaultStory}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_TimelineSkeleton__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(172);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;iObject(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_TimelineSkeleton__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"TimelineSkeleton"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_TimelineSkeleton__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_TimelineSkeleton__WEBPACK_IMPORTED_MODULE_3__.a,args);defaultStory.storyName="Default",defaultStory.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/TimelineSkeleton",component:_TimelineSkeleton__WEBPACK_IMPORTED_MODULE_3__.a,includeStories:["defaultStory"]},mdxStoryNameToKey={Default:"defaultStory"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},1298:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"defaultStory",(function(){return defaultStory})),__webpack_require__.d(__webpack_exports__,"withAName",(function(){return withAName})),__webpack_require__.d(__webpack_exports__,"withAnAlias",(function(){return withAnAlias})),__webpack_require__.d(__webpack_exports__,"forwardedProps",(function(){return forwardedProps}));__webpack_require__(0);var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4),_UserAvatar__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(88);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;iObject(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_UserAvatar__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"UserAvatar"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h2",{id:"with-a-name"},"With A Name"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("p",null,"If the ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("inlineCode",{parentName:"p"},"name")," prop is passed, the UserAvatar will display the first letter of the name."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Canvas,{mdxType:"Canvas"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Story,{name:"With A name",args:{name:"Jane Doe"},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_UserAvatar__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"UserAvatar"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h2",{id:"with-an-alias"},"With An Alias"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("p",null,"If you pass a valid career account username, their corresponding picture will be loaded from ECNDB."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("p",null,Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("strong",{parentName:"p"},"Note:")," This is a ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("a",{parentName:"p",href:"https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS",target:"_blank",rel:"nofollow noopener noreferrer"},"CORS")," request and will only work when serving the docs from under engineering.purdue.edu. This means the CORS request will fail in development. You can use ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("a",{parentName:"p",href:"https://chrome.google.com/webstore/detail/moesif-origin-cors-change/digfbfaphojjndkpccljibejjbppifbc",target:"_blank",rel:"nofollow noopener noreferrer"},"this Chrome extension")," or similar to temporarily disable CORS protections."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Canvas,{mdxType:"Canvas"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Story,{name:"With An Alias",args:{alias:"campb303"},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_UserAvatar__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"UserAvatar"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("h2",{id:"forwarded-props"},"Forwarded Props"),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("p",null,"All props not listed in the table below are passed to the underlying ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("a",{parentName:"p",href:"https://material-ui.com/api/avatar/",target:"_blank",rel:"nofollow noopener noreferrer"},"MUI Avatar component"),"."),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Canvas,{mdxType:"Canvas"},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.Story,{name:"Forwarded Props",args:{name:"Jane Doe",variant:"square"},mdxType:"Story"},args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_UserAvatar__WEBPACK_IMPORTED_MODULE_3__.a,_extends({},args,{mdxType:"UserAvatar"})))),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.ArgsTable,{of:_UserAvatar__WEBPACK_IMPORTED_MODULE_3__.a,mdxType:"ArgsTable"}),Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("p",null,"All other props are forwarded to the underlying ",Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)("a",{parentName:"p",href:"https://material-ui.com/api/avatar/",target:"_blank",rel:"nofollow noopener noreferrer"},"MUI Avatar component"),"."))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_UserAvatar__WEBPACK_IMPORTED_MODULE_3__.a,args);defaultStory.storyName="Default",defaultStory.parameters={storySource:{source:"args => "}};const withAName=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_UserAvatar__WEBPACK_IMPORTED_MODULE_3__.a,args);withAName.storyName="With A name",withAName.args={name:"Jane Doe"},withAName.parameters={storySource:{source:"args => "}};const withAnAlias=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_UserAvatar__WEBPACK_IMPORTED_MODULE_3__.a,args);withAnAlias.storyName="With An Alias",withAnAlias.args={alias:"campb303"},withAnAlias.parameters={storySource:{source:"args => "}};const forwardedProps=args=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_UserAvatar__WEBPACK_IMPORTED_MODULE_3__.a,args);forwardedProps.storyName="Forwarded Props",forwardedProps.args={name:"Jane Doe",variant:"square"},forwardedProps.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/UserAvatar",component:_UserAvatar__WEBPACK_IMPORTED_MODULE_3__.a,includeStories:["defaultStory","withAName","withAnAlias","forwardedProps"]},mdxStoryNameToKey={Default:"defaultStory","With A name":"withAName","With An Alias":"withAnAlias","Forwarded Props":"forwardedProps"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(_storybook_addon_docs_blocks__WEBPACK_IMPORTED_MODULE_2__.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__.mdx)(MDXContent,null))},__webpack_exports__.default=componentMeta},130:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return MessageView}));var react=__webpack_require__(0),react_default=__webpack_require__.n(react),useTheme=__webpack_require__(59),makeStyles=__webpack_require__(115),Paper=__webpack_require__(200),Typography=__webpack_require__(97),EmailHeader=__webpack_require__(109),ItemProvider=__webpack_require__(108);function MessageView(_ref){var datetime=_ref.datetime,from_name=_ref.from_name,from_email=_ref.from_email,to=_ref.to,cc=_ref.cc,content=_ref.content,activeItem=Object(ItemProvider.b)(),theme=Object(useTheme.a)(),classes=Object(makeStyles.a)({content:{border:"none",padding:"".concat(theme.spacing(1),"px ").concat(theme.spacing(2),"px ").concat(theme.spacing(2),"px ").concat(theme.spacing(2),"px")}})();return react_default.a.createElement(Paper.a,{classes:{root:classes["Paper-root"]}},react_default.a.createElement(EmailHeader.a,{datetime:datetime,userAlias:activeItem.userAlias,from_name:from_name,from_email:from_email,to:to,cc:cc}),react_default.a.createElement(Paper.a,{variant:"outlined",classes:{root:classes.content}},content.map((function(line){return"\n"===line?react_default.a.createElement("br",null):react_default.a.createElement(Typography.a,{variant:"body1"},line)}))))}MessageView.defaultProps={from_name:"Name Unavailable",userAlias:"Alias Unavailable",datetime:new Date(1970,1,1,0,0,0,0),from_email:"Email Unavailable",to:[],cc:[],content:[]},MessageView.__docgenInfo={description:"",methods:[],displayName:"MessageView",props:{from_name:{defaultValue:{value:'"Name Unavailable"',computed:!1},type:{name:"string"},required:!1,description:"Name of message sender."},userAlias:{defaultValue:{value:'"Alias Unavailable"',computed:!1},required:!1},datetime:{defaultValue:{value:"new Date(1970, 1, 1, 0, 0, 0, 0)",computed:!1},type:{name:"string"},required:!1,description:"Date the message was sent in ISO 8601 format."},from_email:{defaultValue:{value:'"Email Unavailable"',computed:!1},type:{name:"string"},required:!1,description:"Email address of message sender."},to:{defaultValue:{value:"[]",computed:!1},type:{name:"array"},required:!1,description:"Array of people the message was sent to."},cc:{defaultValue:{value:"[]",computed:!1},type:{name:"array"},required:!1,description:"Array of people the message was cc'd to."},content:{defaultValue:{value:"[]",computed:!1},type:{name:"array"},required:!1,description:"The content of the message as an array of line with non-printable characters."}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/MessageView/MessageView.js"]={name:"MessageView",docgenInfo:MessageView.__docgenInfo,path:"src/components/MessageView/MessageView.js"})},1302:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"Template",(function(){return Template})),__webpack_require__.d(__webpack_exports__,"defaultStory",(function(){return defaultStory}));var react=__webpack_require__(0),react_default=__webpack_require__.n(react),esm=__webpack_require__(1),blocks=__webpack_require__(4),defineProperty=__webpack_require__(216),createForOfIteratorHelper=__webpack_require__(622),regenerator=__webpack_require__(43),regenerator_default=__webpack_require__.n(regenerator),asyncToGenerator=__webpack_require__(70),slicedToArray=__webpack_require__(38),useTheme=__webpack_require__(59),makeStyles=__webpack_require__(115),Box=__webpack_require__(1322),Typography=__webpack_require__(97),Paper=__webpack_require__(200),react_router=__webpack_require__(1324),clsx_m=__webpack_require__(6),ItemTableAppBarAction=__webpack_require__(146),Brightness4=__webpack_require__(631),Brightness4_default=__webpack_require__.n(Brightness4),Brightness7=__webpack_require__(632),Brightness7_default=__webpack_require__.n(Brightness7),ExitToApp=__webpack_require__(633),ExitToApp_default=__webpack_require__.n(ExitToApp),ErrorOutline=__webpack_require__(630),ErrorOutline_default=__webpack_require__.n(ErrorOutline),ItemTableAppBar=__webpack_require__(253),components_ItemTable=__webpack_require__(135).a,components_ItemViewAppBar=__webpack_require__(177).a,components_ItemView=__webpack_require__(178).a,QueueSelector=__webpack_require__(174),AuthProvider=__webpack_require__(96),useCookies=__webpack_require__(648);function AppView(_ref){var _makeStyles,setDarkMode=_ref.setDarkMode,_useState=Object(react.useState)(!1),_useState2=Object(slicedToArray.a)(_useState,2),sidebarOpen=_useState2[0],setSidebarOpen=_useState2[1],_useState3=Object(react.useState)([]),_useState4=Object(slicedToArray.a)(_useState3,2),queues=_useState4[0],setQueues=_useState4[1],_useState5=Object(react.useState)([]),_useState6=Object(slicedToArray.a)(_useState5,2),items=_useState6[0],setItems=_useState6[1],_useState7=Object(react.useState)([]),_useState8=Object(slicedToArray.a)(_useState7,2),selectedQueues=_useState8[0],setSelectedQueues=_useState8[1],_useState9=Object(react.useState)(!1),_useState10=Object(slicedToArray.a)(_useState9,2),queueSelectorOpen=_useState10[0],setQueueSelectorOpen=_useState10[1],_useState11=Object(react.useState)(!1),_useState12=Object(slicedToArray.a)(_useState11,2),isLoading=_useState12[0],setIsLoading=_useState12[1],_useState13=Object(react.useState)(!1),_useState14=Object(slicedToArray.a)(_useState13,2),error=_useState14[0],setError=_useState14[1],_useState15=Object(react.useState)({code:"",description:"",message:""}),_useState16=Object(slicedToArray.a)(_useState15,2),errorResponse=_useState16[0],setErrorResponse=_useState16[1],access_token=Object(AuthProvider.c)(),setLogin=Object(AuthProvider.b)(),_useCookies=Object(useCookies.a)(["csrf_refresh_token"]),_useCookies2=Object(slicedToArray.a)(_useCookies,2),removeCookie=(_useCookies2[0],_useCookies2[1]),getQueues=function(){var _ref2=Object(asyncToGenerator.a)(regenerator_default.a.mark((function _callee(_){var queuesToLoad,myHeaders,requestOptions,apiResponse,errorMessageJSON,queueJson;return regenerator_default.a.wrap((function _callee$(_context){for(;;)switch(_context.prev=_context.next){case 0:if(null!==access_token){_context.next=2;break}return _context.abrupt("return",void 0);case 2:if(!queueSelectorOpen){_context.next=4;break}return _context.abrupt("return",void 0);case 4:if(0!==selectedQueues.length){_context.next=7;break}return setQueues([]),_context.abrupt("return",void 0);case 7:return setIsLoading(!0),queuesToLoad="",1===selectedQueues.length?queuesToLoad=selectedQueues[0].name:selectedQueues.forEach((function(queue,index){return queuesToLoad+=0===index?queue.name:"+".concat(queue.name)})),(myHeaders=new Headers).append("Authorization","Bearer ".concat(access_token)),requestOptions={headers:myHeaders},_context.next=15,fetch("".concat(".","/api/data/").concat(queuesToLoad),requestOptions);case 15:if((apiResponse=_context.sent).ok){_context.next=24;break}return console.error("Fetching queues failed. Got code ".concat(apiResponse.status," (").concat(apiResponse.statusText,")")),_context.next=20,apiResponse.json();case 20:return errorMessageJSON=_context.sent,setErrorResponse({code:apiResponse.status,description:apiResponse.statusText,message:errorMessageJSON.message?errorMessageJSON.message:""}),setError(!0),_context.abrupt("return",void 0);case 24:return _context.next=26,apiResponse.json();case 26:queueJson=_context.sent,setQueues(queueJson),setIsLoading(!1);case 29:case"end":return _context.stop()}}),_callee)})));return function getQueues(_x){return _ref2.apply(this,arguments)}}();Object(react.useEffect)((function(_){getQueues()}),[selectedQueues,access_token,queueSelectorOpen]),Object(react.useEffect)((function(_){var _step,tempItems=[],_iterator=Object(createForOfIteratorHelper.a)(queues);try{for(_iterator.s();!(_step=_iterator.n()).done;){var queue=_step.value;tempItems=tempItems.concat(queue.items)}}catch(err){_iterator.e(err)}finally{_iterator.f()}setItems(tempItems)}),[queues]),Object(react.useEffect)((function(_){var timer=setInterval((function(_){getQueues()}),6e4);return function(_){clearInterval(timer)}}),[selectedQueues]);var theme=Object(useTheme.a)(),transitionWidth=theme.transitions.create(["width"],{duration:theme.transitions.duration.enteringScreen,easing:theme.transitions.easing.easeInOut}),classes=Object(makeStyles.a)((_makeStyles={leftCol:{overflow:"auto",width:"100vw",height:"100vh",transition:transitionWidth},rightCol:{overflow:"auto",width:"0",height:"100vh",transition:transitionWidth,scrollbarWidth:0},rightColShift:{overflowY:"auto",width:"100vw",flexShrink:"0",transition:transitionWidth}},Object(defineProperty.a)(_makeStyles,theme.breakpoints.up("md"),{rightColShift:{width:"40vw"}}),Object(defineProperty.a)(_makeStyles,"errorContainer",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",marginTop:theme.spacing(6)}),Object(defineProperty.a)(_makeStyles,"errorIcon",{fontSize:"10rem"}),_makeStyles))(),ErrorMessage=function ErrorMessage(_){return react_default.a.createElement(Box.a,{classes:{root:classes.errorContainer}},react_default.a.createElement(ErrorOutline_default.a,{classes:{root:classes.errorIcon}}),react_default.a.createElement(Typography.a,{align:"center",variant:"h3"},"".concat(errorResponse.message)),react_default.a.createElement(Typography.a,{align:"center",variant:"h5"},"Error Code: ".concat(errorResponse.code," (").concat(errorResponse.description,")")))},darkMode="dark"===theme.palette.type,itemtableappbarActions=[react_default.a.createElement(ItemTableAppBarAction.a,{title:"Turn "+(theme.palette.type?"off":"on")+" dark mode",onClick:function onClick(_){return setDarkMode(!darkMode)},icon:darkMode?react_default.a.createElement(Brightness4_default.a,null):react_default.a.createElement(Brightness7_default.a,null)}),react_default.a.createElement(ItemTableAppBarAction.a,{title:"Logout",onClick:function handleLogout(){setLogin(!1),removeCookie(["csrf_refresh_token"])},icon:react_default.a.createElement(ExitToApp_default.a,null)})];return react_default.a.createElement(Box.a,{component:Paper.a,display:"flex",square:!0,elevation:0},react_default.a.createElement(Box.a,{className:classes.leftCol},react_default.a.createElement(ItemTableAppBar.a,{title:"webqueue2",actions:itemtableappbarActions}),react_default.a.createElement(QueueSelector.a,{open:queueSelectorOpen,setOpen:setQueueSelectorOpen,value:selectedQueues,setValue:setSelectedQueues}),error?react_default.a.createElement(ErrorMessage,null):react_default.a.createElement(components_ItemTable,{data:items,rowCanBeSelected:sidebarOpen,loading:isLoading})),react_default.a.createElement(Box.a,{className:Object(clsx_m.a)(classes.rightCol,sidebarOpen&&classes.rightColShift)},0===items.length?null:react_default.a.createElement(react_router.b,{path:"/:queue/:number",render:function render(_ref3){var match=_ref3.match;return react_default.a.createElement(react_default.a.Fragment,null,react_default.a.createElement(components_ItemViewAppBar,{title:"".concat(match.params.queue," ").concat(match.params.number),setSidebarOpen:setSidebarOpen}),react_default.a.createElement(components_ItemView,{queue:match.params.queue,number:match.params.number}))}})))}function _extends(){return(_extends=Object.assign||function(target){for(var i=1;iObject(esm.mdx)(AppView,_extends({},args,{mdxType:"AppView"})),layoutProps={Template:Template};function MDXContent({components:components,...props}){return Object(esm.mdx)("wrapper",_extends({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),Object(esm.mdx)(blocks.Meta,{title:"Components/AppView",component:AppView,argTypes:{setDarkMode:{table:{disable:!0}}},mdxType:"Meta"}),Object(esm.mdx)("p",null,"The primary view for webqueue2. This is just a container."),Object(esm.mdx)(blocks.Canvas,{mdxType:"Canvas"},Object(esm.mdx)(blocks.Story,{name:"Default",args:{setDarkMode:_=>alert("Use the darkmode toggle in the toolbar above.")},mdxType:"Story"},args=>Object(esm.mdx)(AppView,_extends({},args,{mdxType:"AppView"})))),Object(esm.mdx)(blocks.ArgsTable,{of:AppView,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(esm.mdx)(AppView,args);defaultStory.storyName="Default",defaultStory.args={setDarkMode:_=>alert("Use the darkmode toggle in the toolbar above.")},defaultStory.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/AppView",component:AppView,argTypes:{setDarkMode:{table:{disable:!0}}},includeStories:["defaultStory"]},mdxStoryNameToKey={Default:"defaultStory"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(esm.mdx)(blocks.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(esm.mdx)(MDXContent,null))};__webpack_exports__.default=componentMeta},1304:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"__page",(function(){return __page}));var react=__webpack_require__(0),react_default=__webpack_require__.n(react),esm=__webpack_require__(1),blocks=__webpack_require__(4),objectWithoutProperties=__webpack_require__(322),react_router=__webpack_require__(1324),AuthProvider=__webpack_require__(96);function PrivateRoute(_ref){var children=_ref.children,path=_ref.path,rest=Object(objectWithoutProperties.a)(_ref,["children","path"]),isLoggedIn=Object(AuthProvider.a)();return react_default.a.createElement(react_router.b,Object.assign({path:path},rest),isLoggedIn?children:react_default.a.createElement(react_router.a,{to:"/login"}))}function _extends(){return(_extends=Object.assign||function(target){for(var i=1;i\n \n\n')),Object(esm.mdx)("p",null,"Props other than ",Object(esm.mdx)("inlineCode",{parentName:"p"},"children")," and ",Object(esm.mdx)("inlineCode",{parentName:"p"},"path")," can be passed to the underlying ",Object(esm.mdx)("a",{parentName:"p",href:"https://reactrouter.com/web/api/Route",target:"_blank",rel:"nofollow noopener noreferrer"},"Route component"),"."),Object(esm.mdx)("pre",null,Object(esm.mdx)("code",{parentName:"pre",className:"language-js"},'\n \n\n')),Object(esm.mdx)(blocks.ArgsTable,{of:PrivateRoute,mdxType:"ArgsTable"}),Object(esm.mdx)("p",null,"All other props are passed to the ",Object(esm.mdx)("a",{parentName:"p",href:"https://reactrouter.com/web/api/Route",target:"_blank",rel:"nofollow noopener noreferrer"},"Route component"),"."))}MDXContent.isMDXComponent=!0;const __page=()=>{throw new Error("Docs-only story")};__page.parameters={docsOnly:!0};const componentMeta={title:"Components/PrivateRoute",component:PrivateRoute,includeStories:["__page"]},mdxStoryNameToKey={};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(esm.mdx)(blocks.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(esm.mdx)(MDXContent,null))};__webpack_exports__.default=componentMeta},1305:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"defaultStory",(function(){return defaultStory}));var react=__webpack_require__(0),react_default=__webpack_require__.n(react),esm=__webpack_require__(1),blocks=__webpack_require__(4),useTheme=(__webpack_require__(435),__webpack_require__(59)),makeStyles=__webpack_require__(115),useMediaQuery=__webpack_require__(1376);function CurrentBreakPoint(){var theme=Object(useTheme.a)(),classes=Object(makeStyles.a)({true:{color:theme.palette.success.main},false:{color:theme.palette.error.main}})(),mediaQueries={xs:Object(useMediaQuery.a)(theme.breakpoints.up("xs")),sm:Object(useMediaQuery.a)(theme.breakpoints.up("sm")),md:Object(useMediaQuery.a)(theme.breakpoints.up("md")),lg:Object(useMediaQuery.a)(theme.breakpoints.up("lg")),xl:Object(useMediaQuery.a)(theme.breakpoints.up("xl"))};return react_default.a.createElement("p",{style:{margin:"0px"}},Object.keys(mediaQueries).map((function(key){return react_default.a.createElement("span",{className:mediaQueries[key]?classes.true:classes.false},"".concat(key.toUpperCase(),": ").concat(mediaQueries[key]?"true":"false","\n\n\n\n"))})))}function _extends(){return(_extends=Object.assign||function(target){for(var i=1;iObject(esm.mdx)(CurrentBreakPoint,_extends({},args,{mdxType:"CurrentBreakPoint"})))))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(esm.mdx)(CurrentBreakPoint,args);defaultStory.storyName="Default",defaultStory.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/CurrentBreakpoint",component:CurrentBreakPoint,includeStories:["defaultStory"]},mdxStoryNameToKey={Default:"defaultStory"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(esm.mdx)(blocks.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(esm.mdx)(MDXContent,null))};__webpack_exports__.default=componentMeta},1306:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"defaultStory",(function(){return defaultStory}));var react=__webpack_require__(0),react_default=__webpack_require__.n(react),esm=__webpack_require__(1),blocks=__webpack_require__(4),regenerator=__webpack_require__(43),regenerator_default=__webpack_require__.n(regenerator),asyncToGenerator=__webpack_require__(70),slicedToArray=__webpack_require__(38),useTheme=__webpack_require__(59),makeStyles=__webpack_require__(115),InputAdornment=__webpack_require__(1319),IconButton=__webpack_require__(641),Box=__webpack_require__(1322),Paper=__webpack_require__(200),Avatar=__webpack_require__(1329),Typography=__webpack_require__(97),TextField=__webpack_require__(647),Button=__webpack_require__(1317),Visibility=__webpack_require__(634),Visibility_default=__webpack_require__.n(Visibility),VisibilityOff=__webpack_require__(635),VisibilityOff_default=__webpack_require__.n(VisibilityOff),react_router=__webpack_require__(1324),Alert=__webpack_require__(1326),AuthProvider=__webpack_require__(96),auth=__webpack_require__(323);function LoginForm(){var _useState=Object(react.useState)(""),_useState2=Object(slicedToArray.a)(_useState,2),username=_useState2[0],setUsername=_useState2[1],_useState3=Object(react.useState)(""),_useState4=Object(slicedToArray.a)(_useState3,2),password=_useState4[0],setPassword=_useState4[1],_useState5=Object(react.useState)(!1),_useState6=Object(slicedToArray.a)(_useState5,2),error=_useState6[0],setError=_useState6[1],_useState7=Object(react.useState)(!1),_useState8=Object(slicedToArray.a)(_useState7,2),showPassword=_useState8[0],setShowPassword=_useState8[1],setLogin=Object(AuthProvider.b)(),setToken=Object(AuthProvider.d)(),handleSubmit=function(){var _ref=Object(asyncToGenerator.a)(regenerator_default.a.mark((function _callee(event){var access_token;return regenerator_default.a.wrap((function _callee$(_context){for(;;)switch(_context.prev=_context.next){case 0:return event.preventDefault(),_context.next=3,Object(auth.a)(username,password);case 3:if(access_token=_context.sent){_context.next=7;break}return setError(!0),_context.abrupt("return",!1);case 7:return setLogin(!0),setToken(access_token),_context.abrupt("return",!0);case 10:case"end":return _context.stop()}}),_callee)})));return function handleSubmit(_x){return _ref.apply(this,arguments)}}(),theme=Object(useTheme.a)(),classes=Object(makeStyles.a)({box_root:{background:"linear-gradient(120deg, ".concat(theme.palette.secondary.main,"35 0%, ").concat(theme.palette.primary.main,"15 100%)"),width:"100%",height:"100vh",display:"flex",justifyContent:"center",alignItems:"center"},avatar_root:{padding:theme.spacing(1),width:theme.spacing(10),height:theme.spacing(10)},alert_root:{marginTop:theme.spacing(2)},paper_root:{minWidth:theme.breakpoints.values.sm/2,padding:theme.spacing(3),display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"},button_root:{marginTop:theme.spacing(2)}})();if(Object(AuthProvider.a)())return react_default.a.createElement(react_router.a,{to:"/"});var LoginErrorAlert=function LoginErrorAlert(_){return react_default.a.createElement(Alert.a,{severity:"error",classes:{root:classes.alert_root}},"Username or password is incorrect.")},ViewPasswordToggle=function ViewPasswordToggle(_){return react_default.a.createElement(InputAdornment.a,{position:"end"},react_default.a.createElement(IconButton.a,{"aria-label":"Toggle password visibility.",onClick:function onClick(_){return setShowPassword(!showPassword)},onMouseDown:function onMouseDown(event){return event.preventDefault()}},showPassword?react_default.a.createElement(Visibility_default.a,null):react_default.a.createElement(VisibilityOff_default.a,null)))};return react_default.a.createElement(Box.a,{classes:{root:classes.box_root}},react_default.a.createElement("form",{onSubmit:handleSubmit},react_default.a.createElement(Paper.a,{classes:{root:classes.paper_root}},react_default.a.createElement(Avatar.a,{src:"./logo512.png",classes:{root:classes.avatar_root}}),react_default.a.createElement(Typography.a,{variant:"h4"},"Sign In"),error&&react_default.a.createElement(LoginErrorAlert,null),react_default.a.createElement(TextField.a,{type:"text",id:"username",name:"username",label:"Username",fullWidth:!0,value:username,onChange:function handleUsernameChange(event){return setUsername(event.target.value)},autoFocus:!0,margin:"normal",variant:"outlined"}),react_default.a.createElement(TextField.a,{type:showPassword?"text":"password",id:"password",name:"password",label:"Password",fullWidth:!0,value:password,onChange:function handlePasswordChange(event){return setPassword(event.target.value)},margin:"normal",variant:"outlined",InputProps:{endAdornment:react_default.a.createElement(ViewPasswordToggle,null)}}),react_default.a.createElement(Button.a,{color:"primary",size:"large",variant:"contained",fullWidth:!0,classes:{root:classes.button_root},type:"submit"},"Sign In"))))}function _extends(){return(_extends=Object.assign||function(target){for(var i=1;iObject(esm.mdx)(LoginForm,_extends({},args,{mdxType:"LoginForm"})))),Object(esm.mdx)(blocks.ArgsTable,{of:LoginForm,mdxType:"ArgsTable"}))}MDXContent.isMDXComponent=!0;const defaultStory=args=>Object(esm.mdx)(LoginForm,args);defaultStory.storyName="Default",defaultStory.parameters={storySource:{source:"args => "}};const componentMeta={title:"Components/LoginForm",component:LoginForm,includeStories:["defaultStory"]},mdxStoryNameToKey={Default:"defaultStory"};componentMeta.parameters=componentMeta.parameters||{},componentMeta.parameters.docs={...componentMeta.parameters.docs||{},page:()=>Object(esm.mdx)(blocks.AddContext,{mdxStoryNameToKey:mdxStoryNameToKey,mdxComponentMeta:componentMeta},Object(esm.mdx)(MDXContent,null))};__webpack_exports__.default=componentMeta},131:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return ItemTableAppBar}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__),_material_ui_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(59),_material_ui_core__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(115),_material_ui_core__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(642),_material_ui_core__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(643),_material_ui_core__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(97);__webpack_require__(146);function ItemTableAppBar(_ref){var title=_ref.title,actions=_ref.actions,theme=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_1__.a)(),classes=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_2__.a)((function(theme){return{menuButton:{marginLeft:theme.spacing(2)},title:{flexGrow:"1"}}}))(theme);return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_3__.a,{position:"sticky",elevation:2},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_4__.a,{variant:"dense"},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_5__.a,{variant:"h6",className:classes.title},title),actions)))}ItemTableAppBar.defaultProps={title:"",actions:[]},ItemTableAppBar.__docgenInfo={description:"",methods:[],displayName:"ItemTableAppBar",props:{title:{defaultValue:{value:'""',computed:!1},type:{name:"string"},required:!1,description:"The title of the app bar."},actions:{defaultValue:{value:"[]",computed:!1},type:{name:"arrayOf",value:{name:"custom",raw:"ItemTableAppBarAction"}},required:!1,description:'Array of ItemTableAppBarActions.'}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/ItemTableAppBar/ItemTableAppBar.js"]={name:"ItemTableAppBar",docgenInfo:ItemTableAppBar.__docgenInfo,path:"src/components/ItemTableAppBar/ItemTableAppBar.js"})},132:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return ItemTableCell}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__),_material_ui_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(59),_material_ui_core__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(115),_material_ui_core__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(257);function ItemTableCell(_ref){var children=_ref.children,TableCellProps=_ref.TableCellProps,theme=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_1__.a)(),classes=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_2__.a)({columnBorders:{borderLeftWidth:"1px",borderLeftStyle:"solid",borderColor:"light"===theme.palette.type?theme.palette.grey[300]:theme.palette.grey[500]}})();return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_3__.a,Object.assign({classes:{root:classes.columnBorders}},TableCellProps),children)}ItemTableCell.defaultProps={children:{},TableCellProps:{}},ItemTableCell.__docgenInfo={description:"",methods:[],displayName:"ItemTableCell",props:{children:{defaultValue:{value:"{}",computed:!1},type:{name:"union",value:[{name:"string"},{name:"number"},{name:"element"}]},required:!1,description:"Child object passed to display cell data."},TableCellProps:{defaultValue:{value:"{}",computed:!1},type:{name:"object"},required:!1,description:'Props applied to the TableCell component.'}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/ItemTableCell/ItemTableCell.js"]={name:"ItemTableCell",docgenInfo:ItemTableCell.__docgenInfo,path:"src/components/ItemTableCell/ItemTableCell.js"})},133:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return ItemMetadataView}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__),_material_ui_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(59),_material_ui_core__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(115),_material_ui_core__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(97),_material_ui_lab__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(1326);function ItemMetadataView(_ref){var item=_ref.item,theme=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_1__.a)(),classes=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_2__.a)({verticalSpacing:{marginTop:theme.spacing(1),marginBottom:theme.spacing(1)},removeCardHeaderPadding:{padding:"0"}})();return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,item.isLocked?function LockedAlert(){return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_lab__WEBPACK_IMPORTED_MODULE_4__.a,{severity:"warning"},item.isLocked)}():"",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_3__.a,{variant:"h4",classes:{root:classes.verticalSpacing}},item.subject))}ItemMetadataView.__docgenInfo={description:"",methods:[],displayName:"ItemMetadataView",props:{item:{type:{name:"object"},required:!0,description:"The item to be displayed."}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/ItemMetadataView/ItemMetadataView.js"]={name:"ItemMetadataView",docgenInfo:ItemMetadataView.__docgenInfo,path:"src/components/ItemMetadataView/ItemMetadataView.js"})},134:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return ItemBodyView}));var toConsumableArray=__webpack_require__(321),react=__webpack_require__(0),react_default=__webpack_require__.n(react),TimelineItem=__webpack_require__(1368),TimelineSeparator=__webpack_require__(1369),TimelineDot=__webpack_require__(1370),TimelineConnector=__webpack_require__(1371),TimelineContent=__webpack_require__(1372),Timeline=__webpack_require__(1373),makeStyles=__webpack_require__(115),DirectoryInformation=__webpack_require__(170),Assignment=__webpack_require__(147),TimelineActionCard=__webpack_require__(129),MessageView=__webpack_require__(130),ParseError=__webpack_require__(171),TimelineSkeleton=__webpack_require__(172);function ItemBodyView(_ref){var sections=_ref.sections,loading=_ref.loading,classes=Object(makeStyles.a)((function(){return{"Timeline-root":{padding:"0",marginTop:"0",marginBottom:"0"},"TimelineContent-root":{paddingRight:"0"},"TimelineItem-missingOppositeContent":{"&:before":{content:'""',flex:0,padding:"0"}}}}))(),TimelineItemTemplate=function TimelineItemTemplate(_ref2){var children=_ref2.children;return react_default.a.createElement(TimelineItem.a,{classes:{missingOppositeContent:classes["TimelineItem-missingOppositeContent"]}},react_default.a.createElement(TimelineSeparator.a,null,react_default.a.createElement(TimelineDot.a,null),react_default.a.createElement(TimelineConnector.a,null)),react_default.a.createElement(TimelineContent.a,{classes:{root:classes["TimelineContent-root"]}},children))};return react_default.a.createElement(Timeline.a,{align:"left",classes:{root:classes["Timeline-root"]}},loading?Object(toConsumableArray.a)(Array(3).keys()).map((function(_,index){return react_default.a.createElement(TimelineItemTemplate,{key:index.toString()},react_default.a.createElement(TimelineSkeleton.a,null))})):sections.map((function(section){return react_default.a.createElement(TimelineItemTemplate,null,function generateTimelineItem(section){switch(section.type){case"directory_information":return react_default.a.createElement(DirectoryInformation.a,{section:section});case"initial_message":return react_default.a.createElement(MessageView.a,section);case"edit":case"status":return react_default.a.createElement(TimelineActionCard.a,section);case"assignment":return react_default.a.createElement(Assignment.a,section);case"reply_to_user":return react_default.a.createElement(TimelineActionCard.a,section);case"reply_from_user":return react_default.a.createElement(MessageView.a,section);case"parse_error":return react_default.a.createElement(ParseError.a,section);default:return"No match found for type: ".concat(section.type)}}(section))})))}ItemBodyView.defaultProps={sections:[],loading:!1},ItemBodyView.__docgenInfo={description:"",methods:[],displayName:"ItemBodyView",props:{sections:{defaultValue:{value:"[]",computed:!1},type:{name:"array"},required:!1,description:"Section of an item to display."},loading:{defaultValue:{value:"false",computed:!1},type:{name:"bool"},required:!1,description:"If true, shows loading placeholder."}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/ItemBodyView/ItemBodyView.js"]={name:"ItemBodyView",docgenInfo:ItemBodyView.__docgenInfo,path:"src/components/ItemBodyView/ItemBodyView.js"})},135:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return ItemTable}));var slicedToArray=__webpack_require__(38),react=__webpack_require__(0),react_default=__webpack_require__.n(react),react_table=__webpack_require__(148),useTheme=__webpack_require__(59),makeStyles=__webpack_require__(115),Box=__webpack_require__(1322),TableContainer=__webpack_require__(644),Table=__webpack_require__(645),TableHead=__webpack_require__(1316),TableRow=__webpack_require__(443),TableCell=__webpack_require__(257),Grid=__webpack_require__(1364),ButtonGroup=__webpack_require__(1365),IconButton=__webpack_require__(641),TableBody=__webpack_require__(1318),ArrowUpward=__webpack_require__(1366),ArrowDownward=__webpack_require__(1367),react_router=__webpack_require__(1324),RelativeTime=__webpack_require__(122),RelativeTime_default=__webpack_require__.n(RelativeTime),index_esm=__webpack_require__(442),es=__webpack_require__(636),ItemTableFilter=__webpack_require__(169),ItemTableCell=__webpack_require__(254),components_LastUpdatedCell=__webpack_require__(87).a,loading_annimation=__webpack_require__(626),loading_annimation_default=__webpack_require__.n(loading_annimation);function ItemTable(_ref){var data=_ref.data,rowCanBeSelected=_ref.rowCanBeSelected,loading=_ref.loading,_useState=Object(react.useState)({queue:null,number:null}),_useState2=Object(slicedToArray.a)(_useState,2),selectedRow=_useState2[0],setSelectedRow=_useState2[1],theme=Object(useTheme.a)(),classes=Object(makeStyles.a)({loadingAnnimation:{display:"flex",justifyContent:"center",width:"100%"},hoverBackgroundColor:{"&:hover > *":{backgroundColor:"".concat(theme.palette.primary[200]," !important")}},rowSelected:{backgroundColor:"light"===theme.palette.type?theme.palette.primary[100]:theme.palette.primary[600]},bandedRows:{"&:nth-of-type(even)":{backgroundColor:"light"===theme.palette.type?theme.palette.grey[50]:theme.palette.grey[700]}},VirtualizedTableStyles:{height:"82vh !important",display:"table-row"},tableMargin:{marginTop:theme.spacing(2)},tableHeaderPadding:{paddingBottom:theme.spacing(2)}})(),history=Object(react_router.c)(),columns=react_default.a.useMemo((function(){return[{Header:"Queue",accessor:"queue"},{Header:"Item #",accessor:"number"},{Header:"From",accessor:"user_alias"},{Header:"Assigned To",accessor:"assigned_to"},{Header:"Subject",accessor:"subject"},{Header:"Status",accessor:"status"},{Header:"Priority",accessor:"priority"},{Header:"Last Updated",accessor:"last_updated",sortInverted:!0},{Header:"Department",accessor:"department"},{Header:"Building",accessor:"building"},{Header:"Date Received",accessor:"date_received",sortInverted:!0}]}),[]),tableInstance=Object(react_table.useTable)({columns:columns,data:data,autoResetSortBy:!1,autoResetFilters:!1,defaultColumn:{Filter:function Filter(_ref2){var _ref2$column=_ref2.column,Header=_ref2$column.Header,setFilter=_ref2$column.setFilter;return react_default.a.createElement(ItemTableFilter.a,{label:Header,onChange:function onChange(event){return setFilter(event.target.value)}})}},initialState:{sortBy:[{id:"queue"},{id:"number"},{id:"lastUpdated"}]}},react_table.useFilters,react_table.useFlexLayout,react_table.useSortBy),getTableProps=tableInstance.getTableProps,getTableBodyProps=tableInstance.getTableBodyProps,headerGroups=tableInstance.headerGroups,rows=tableInstance.rows,prepareRow=tableInstance.prepareRow;return loading?react_default.a.createElement(Box.a,{className:classes.loadingAnnimation},react_default.a.createElement("img",{src:loading_annimation_default.a,alt:"Items are loading."})):react_default.a.createElement(TableContainer.a,null,react_default.a.createElement(Table.a,Object.assign({stickyHeader:!0},getTableProps(),{size:"small"}),react_default.a.createElement(TableHead.a,null,headerGroups.map((function(headerGroup){return react_default.a.createElement(TableRow.a,headerGroup.getHeaderGroupProps(),headerGroup.headers.map((function(column){return react_default.a.createElement(TableCell.a,column.getHeaderProps(),react_default.a.createElement(Grid.a,{container:!0,spacing:0},react_default.a.createElement(Grid.a,{item:!0,sm:10},column.render("Filter")),react_default.a.createElement(Grid.a,{item:!0,sm:2,alignItems:"center",justify:"center"},react_default.a.createElement(ButtonGroup.a,{orientation:"vertical",size:"small"},react_default.a.createElement(IconButton.a,{size:"small",onClick:function onClick(_){column.isSorted&&!column.isSortedDesc?column.clearSortBy():column.toggleSortBy(!1)}},react_default.a.createElement(ArrowUpward.a,Object.assign({},column.getSortByToggleProps(),{fontSize:"inherit",color:column.isSorted&&!1===column.isSortedDesc?"default":"disabled"}))),react_default.a.createElement(IconButton.a,{size:"small",onClick:function onClick(_){column.isSorted&&column.isSortedDesc?column.clearSortBy():column.toggleSortBy(!0)}},react_default.a.createElement(ArrowDownward.a,Object.assign({},column.getSortByToggleProps(column.isSortedDesc),{fontSize:"inherit",color:column.isSorted&&column.isSortedDesc?"default":"disabled"})))))))})))}))),react_default.a.createElement(TableBody.a,Object.assign({},getTableBodyProps(),{classes:{root:classes.VirtualizedTableStyles}}),react_default.a.createElement(es.a,{disableWidth:!0},(function(_ref3){var height=_ref3.height;_ref3.width;return react_default.a.createElement(index_esm.a,{className:"Table",height:height,width:"100%",itemCount:rows.length,itemSize:100},Object(react.memo)((function(_ref4){var index=_ref4.index,style=_ref4.style,row=rows[index];prepareRow(row);var isSelected=selectedRow.queue===row.original.queue&&selectedRow.number===row.original.number;return react_default.a.createElement(TableRow.a,Object.assign({hover:!0,onClick:function onClick(){history.push("/".concat(row.original.queue,"/").concat(row.original.number)),setSelectedRow({queue:row.original.queue,number:row.original.number})},classes:{root:isSelected&&rowCanBeSelected?classes.rowSelected:classes.bandedRows,hover:classes.hoverBackgroundColor}},row.getRowProps({style:style})),row.cells.map((function(cell){return cell.render((function(_){switch(cell.column.id){case"date_received":return react_default.a.createElement(ItemTableCell.a,{TableCellProps:cell.getCellProps()},react_default.a.createElement(RelativeTime_default.a,{value:cell.value}));case"last_updated":return react_default.a.createElement(components_LastUpdatedCell,{time:cell.value,ItemTableCellProps:cell.getCellProps()});default:return react_default.a.createElement(ItemTableCell.a,{TableCellProps:cell.getCellProps()},cell.value)}}))})))}),index_esm.b,[prepareRow,rows]))})))))}ItemTable.defaultProps={items:[],rowCanBeSelected:!0,loading:!1},ItemTable.__docgenInfo={description:"",methods:[],displayName:"ItemTable",props:{items:{defaultValue:{value:"[]",computed:!1},type:{name:"array"},required:!1,description:"Array of items from all active queues to display in table."},rowCanBeSelected:{defaultValue:{value:"true",computed:!1},type:{name:"bool"},required:!1,description:"If true, rows can be selected."},loading:{defaultValue:{value:"false",computed:!1},type:{name:"bool"},required:!1,description:"If true, ItemTable displays loading screen."}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/ItemTable/ItemTable.js"]={name:"ItemTable",docgenInfo:ItemTable.__docgenInfo,path:"src/components/ItemTable/ItemTable.js"})},145:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"b",(function(){return useLogin})),__webpack_require__.d(__webpack_exports__,"c",(function(){return useLoginSetter})),__webpack_require__.d(__webpack_exports__,"d",(function(){return useToken})),__webpack_require__.d(__webpack_exports__,"e",(function(){return useTokenSetter})),__webpack_require__.d(__webpack_exports__,"a",(function(){return AuthProvider}));var _home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(43),_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__),_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(70),_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(38),react__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_3___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__),react_cookie__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(648),_auth___WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(323),jwt_decode__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(628),LoginContext=Object(react__WEBPACK_IMPORTED_MODULE_3__.createContext)(),LoginSetterContext=Object(react__WEBPACK_IMPORTED_MODULE_3__.createContext)(),TokenContext=Object(react__WEBPACK_IMPORTED_MODULE_3__.createContext)(),TokenSetterContext=Object(react__WEBPACK_IMPORTED_MODULE_3__.createContext)(),useLogin=function useLogin(){return Object(react__WEBPACK_IMPORTED_MODULE_3__.useContext)(LoginContext)},useLoginSetter=function useLoginSetter(){return Object(react__WEBPACK_IMPORTED_MODULE_3__.useContext)(LoginSetterContext)},useToken=function useToken(){return Object(react__WEBPACK_IMPORTED_MODULE_3__.useContext)(TokenContext)},useTokenSetter=function useTokenSetter(){return Object(react__WEBPACK_IMPORTED_MODULE_3__.useContext)(TokenSetterContext)};function AuthProvider(_ref){var children=_ref.children,_useState=Object(react__WEBPACK_IMPORTED_MODULE_3__.useState)(!1),_useState2=Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__.a)(_useState,2),loggedIn=_useState2[0],setLoggedIn=_useState2[1],_useState3=Object(react__WEBPACK_IMPORTED_MODULE_3__.useState)(null),_useState4=Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__.a)(_useState3,2),token=_useState4[0],setToken=_useState4[1],_useCookies=Object(react_cookie__WEBPACK_IMPORTED_MODULE_4__.a)(["csrf_refresh_token"]),cookies=Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__.a)(_useCookies,1)[0];function tryRefresh(_x){return _tryRefresh.apply(this,arguments)}function _tryRefresh(){return(_tryRefresh=Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__.a)(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark((function _callee3(csrf_refresh_token){var new_access_token;return _home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap((function _callee3$(_context3){for(;;)switch(_context3.prev=_context3.next){case 0:if(void 0!==csrf_refresh_token){_context3.next=2;break}return _context3.abrupt("return",!1);case 2:return _context3.next=4,Object(_auth___WEBPACK_IMPORTED_MODULE_5__.b)(csrf_refresh_token);case 4:if(new_access_token=_context3.sent){_context3.next=8;break}return console.error("Failed to refresh access token."),_context3.abrupt("return",!1);case 8:setToken(new_access_token),setLoggedIn(!0);case 10:case"end":return _context3.stop()}}),_callee3)})))).apply(this,arguments)}return Object(react__WEBPACK_IMPORTED_MODULE_3__.useEffect)((function(_){Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__.a)(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark((function _callee(){return _home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap((function _callee$(_context){for(;;)switch(_context.prev=_context.next){case 0:return _context.next=2,tryRefresh(cookies.csrf_refresh_token);case 2:case"end":return _context.stop()}}),_callee)})))()}),[cookies]),Object(react__WEBPACK_IMPORTED_MODULE_3__.useEffect)((function(){if(null!==token){var access_token_expiration_claim=Object(jwt_decode__WEBPACK_IMPORTED_MODULE_6__.a)(token).exp,miliseconds_to_access_token_expiration=new Date(0).setUTCSeconds(access_token_expiration_claim)-Date.now(),timer=setTimeout(Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__.a)(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark((function _callee2(){return _home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap((function _callee2$(_context2){for(;;)switch(_context2.prev=_context2.next){case 0:return _context2.next=2,tryRefresh(cookies.csrf_refresh_token);case 2:case"end":return _context2.stop()}}),_callee2)}))),miliseconds_to_access_token_expiration-5e3);return function(){return clearTimeout(timer)}}}),[token,cookies]),react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(LoginContext.Provider,{value:loggedIn},react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(LoginSetterContext.Provider,{value:setLoggedIn},react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(TokenContext.Provider,{value:token},react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(TokenSetterContext.Provider,{value:setToken},children))))}AuthProvider.__docgenInfo={description:"",methods:[],displayName:"AuthProvider"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/AuthProvider/AuthProvider.js"]={name:"AuthProvider",docgenInfo:AuthProvider.__docgenInfo,path:"src/components/AuthProvider/AuthProvider.js"})},146:function(module,__webpack_exports__,__webpack_require__){"use strict";var _ItemTableAppBarAction__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(128);__webpack_require__.d(__webpack_exports__,"a",(function(){return _ItemTableAppBarAction__WEBPACK_IMPORTED_MODULE_0__.a}))},147:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return Assignment}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__),_material_ui_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(97),react_relative_time__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(122),react_relative_time__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(react_relative_time__WEBPACK_IMPORTED_MODULE_2__);function Assignment(_ref){var by=_ref.by,to=_ref.to,datetime=_ref.datetime;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_1__.a,null,react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("b",null,by)," assigned this to ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("b",null,to)," ",react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_relative_time__WEBPACK_IMPORTED_MODULE_2___default.a,{value:new Date(datetime)}),".")}Assignment.__docgenInfo={description:"",methods:[],displayName:"Assignment",props:{by:{type:{name:"string"},required:!0,description:"The career account alias of the person who changed the assignment."},to:{type:{name:"string"},required:!0,description:"The career account alias of the person the item was assigned to."},datetime:{type:{name:"string"},required:!0,description:"Any string, number or Date object understood by React Relative Time. See https://github.com/aharshac/react-relative-time#readme."}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/Assignment/Assignment.js"]={name:"Assignment",docgenInfo:Assignment.__docgenInfo,path:"src/components/Assignment/Assignment.js"})},169:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return ItemTableFilter}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__),_material_ui_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(115),_material_ui_core__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(1322),_material_ui_core__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(200),_material_ui_core__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(1315),_material_ui_core__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(1327),_material_ui_core__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(1328);function ItemTableFilter(_ref){var label=_ref.label,onChange=_ref.onChange,classes=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_1__.a)({filterContainer:{overflowX:"hidden"},paperStyles:{overflow:"hidden"}})();return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_2__.a,{classes:{root:classes.filterContainer}},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_3__.a,{classes:{root:classes.paperStyles},elevation:0},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_4__.a,{color:"secondary",fullWidth:!0,margin:"dense",size:"small",variant:"outlined"},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_5__.a,{htmlFor:label},label),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_6__.a,{onChange:onChange,label:label}))))}ItemTableFilter.defaultProps={label:""},ItemTableFilter.__docgenInfo={description:"",methods:[],displayName:"ItemTableFilter",props:{label:{defaultValue:{value:'""',computed:!1},type:{name:"string"},required:!1,description:"The label that appears inside the search box."},onChange:{type:{name:"func"},required:!0,description:"The callback function that sets a column's filter value.
\r\nSignature: function(event: object) => void
\r\nevent: The event source of the callback. \r\nYou can pull out the new value by accessing event.target.value (string)."}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/ItemTableFilter/ItemTableFilter.js"]={name:"ItemTableFilter",docgenInfo:ItemTableFilter.__docgenInfo,path:"src/components/ItemTableFilter/ItemTableFilter.js"})},170:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return DirectoryInformation}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__),_material_ui_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(59),_material_ui_core__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(115),_material_ui_core__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(644),_material_ui_core__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(200),_material_ui_core__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(645),_material_ui_core__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(443),_material_ui_core__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(257);function DirectoryInformation(_ref){var section=_ref.section,theme=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_1__.a)(),classes=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_2__.a)((function(theme){return{headerCell:{borderBottom:"none",paddingTop:theme.spacing(.5),paddingBottom:theme.spacing(.5)},bodyCell:{wordBreak:"break-word",borderBottom:"none",paddingTop:theme.spacing(.5),paddingBottom:theme.spacing(.5)},stripedRow:{"&:nth-of-type(odd)":{backgroundColor:theme.palette.action.hover}}}}))(theme);return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_3__.a,{component:_material_ui_core__WEBPACK_IMPORTED_MODULE_4__.a},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_5__.a,{size:"small"},Object.keys(section).map((function(key){return"type"===key?"":react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_6__.a,{classes:{root:classes.stripedRow}},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_7__.a,{classes:{root:classes.headerCell},variant:"head"},key),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_7__.a,{classes:{root:classes.bodyCell}},section[key]))}))))}DirectoryInformation.defaultProps={section:{}},DirectoryInformation.__docgenInfo={description:"",methods:[],displayName:"DirectoryInformation",props:{section:{defaultValue:{value:"{}",computed:!1},type:{name:"object"},required:!1,description:"The object containing directory information."}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/DirectoryInformation/DirectoryInformation.js"]={name:"DirectoryInformation",docgenInfo:DirectoryInformation.__docgenInfo,path:"src/components/DirectoryInformation/DirectoryInformation.js"})},171:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return ParseError}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__),_material_ui_core__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(59),_material_ui_core__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(115),_material_ui_core__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(200),_material_ui_core__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(97),clsx__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(6);function ParseError(_ref){var file_path=_ref.file_path,expected=_ref.expected,got=_ref.got,line_num=_ref.line_num,theme=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_1__.a)(),classes=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_2__.a)({"Paper-root":{overflow:"hidden"},headerColor:{backgroundColor:theme.palette.parse_error.main},padding:{padding:theme.spacing(1)}})();return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_3__.a,{classes:{root:classes["Paper-root"]}},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",{className:Object(clsx__WEBPACK_IMPORTED_MODULE_5__.a)(classes.headerColor,classes.padding)},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_4__.a,{variant:"body1"},"Parsing Error")),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",{className:classes.padding},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_4__.a,{variant:"body1"},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("b",null,"File Path:")," ",file_path),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_4__.a,{variant:"body1"},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("b",null,"Line:")," ",line_num),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_4__.a,{variant:"body1"},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("b",null,"Expected:")," ",expected),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_4__.a,{variant:"body1"},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("b",null,"Got:")," ",got)))}ParseError.defaultProps={file_path:"",expected:"",got:"",line_num:""},ParseError.__docgenInfo={description:"",methods:[],displayName:"ParseError",props:{file_path:{defaultValue:{value:'""',computed:!1},type:{name:"string"},required:!1,description:""},expected:{defaultValue:{value:'""',computed:!1},type:{name:"string"},required:!1,description:""},got:{defaultValue:{value:'""',computed:!1},type:{name:"string"},required:!1,description:""},line_num:{defaultValue:{value:'""',computed:!1},type:{name:"number"},required:!1,description:""}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/ParseError/ParseError.js"]={name:"ParseError",docgenInfo:ParseError.__docgenInfo,path:"src/components/ParseError/ParseError.js"})},172:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return TimelineSkeleton}));var _home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(321),react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_1___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__),_material_ui_core__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(59),_material_ui_core__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(115),_material_ui_core__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(200),_material_ui_core__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(97),_material_ui_lab__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(646);function TimelineSkeleton(){var theme=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_2__.a)(),classes=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_3__.a)({"Paper-root":{overflow:"hidden"},padding:{padding:theme.spacing(1)}})();return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_4__.a,{classes:{root:classes["Paper-root"]}},react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div",{className:classes.padding},react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_5__.a,{variant:"body1"},react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_lab__WEBPACK_IMPORTED_MODULE_6__.a,null))),react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div",{className:classes.padding},Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__.a)(Array(2).keys()).map((function(_,index){return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_lab__WEBPACK_IMPORTED_MODULE_6__.a,{key:index.toString()})}))))}TimelineSkeleton.__docgenInfo={description:"",methods:[],displayName:"TimelineSkeleton"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/TimelineSkeleton/TimelineSkeleton.js"]={name:"TimelineSkeleton",docgenInfo:TimelineSkeleton.__docgenInfo,path:"src/components/TimelineSkeleton/TimelineSkeleton.js"})},173:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return ItemHeaderView}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__),react_table__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(148),_material_ui_core__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(59),_material_ui_core__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(115),_material_ui_core__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(647),_material_ui_core__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(644),_material_ui_core__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(645),_material_ui_core__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(1316),_material_ui_core__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(443),_material_ui_core__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(257),_material_ui_core__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(1318);function ItemHeaderView(_ref){var data=_ref.data,theme=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_2__.a)(),classes=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_3__.a)({HeaderCell_root:{paddingBottom:theme.spacing(2),borderBottomWidth:0},ContentCell_root:{wordBreak:"break-word"},bandedRows:{"&:nth-of-type(even)":{backgroundColor:"light"===theme.palette.type?theme.palette.grey[50]:theme.palette.grey[700]}}})(),columns=Object(react__WEBPACK_IMPORTED_MODULE_0__.useMemo)((function(){return[{Header:"Type",accessor:"type",Cell:function Cell(_ref2){var value=_ref2.value;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("b",null,value)},width:1},{Header:"Content",accessor:"content",width:2}]}),[]),defaultColumn={Filter:function Filter(_ref3){var _ref3$column=_ref3.column,Header=_ref3$column.Header,setFilter=_ref3$column.setFilter;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_4__.a,{label:Header,onChange:function onChange(event){return setFilter(event.target.value)},type:"search",size:"small",variant:"outlined",color:"secondary",fullWidth:!0})}},tableInstance=Object(react_table__WEBPACK_IMPORTED_MODULE_1__.useTable)({columns:columns,data:data,defaultColumn:defaultColumn},react_table__WEBPACK_IMPORTED_MODULE_1__.useFlexLayout,react_table__WEBPACK_IMPORTED_MODULE_1__.useFilters),getTableProps=tableInstance.getTableProps,getTableBodyProps=tableInstance.getTableBodyProps,headerGroups=tableInstance.headerGroups,rows=tableInstance.rows,prepareRow=tableInstance.prepareRow;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_5__.a,null,react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_6__.a,Object.assign({},getTableProps,{size:"small"}),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_7__.a,null,headerGroups.map((function(headerGroup){return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_8__.a,headerGroup.getHeaderGroupProps(),headerGroup.headers.map((function(column){return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_9__.a,Object.assign({},column.getHeaderProps(),{classes:{root:classes.HeaderCell_root}}),column.render("Filter"))})))}))),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_10__.a,getTableBodyProps(),rows.map((function(row){return prepareRow(row),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_8__.a,Object.assign({},row.getRowProps(),{classes:{root:classes.bandedRows}}),row.cells.map((function(cell){return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_9__.a,Object.assign({},cell.getCellProps(),{classes:{root:classes.ContentCell_root}}),cell.render("Cell"))})))})))))}ItemHeaderView.defaultProps={data:[]},ItemHeaderView.__docgenInfo={description:"",methods:[],displayName:"ItemHeaderView",props:{data:{defaultValue:{value:"[]",computed:!1},type:{name:"array"},required:!1,description:"An array of object containing header type and content."}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/ItemHeaderView/ItemHeaderView.js"]={name:"ItemHeaderView",docgenInfo:ItemHeaderView.__docgenInfo,path:"src/components/ItemHeaderView/ItemHeaderView.js"})},174:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return QueueSelector}));var _home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(176),_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(38),_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(43),_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__),_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(70),react__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__),_material_ui_core__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(59),_material_ui_core__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(115),_material_ui_core__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(1325),_material_ui_core__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(200),_material_ui_core__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(647),_material_ui_core__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(1319),_material_ui_lab__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__(1323),_material_ui_icons_CheckBoxOutlineBlank__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__(316),_material_ui_icons_CheckBoxOutlineBlank__WEBPACK_IMPORTED_MODULE_12___default=__webpack_require__.n(_material_ui_icons_CheckBoxOutlineBlank__WEBPACK_IMPORTED_MODULE_12__),_material_ui_icons_CheckBox__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__(629),_material_ui_icons_CheckBox__WEBPACK_IMPORTED_MODULE_13___default=__webpack_require__.n(_material_ui_icons_CheckBox__WEBPACK_IMPORTED_MODULE_13__),_material_ui_core_CircularProgress__WEBPACK_IMPORTED_MODULE_14__=__webpack_require__(1320),react_cookie__WEBPACK_IMPORTED_MODULE_15__=__webpack_require__(648),_AuthProvider___WEBPACK_IMPORTED_MODULE_16__=__webpack_require__(96),getQueueCounts=function(){var _ref=Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__.a)(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark((function _callee(access_token){var myHeaders,requestOptions,apiResponse,queueCountJson;return _home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap((function _callee$(_context){for(;;)switch(_context.prev=_context.next){case 0:if(null!==access_token){_context.next=2;break}return _context.abrupt("return",void 0);case 2:return(myHeaders=new Headers).append("Authorization","Bearer ".concat(access_token)),requestOptions={headers:myHeaders},_context.next=7,fetch("".concat(".","/api/data/get_queues"),requestOptions);case 7:return apiResponse=_context.sent,_context.next=10,apiResponse.json();case 10:return queueCountJson=_context.sent,_context.abrupt("return",queueCountJson);case 12:case"end":return _context.stop()}}),_callee)})));return function getQueueCounts(_x){return _ref.apply(this,arguments)}}();function QueueSelector(_ref2){var open=_ref2.open,setOpen=_ref2.setOpen,value=_ref2.value,setValue=_ref2.setValue,_useState=Object(react__WEBPACK_IMPORTED_MODULE_4__.useState)([]),_useState2=Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__.a)(_useState,2),queueCounts=_useState2[0],setQueueCounts=_useState2[1],_useState3=Object(react__WEBPACK_IMPORTED_MODULE_4__.useState)(!0),_useState4=Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__.a)(_useState3,2),isFirstRender=_useState4[0],setIsFirstRender=_useState4[1],_useState5=Object(react__WEBPACK_IMPORTED_MODULE_4__.useState)(""),_useState6=Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__.a)(_useState5,2),searchValue=_useState6[0],setSearchValue=_useState6[1],access_token=Object(_AuthProvider___WEBPACK_IMPORTED_MODULE_16__.c)(),loading=open&&0===queueCounts.length,_useCookies=Object(react_cookie__WEBPACK_IMPORTED_MODULE_15__.a)(["active-queues"]),_useCookies2=Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__.a)(_useCookies,2),cookies=_useCookies2[0],setCookie=_useCookies2[1],activeQueues=void 0!==cookies["active-queues"]?cookies["active-queues"].split(","):[],theme=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_5__.a)(),classes=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_6__.a)({Paper_root:{margin:theme.spacing(1)}})();Object(react__WEBPACK_IMPORTED_MODULE_4__.useEffect)((function(_){var _ref3;null!==access_token&&(isFirstRender&&(_ref3=Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__.a)(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark((function _callee2(_){var queueCountsJson,activeQueuesInfo;return _home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap((function _callee2$(_context2){for(;;)switch(_context2.prev=_context2.next){case 0:return _context2.next=2,getQueueCounts(access_token);case 2:queueCountsJson=_context2.sent,activeQueuesInfo=(activeQueuesInfo=activeQueues.map((function(queueName){return queueCountsJson.find((function(_ref4){var name=_ref4.name;return queueName===name}))}))).filter((function(entry){return void 0!==entry})),setValue(activeQueuesInfo),setIsFirstRender(!1);case 7:case"end":return _context2.stop()}}),_callee2)}))),function(_x2){return _ref3.apply(this,arguments)})())}),[]),Object(react__WEBPACK_IMPORTED_MODULE_4__.useEffect)((function(_){var _ref5;(_ref5=Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_3__.a)(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark((function _callee3(_){var queueCountsJson;return _home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap((function _callee3$(_context3){for(;;)switch(_context3.prev=_context3.next){case 0:if(!loading){_context3.next=5;break}return _context3.next=3,getQueueCounts(access_token);case 3:queueCountsJson=_context3.sent,setQueueCounts(queueCountsJson);case 5:case"end":return _context3.stop()}}),_callee3)}))),function(_x3){return _ref5.apply(this,arguments)})()}),[loading,access_token]),Object(react__WEBPACK_IMPORTED_MODULE_4__.useEffect)((function(){open||setQueueCounts([])}),[open]);return react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_8__.a,{elevation:0,classes:{root:classes.Paper_root}},react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(_material_ui_lab__WEBPACK_IMPORTED_MODULE_11__.a,{renderInput:function renderInput(params){return react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_9__.a,Object.assign({},params,{variant:"outlined",placeholder:0===value.length?"Click or type to select queues.":"",autoFocus:!0,InputProps:Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__.a)(Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__.a)({},params.InputProps),{},{startAdornment:react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_4___default.a.Fragment,null,react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_10__.a,{position:"start"},"Active Queues:"),params.InputProps.startAdornment),endAdornment:react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_4___default.a.Fragment,null,loading?react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(_material_ui_core_CircularProgress__WEBPACK_IMPORTED_MODULE_14__.a,{color:"inherit",size:20}):null,params.InputProps.endAdornment)})}))},options:queueCounts,value:value,onChange:function handleChange(event,newValue){setValue(newValue);var expiration_date,activeQueueOptions={path:"/",expires:(expiration_date=new Date,expiration_date.setDate(expiration_date.getDate()+365),expiration_date)},activeQueues=newValue.map((function(value){return value.name})).join(",");setCookie("active-queues",activeQueues,activeQueueOptions)},onInputChange:function onInputChange(event,value,reason){return setSearchValue(value)},getOptionLabel:function getOptionLabel(option){return"".concat(option.name," (").concat(option.number_of_items,")")},renderOption:function optionRenderer(option,_ref6){var selected=_ref6.selected;return react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_4___default.a.Fragment,null,react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_7__.a,{icon:react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(_material_ui_icons_CheckBoxOutlineBlank__WEBPACK_IMPORTED_MODULE_12___default.a,{fontSize:"small"}),checkedIcon:react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(_material_ui_icons_CheckBox__WEBPACK_IMPORTED_MODULE_13___default.a,{fontSize:"small"}),style:{marginRight:8},checked:selected}),"".concat(option.name," (").concat(option.number_of_items,")"))},getOptionSelected:function getOptionSelected(option,value){return option.name===value.name},noOptionsText:"'".concat(searchValue,"' queue does not exist."),size:"small",open:open,onOpen:function onOpen(_){return setOpen(!0)},onClose:function onClose(_){return setOpen(!1)},loading:loading,disableCloseOnSelect:!0,disableListWrap:!0,fullWidth:!0,multiple:!0,autoHighlight:!0}))}QueueSelector.__docgenInfo={description:"",methods:[],displayName:"QueueSelector",props:{open:{type:{name:"bool"},required:!0,description:"State variable to manage open status."},setOpen:{type:{name:"func"},required:!0,description:"Function to update state variable that manages open status."},value:{type:{name:"array"},required:!0,description:"State variable to manage selected queues."},setValue:{type:{name:"func"},required:!0,description:"Function to update state variable that manages selected queues."}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/QueueSelector/QueueSelector.js"]={name:"QueueSelector",docgenInfo:QueueSelector.__docgenInfo,path:"src/components/QueueSelector/QueueSelector.js"})},177:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return ItemViewAppBar}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__),react_router_dom__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1324),_material_ui_core__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(59),_material_ui_core__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(115),_material_ui_core__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(642),_material_ui_core__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(643),_material_ui_core__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(639),_material_ui_core__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(640),_material_ui_core__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(641),_material_ui_core__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(97),_material_ui_icons_ChevronRight__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(627),_material_ui_icons_ChevronRight__WEBPACK_IMPORTED_MODULE_10___default=__webpack_require__.n(_material_ui_icons_ChevronRight__WEBPACK_IMPORTED_MODULE_10__);function ItemViewAppBar(_ref){var title=_ref.title,setSidebarOpen=_ref.setSidebarOpen;Object(react__WEBPACK_IMPORTED_MODULE_0__.useEffect)((function(){return setSidebarOpen(!0),function(){return setSidebarOpen(!1)}}));var theme=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_2__.a)(),classes=Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_3__.a)((function(theme){return{closeButton:{marginRight:theme.spacing(3)},title:{flexGrow:"1"},appBarRoot:{width:"100%"}}}))(theme),history=Object(react_router_dom__WEBPACK_IMPORTED_MODULE_1__.c)();return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,null,react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_4__.a,{position:"sticky",color:"secondary",elevation:2,classes:{root:classes.appBarRoot}},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_5__.a,{variant:"dense"},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_6__.a,{title:"Close Item",arrow:!0,onClick:function onClick(){history.push("/")},TransitionComponent:_material_ui_core__WEBPACK_IMPORTED_MODULE_7__.a},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_8__.a,{color:"inherit",className:classes.closeButton},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_ChevronRight__WEBPACK_IMPORTED_MODULE_10___default.a,null))),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_9__.a,{variant:"h6",className:classes.title},title))))}ItemViewAppBar.defaultProps={title:""},ItemViewAppBar.__docgenInfo={description:"",methods:[],displayName:"ItemViewAppBar",props:{title:{defaultValue:{value:'""',computed:!1},type:{name:"string"},required:!1,description:"The title of the app bar."},setSidebarOpen:{type:{name:"func"},required:!0,description:"Function reference to stateful variable toggle sidebar open.
\nSignature: function(sidebarOpen: boolean) => void
"}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/ItemViewAppBar/ItemViewAppBar.js"]={name:"ItemViewAppBar",docgenInfo:ItemViewAppBar.__docgenInfo,path:"src/components/ItemViewAppBar/ItemViewAppBar.js"})},178:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return ItemView}));var regenerator=__webpack_require__(43),regenerator_default=__webpack_require__.n(regenerator),asyncToGenerator=__webpack_require__(70),slicedToArray=__webpack_require__(38),react=__webpack_require__(0),react_default=__webpack_require__.n(react),useTheme=__webpack_require__(59),makeStyles=__webpack_require__(115),Paper=__webpack_require__(200),Box=__webpack_require__(1322),Typography=__webpack_require__(97),AppBar=__webpack_require__(642),Tab=__webpack_require__(1374),TabContext=__webpack_require__(444),TabList=__webpack_require__(1377),TabPanel=__webpack_require__(1375),components_ItemMetadataView=__webpack_require__(133).a,components_ItemBodyView=__webpack_require__(134).a,ItemHeaderView=__webpack_require__(173),ItemProvider=__webpack_require__(108),AuthProvider=__webpack_require__(96);function ItemView(_ref){var queue=_ref.queue,number=_ref.number,_useState=Object(react.useState)("Conversation"),_useState2=Object(slicedToArray.a)(_useState,2),activeTab=_useState2[0],setActiveTab=_useState2[1],_useState3=Object(react.useState)(!1),_useState4=Object(slicedToArray.a)(_useState3,2),isLoading=_useState4[0],setIsLoading=_useState4[1],_useState5=Object(react.useState)(!1),_useState6=Object(slicedToArray.a)(_useState5,2),error=_useState6[0],setError=_useState6[1],activeItem=Object(ItemProvider.b)(),setActiveItem=Object(ItemProvider.c)(),access_token=Object(AuthProvider.c)();Object(react.useEffect)((function(_){var _ref2;(_ref2=Object(asyncToGenerator.a)(regenerator_default.a.mark((function _callee(_){var myHeaders,requestOptions,apiResponse,itemJson;return regenerator_default.a.wrap((function _callee$(_context){for(;;)switch(_context.prev=_context.next){case 0:if(null!==access_token){_context.next=2;break}return _context.abrupt("return",void 0);case 2:if(activeItem.queue!==queue||activeItem.number!=number){_context.next=4;break}return _context.abrupt("return",void 0);case 4:return setIsLoading(!0),(myHeaders=new Headers).append("Authorization","Bearer ".concat(access_token)),requestOptions={headers:myHeaders},_context.next=10,fetch("".concat(".","/api/data/").concat(queue,"/").concat(number),requestOptions);case 10:if((apiResponse=_context.sent).ok){_context.next=15;break}return console.error("Fetching item ".concat(queue).concat(number,". Got code ").concat(apiResponse.status," (").concat(apiResponse.statusText,")")),setError(!0),_context.abrupt("return",void 0);case 15:return _context.next=17,apiResponse.json();case 17:itemJson=_context.sent,setActiveItem(itemJson),setIsLoading(!1);case 20:case"end":return _context.stop()}}),_callee)}))),function(_x){return _ref2.apply(this,arguments)})()}),[access_token,activeItem,setActiveItem,queue,number]);var theme=Object(useTheme.a)(),classes=Object(makeStyles.a)({paperPadding:{paddingTop:theme.spacing(1),paddingLeft:theme.spacing(2),paddingRight:theme.spacing(2),border:"none"},tabPanelPadding:{padding:"".concat(theme.spacing(2),"px ").concat(theme.spacing(2),"px")},errorContainer:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",marginTop:theme.spacing(6)}})();return react_default.a.createElement(Paper.a,{variant:"outlined",classes:{root:classes.paperPadding},square:!0},error?react_default.a.createElement(Box.a,{classes:{root:classes.errorContainer}},react_default.a.createElement(Typography.a,{variant:"h1"},"4☹4"),react_default.a.createElement(Typography.a,{variant:"h3"},"Something went wrong."),react_default.a.createElement(Typography.a,{variant:"h5"},"Item ".concat(queue).concat(number," could not be found."))):react_default.a.createElement(react_default.a.Fragment,null,react_default.a.createElement(components_ItemMetadataView,{item:activeItem}),react_default.a.createElement(TabContext.a,{value:activeTab},react_default.a.createElement(AppBar.a,{position:"relative",color:"default",variant:"outlined"},react_default.a.createElement(TabList.a,{onChange:function handleTabChange(event,newValue){setActiveTab(newValue)},variant:"fullWidth"},react_default.a.createElement(Tab.a,{label:"Conversation",value:"Conversation"}),react_default.a.createElement(Tab.a,{label:"Headers",value:"Headers"}))),react_default.a.createElement(TabPanel.a,{value:"Conversation",classes:{root:classes.tabPanelPadding}},react_default.a.createElement(components_ItemBodyView,{sections:activeItem.content,loading:isLoading})),react_default.a.createElement(TabPanel.a,{value:"Headers",classes:{root:classes.tabPanelPadding}},react_default.a.createElement(ItemHeaderView.a,{data:activeItem.headers})))))}ItemView.__docgenInfo={description:"",methods:[],displayName:"ItemView",props:{queue:{type:{name:"string"},required:!0,description:"The queue of the item to load."},number:{type:{name:"number"},required:!0,description:"The number of the item to load."}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/ItemView/ItemView.js"]={name:"ItemView",docgenInfo:ItemView.__docgenInfo,path:"src/components/ItemView/ItemView.js"})},195:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"b",(function(){return useItem})),__webpack_require__.d(__webpack_exports__,"c",(function(){return useItemSetter})),__webpack_require__.d(__webpack_exports__,"a",(function(){return ItemProvider}));var _home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(38),react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_1___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__),ItemContext=Object(react__WEBPACK_IMPORTED_MODULE_1__.createContext)(),ItemSetterContext=Object(react__WEBPACK_IMPORTED_MODULE_1__.createContext)(),useItem=function useItem(){return Object(react__WEBPACK_IMPORTED_MODULE_1__.useContext)(ItemContext)},useItemSetter=function useItemSetter(){return Object(react__WEBPACK_IMPORTED_MODULE_1__.useContext)(ItemSetterContext)};function ItemProvider(_ref){var children=_ref.children,_useState=Object(react__WEBPACK_IMPORTED_MODULE_1__.useState)({}),_useState2=Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__.a)(_useState,2),item=_useState2[0],setItem=_useState2[1];return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(ItemContext.Provider,{value:item},react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(ItemSetterContext.Provider,{value:setItem},children))}ItemProvider.__docgenInfo={description:"",methods:[],displayName:"ItemProvider"},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/ItemProvider/ItemProvider.js"]={name:"ItemProvider",docgenInfo:ItemProvider.__docgenInfo,path:"src/components/ItemProvider/ItemProvider.js"})},253:function(module,__webpack_exports__,__webpack_require__){"use strict";var _ItemTableAppBar__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(131);__webpack_exports__.a=_ItemTableAppBar__WEBPACK_IMPORTED_MODULE_0__.a},254:function(module,__webpack_exports__,__webpack_require__){"use strict";var _ItemTableCell__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(132);__webpack_exports__.a=_ItemTableCell__WEBPACK_IMPORTED_MODULE_0__.a},323:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return login})),__webpack_require__.d(__webpack_exports__,"b",(function(){return refresh}));var regenerator=__webpack_require__(43),regenerator_default=__webpack_require__.n(regenerator),asyncToGenerator=__webpack_require__(70);function login(_x,_x2){return _login.apply(this,arguments)}function _login(){return(_login=Object(asyncToGenerator.a)(regenerator_default.a.mark((function _callee(username,password){var loginInit,loginResponse,data;return regenerator_default.a.wrap((function _callee$(_context){for(;;)switch(_context.prev=_context.next){case 0:return loginInit={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:username,password:password})},_context.next=3,fetch("".concat(".","/api/login"),loginInit);case 3:return loginResponse=_context.sent,_context.next=6,loginResponse.json();case 6:if(null!==(data=_context.sent)){_context.next=9;break}return _context.abrupt("return",!1);case 9:if(loginResponse.ok){_context.next=12;break}return console.error("Login failed. Got code ".concat(loginResponse.status," (").concat(loginResponse.statusText,")")),_context.abrupt("return",!1);case 12:return _context.abrupt("return",data.access_token||!1);case 13:case"end":return _context.stop()}}),_callee)})))).apply(this,arguments)}function refresh(_x3){return _refresh.apply(this,arguments)}function _refresh(){return(_refresh=Object(asyncToGenerator.a)(regenerator_default.a.mark((function _callee2(csrf_refresh_token){var refreshInit,refreshResponse,data;return regenerator_default.a.wrap((function _callee2$(_context2){for(;;)switch(_context2.prev=_context2.next){case 0:return refreshInit={method:"POST",headers:{"X-CSRF-TOKEN":csrf_refresh_token}},_context2.next=3,fetch("".concat(".","/api/tokens/refresh"),refreshInit);case 3:return refreshResponse=_context2.sent,_context2.next=6,refreshResponse.json();case 6:if(null!==(data=_context2.sent)){_context2.next=9;break}return _context2.abrupt("return",!1);case 9:if(refreshResponse.ok){_context2.next=12;break}return console.error("Refresh failed. Got code ".concat(refreshResponse.status," (").concat(refreshResponse.statusText,")")),_context2.abrupt("return",!1);case 12:return _context2.abrupt("return",data.access_token||!1);case 13:case"end":return _context2.stop()}}),_callee2)})))).apply(this,arguments)}},435:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return theme}));var _material_ui_core_colors__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(1308),_material_ui_core_colors__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1309),_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(441);function theme(){var darkMode=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2__.a)({palette:{primary:_material_ui_core_colors__WEBPACK_IMPORTED_MODULE_0__.a,secondary:{main:_material_ui_core_colors__WEBPACK_IMPORTED_MODULE_1__.a[200]},type:darkMode?"dark":"light",edit:{main:"rgba(255, 229, 100, 0.2)"},reply_to_user:{main:"rgba(99, 125, 255, 0.2)"},status:{main:"rgba(99, 255, 151, 0.2)"},parse_error:{main:"rgba(255, 99, 204, 0.2)"}}})}},626:function(module,exports,__webpack_require__){module.exports=__webpack_require__.p+"static/media/loading-annimation.9b818ae3.gif"},663:function(module,exports,__webpack_require__){__webpack_require__(664),__webpack_require__(820),__webpack_require__(821),__webpack_require__(983),__webpack_require__(1200),__webpack_require__(1233),__webpack_require__(1241),__webpack_require__(1253),__webpack_require__(1255),__webpack_require__(1260),__webpack_require__(1262),module.exports=__webpack_require__(1264)},731:function(module,exports){},821:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__);__webpack_require__(491)},87:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return LastUpdatedCell}));var _home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(176),react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_1___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__),_material_ui_core__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(59),_material_ui_core_colors__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(199),react_relative_time__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(122),react_relative_time__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(react_relative_time__WEBPACK_IMPORTED_MODULE_4__),_ItemTableCell__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(254);function LastUpdatedCell(_ref){var time=_ref.time,ItemTableCellProps=_ref.ItemTableCellProps;Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_2__.a)();return ItemTableCellProps=Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__.a)(Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__.a)({},ItemTableCellProps),{},{style:Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__.a)(Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__.a)({},ItemTableCellProps.style),{},{backgroundColor:function timeToBackgroundColor(time){var lastUpdated=new Date(time).getTime(),timeDelta=(new Date).getTime()-lastUpdated,backgroundColor="inherit";return timeDelta>864e5&&timeDelta<=6048e5?backgroundColor=_material_ui_core_colors__WEBPACK_IMPORTED_MODULE_3__.a[100]:timeDelta>6048e5&&timeDelta<=24192e5?backgroundColor=_material_ui_core_colors__WEBPACK_IMPORTED_MODULE_3__.a[300]:timeDelta>24192e5&&(backgroundColor=_material_ui_core_colors__WEBPACK_IMPORTED_MODULE_3__.a[500]),backgroundColor}(time)})}),react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_ItemTableCell__WEBPACK_IMPORTED_MODULE_5__.a,{TableCellProps:ItemTableCellProps},react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react_relative_time__WEBPACK_IMPORTED_MODULE_4___default.a,{value:time}))}LastUpdatedCell.defaultProps={ItemTableCellProps:{}},LastUpdatedCell.__docgenInfo={description:"",methods:[],displayName:"LastUpdatedCell",props:{ItemTableCellProps:{defaultValue:{value:"{}",computed:!1},type:{name:"object"},required:!1,description:'Props to be applied to the ItemTableCell.'},time:{type:{name:"string"},required:!0,description:"Any string, number or Date object understood by React Relative Time. See https://github.com/aharshac/react-relative-time#readme."}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/LastUpdatedCell/LastUpdatedCell.js"]={name:"LastUpdatedCell",docgenInfo:LastUpdatedCell.__docgenInfo,path:"src/components/LastUpdatedCell/LastUpdatedCell.js"})},88:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return UserAvatar}));var _home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(43),_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__),_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(70),_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(38),_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(322),react__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__),_material_ui_core__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(1329);function UserAvatar(_ref){var name=_ref.name,alias=_ref.alias,rest=Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_3__.a)(_ref,["name","alias"]),_useState=Object(react__WEBPACK_IMPORTED_MODULE_4__.useState)(""),_useState2=Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__.a)(_useState,2),userImageURL=_useState2[0],setUserImageURL=_useState2[1];return Object(react__WEBPACK_IMPORTED_MODULE_4__.useEffect)((function(_){var _getUserImage;(_getUserImage=Object(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__.a)(_home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark((function _callee(){var userImageResponse,userImageData;return _home_pier_e_campb303_webqueue2_frontend_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap((function _callee$(_context){for(;;)switch(_context.prev=_context.next){case 0:if(""!==alias){_context.next=2;break}return _context.abrupt("return",null);case 2:return _context.next=4,fetch("https://engineering.purdue.edu/ECN/PersonPhotos/getPhoto?json=1&alias=".concat(alias));case 4:if(200===(userImageResponse=_context.sent).status){_context.next=8;break}return console.error("Failed to load user image from ECNDB. Got code ".concat(userImageResponse.status," (").concat(userImageResponse.statusText,")")),_context.abrupt("return",null);case 8:return _context.next=10,userImageResponse.json();case 10:if(""!==(userImageData=_context.sent).imagePath){_context.next=13;break}return _context.abrupt("return",null);case 13:return setUserImageURL("https://engineering.purdue.edu/".concat(userImageData.imagePath)),_context.abrupt("return",null);case 15:case"end":return _context.stop()}}),_callee)}))),function getUserImage(){return _getUserImage.apply(this,arguments)})()}),[alias]),react__WEBPACK_IMPORTED_MODULE_4___default.a.createElement(_material_ui_core__WEBPACK_IMPORTED_MODULE_5__.a,Object.assign({src:userImageURL},rest),""===name?null:name.charAt(0))}UserAvatar.defaultProps={name:"",alias:""},UserAvatar.__docgenInfo={description:"",methods:[],displayName:"UserAvatar",props:{name:{defaultValue:{value:'""',computed:!1},type:{name:"string"},required:!1,description:"The name of the user."},alias:{defaultValue:{value:'""',computed:!1},type:{name:"string"},required:!1,description:"The user's career account alias."}}},"undefined"!=typeof STORYBOOK_REACT_CLASSES&&(STORYBOOK_REACT_CLASSES["src/components/UserAvatar/UserAvatar.js"]={name:"UserAvatar",docgenInfo:UserAvatar.__docgenInfo,path:"src/components/UserAvatar/UserAvatar.js"})},96:function(module,__webpack_exports__,__webpack_require__){"use strict";var _AuthProvider__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(145);__webpack_require__.d(__webpack_exports__,"a",(function(){return _AuthProvider__WEBPACK_IMPORTED_MODULE_0__.b})),__webpack_require__.d(__webpack_exports__,"b",(function(){return _AuthProvider__WEBPACK_IMPORTED_MODULE_0__.c})),__webpack_require__.d(__webpack_exports__,"c",(function(){return _AuthProvider__WEBPACK_IMPORTED_MODULE_0__.d})),__webpack_require__.d(__webpack_exports__,"d",(function(){return _AuthProvider__WEBPACK_IMPORTED_MODULE_0__.e}))}},[[663,1,2]]]); +//# sourceMappingURL=main.5ca4778a5b6f376dfe8d.bundle.js.map \ No newline at end of file diff --git a/docs/main.5ca4778a5b6f376dfe8d.bundle.js.map b/docs/main.5ca4778a5b6f376dfe8d.bundle.js.map new file mode 100644 index 0000000..43a1aba --- /dev/null +++ b/docs/main.5ca4778a5b6f376dfe8d.bundle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"main.5ca4778a5b6f376dfe8d.bundle.js","sources":["webpack:///main.5ca4778a5b6f376dfe8d.bundle.js"],"mappings":"AAAA","sourceRoot":""} \ No newline at end of file diff --git a/docs/main.f53a0b7a733b501a2685.bundle.js b/docs/main.f53a0b7a733b501a2685.bundle.js new file mode 100644 index 0000000..d946368 --- /dev/null +++ b/docs/main.f53a0b7a733b501a2685.bundle.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{1149:function(module,exports,__webpack_require__){"use strict";__webpack_require__(54).addons.setConfig({refs:{}})},1154:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__);var public_api=__webpack_require__(54),dist=__webpack_require__(5),logo192=__webpack_require__.p+"static/media/logo192.d26b0e94.png",DocsTheme=Object(dist.create)({base:"light",brandTitle:"webqueue2 Storybook",brandUrl:"https://engineering.purdue.edu/webqueue/webqueue2/build",brandImage:logo192,appBg:"white"});public_api.addons.setConfig({theme:DocsTheme})},504:function(module,exports,__webpack_require__){__webpack_require__(505),__webpack_require__(1154),__webpack_require__(692),__webpack_require__(1097),__webpack_require__(1099),__webpack_require__(1101),__webpack_require__(1104),__webpack_require__(1137),__webpack_require__(1142),__webpack_require__(1145),module.exports=__webpack_require__(1149)},572:function(module,exports){}},[[504,1,2]]]); \ No newline at end of file diff --git a/docs/manifest.json b/docs/manifest.json new file mode 100644 index 0000000..58677a6 --- /dev/null +++ b/docs/manifest.json @@ -0,0 +1,26 @@ +{ + "name": "webqueue2", + "short_name": "webqueue2", + "description": "webqueue2", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#DAAA00", + "background_color": "#ffffff" +} \ No newline at end of file diff --git a/docs/precache-manifest.d25fcb372fc25092b1c78f5276eef19c.js b/docs/precache-manifest.d25fcb372fc25092b1c78f5276eef19c.js new file mode 100644 index 0000000..1ca640d --- /dev/null +++ b/docs/precache-manifest.d25fcb372fc25092b1c78f5276eef19c.js @@ -0,0 +1,22 @@ +self.__precacheManifest = (self.__precacheManifest || []).concat([ + { + "revision": "e27259fa37bf8b69a529c13a31f7986f", + "url": "iframe.html" + }, + { + "url": "main.5ca4778a5b6f376dfe8d.bundle.js" + }, + { + "url": "runtime~main.5ca4778a5b6f376dfe8d.bundle.js" + }, + { + "revision": "9b818ae3e2fb210b954c4fac1193d75b", + "url": "static/media/loading-annimation.9b818ae3.gif" + }, + { + "url": "vendors~main.5ca4778a5b6f376dfe8d.bundle.js" + }, + { + "url": "vendors~main.5ca4778a5b6f376dfe8d.bundle.js.LICENSE.txt" + } +]); \ No newline at end of file diff --git a/docs/robots.txt b/docs/robots.txt new file mode 100644 index 0000000..e9e57dc --- /dev/null +++ b/docs/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/docs/runtime~main.5ca4778a5b6f376dfe8d.bundle.js b/docs/runtime~main.5ca4778a5b6f376dfe8d.bundle.js new file mode 100644 index 0000000..dc70502 --- /dev/null +++ b/docs/runtime~main.5ca4778a5b6f376dfe8d.bundle.js @@ -0,0 +1,2 @@ +!function(modules){function webpackJsonpCallback(data){for(var moduleId,chunkId,chunkIds=data[0],moreModules=data[1],executeModules=data[2],i=0,resolves=[];i { + if (event.data && event.data.type === 'SKIP_WAITING') { + self.skipWaiting(); + } +}); + +workbox.core.clientsClaim(); + +/** + * The workboxSW.precacheAndRoute() method efficiently caches and responds to + * requests for URLs in the manifest. + * See https://goo.gl/S9QRab + */ +self.__precacheManifest = [].concat(self.__precacheManifest || []); +workbox.precaching.precacheAndRoute(self.__precacheManifest, {}); + +workbox.routing.registerNavigationRoute(workbox.precaching.getCacheKeyForURL("./index.html"), { + + blacklist: [/^\/_/,/\/[^/?]+\.[^/]+$/], +}); diff --git a/docs/static/media/loading-annimation.9b818ae3.gif b/docs/static/media/loading-annimation.9b818ae3.gif new file mode 100644 index 0000000..57ee1c6 Binary files /dev/null and b/docs/static/media/loading-annimation.9b818ae3.gif differ diff --git a/docs/static/media/logo192.d26b0e94.png b/docs/static/media/logo192.d26b0e94.png new file mode 100644 index 0000000..dd78570 Binary files /dev/null and b/docs/static/media/logo192.d26b0e94.png differ diff --git a/docs/vendors~main.5ca4778a5b6f376dfe8d.bundle.js b/docs/vendors~main.5ca4778a5b6f376dfe8d.bundle.js new file mode 100644 index 0000000..8d69ebf --- /dev/null +++ b/docs/vendors~main.5ca4778a5b6f376dfe8d.bundle.js @@ -0,0 +1,3 @@ +/*! For license information please see vendors~main.5ca4778a5b6f376dfe8d.bundle.js.LICENSE.txt */ +(window.webpackJsonp=window.webpackJsonp||[]).push([[2],[function(module,exports,__webpack_require__){"use strict";module.exports=__webpack_require__(969)},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"MDXContext",(function(){return MDXContext})),__webpack_require__.d(__webpack_exports__,"MDXProvider",(function(){return MDXProvider})),__webpack_require__.d(__webpack_exports__,"mdx",(function(){return createElement})),__webpack_require__.d(__webpack_exports__,"useMDXComponents",(function(){return useMDXComponents})),__webpack_require__.d(__webpack_exports__,"withMDXComponents",(function(){return withMDXComponents}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}function _extends(){return(_extends=Object.assign||function(target){for(var i=1;i=0||(target[key]=source[key]);return target}(source,excluded);if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(source,key)&&(target[key]=source[key])}return target}var MDXContext=react__WEBPACK_IMPORTED_MODULE_0___default.a.createContext({}),withMDXComponents=function withMDXComponents(Component){return function(props){var allComponents=useMDXComponents(props.components);return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Component,_extends({},props,{components:allComponents}))}},useMDXComponents=function useMDXComponents(components){var contextComponents=react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(MDXContext),allComponents=contextComponents;return components&&(allComponents=function isFunction(obj){return"function"==typeof obj}(components)?components(contextComponents):_objectSpread2(_objectSpread2({},contextComponents),components)),allComponents},MDXProvider=function MDXProvider(props){var allComponents=useMDXComponents(props.components);return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(MDXContext.Provider,{value:allComponents},props.children)},DEFAULTS={inlineCode:"code",wrapper:function wrapper(_ref){var children=_ref.children;return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment,{},children)}},MDXCreateElement=react__WEBPACK_IMPORTED_MODULE_0___default.a.forwardRef((function(props,ref){var propComponents=props.components,mdxType=props.mdxType,originalType=props.originalType,parentName=props.parentName,etc=_objectWithoutProperties(props,["components","mdxType","originalType","parentName"]),components=useMDXComponents(propComponents),type=mdxType,Component=components["".concat(parentName,".").concat(type)]||components[type]||DEFAULTS[type]||originalType;return propComponents?react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Component,_objectSpread2(_objectSpread2({ref:ref},etc),{},{components:propComponents})):react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Component,_objectSpread2({ref:ref},etc))}));function createElement(type,props){var args=arguments,mdxType=props&&props.mdxType;if("string"==typeof type||mdxType){var argsLength=args.length,createElementArgArray=new Array(argsLength);createElementArgArray[0]=MDXCreateElement;var newProps={};for(var key in props)hasOwnProperty.call(props,key)&&(newProps[key]=props[key]);newProps.originalType=type,newProps.mdxType="string"==typeof type?type:mdxType,createElementArgArray[1]=newProps;for(var i=2;i=0||Object.prototype.propertyIsEnumerable.call(source,key)&&(target[key]=source[key])}return target}},function(module,exports){module.exports=function _assertThisInitialized(self){if(void 0===self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return self},module.exports.default=module.exports,module.exports.__esModule=!0},function(module,__webpack_exports__,__webpack_require__){"use strict";var esm_extends=__webpack_require__(2),objectWithoutProperties=__webpack_require__(7),react=__webpack_require__(0),react_default=__webpack_require__.n(react),hoist_non_react_statics_cjs=(__webpack_require__(3),__webpack_require__(164)),hoist_non_react_statics_cjs_default=__webpack_require__.n(hoist_non_react_statics_cjs),makeStyles=__webpack_require__(1321),getThemeProps=__webpack_require__(1314),useTheme=__webpack_require__(324),esm_withStyles_withStyles=function withStyles(stylesOrCreator){var options=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(Component){var defaultTheme=options.defaultTheme,_options$withTheme=options.withTheme,withTheme=void 0!==_options$withTheme&&_options$withTheme,name=options.name,stylesOptions=Object(objectWithoutProperties.a)(options,["defaultTheme","withTheme","name"]);var classNamePrefix=name,useStyles=Object(makeStyles.a)(stylesOrCreator,Object(esm_extends.a)({defaultTheme:defaultTheme,Component:Component,name:name||Component.displayName,classNamePrefix:classNamePrefix},stylesOptions)),WithStyles=react_default.a.forwardRef((function WithStyles(props,ref){props.classes;var theme,innerRef=props.innerRef,other=Object(objectWithoutProperties.a)(props,["classes","innerRef"]),classes=useStyles(Object(esm_extends.a)({},Component.defaultProps,props)),more=other;return("string"==typeof name||withTheme)&&(theme=Object(useTheme.a)()||defaultTheme,name&&(more=Object(getThemeProps.a)({theme:theme,name:name,props:other})),withTheme&&!more.theme&&(more.theme=theme)),react_default.a.createElement(Component,Object(esm_extends.a)({ref:innerRef||ref,classes:classes},more))}));return hoist_non_react_statics_cjs_default()(WithStyles,Component),WithStyles}},styles_defaultTheme=__webpack_require__(166);__webpack_exports__.a=function styles_withStyles_withStyles(stylesOrCreator,options){return esm_withStyles_withStyles(stylesOrCreator,Object(esm_extends.a)({defaultTheme:styles_defaultTheme.a},options))}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ReactCSS=exports.loop=exports.handleActive=exports.handleHover=exports.hover=void 0;var _flattenNames2=_interopRequireDefault(__webpack_require__(1098)),_mergeClasses2=_interopRequireDefault(__webpack_require__(1104)),_autoprefix2=_interopRequireDefault(__webpack_require__(1126)),_hover3=_interopRequireDefault(__webpack_require__(1127)),_active2=_interopRequireDefault(__webpack_require__(1128)),_loop3=_interopRequireDefault(__webpack_require__(1129));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}exports.hover=_hover3.default,exports.handleHover=_hover3.default,exports.handleActive=_active2.default,exports.loop=_loop3.default;var ReactCSS=exports.ReactCSS=function ReactCSS(classes){for(var _len=arguments.length,activations=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)activations[_key-1]=arguments[_key];var activeNames=(0,_flattenNames2.default)(activations),merged=(0,_mergeClasses2.default)(classes,activeNames);return(0,_autoprefix2.default)(merged)};exports.default=ReactCSS},function(module,exports,__webpack_require__){"use strict";var $=__webpack_require__(21),global=__webpack_require__(40),getBuiltIn=__webpack_require__(153),IS_PURE=__webpack_require__(152),DESCRIPTORS=__webpack_require__(71),NATIVE_SYMBOL=__webpack_require__(350),USE_SYMBOL_AS_UID=__webpack_require__(488),fails=__webpack_require__(48),has=__webpack_require__(75),isArray=__webpack_require__(229),isObject=__webpack_require__(55),anObject=__webpack_require__(61),toObject=__webpack_require__(91),toIndexedObject=__webpack_require__(138),toPrimitive=__webpack_require__(224),createPropertyDescriptor=__webpack_require__(205),nativeObjectCreate=__webpack_require__(154),objectKeys=__webpack_require__(233),getOwnPropertyNamesModule=__webpack_require__(226),getOwnPropertyNamesExternal=__webpack_require__(799),getOwnPropertySymbolsModule=__webpack_require__(348),getOwnPropertyDescriptorModule=__webpack_require__(182),definePropertyModule=__webpack_require__(77),propertyIsEnumerableModule=__webpack_require__(263),createNonEnumerableProperty=__webpack_require__(117),redefine=__webpack_require__(84),shared=__webpack_require__(265),sharedKey=__webpack_require__(264),hiddenKeys=__webpack_require__(225),uid=__webpack_require__(266),wellKnownSymbol=__webpack_require__(52),wrappedWellKnownSymbolModule=__webpack_require__(490),defineWellKnownSymbol=__webpack_require__(64),setToStringTag=__webpack_require__(118),InternalStateModule=__webpack_require__(110),$forEach=__webpack_require__(155).forEach,HIDDEN=sharedKey("hidden"),TO_PRIMITIVE=wellKnownSymbol("toPrimitive"),setInternalState=InternalStateModule.set,getInternalState=InternalStateModule.getterFor("Symbol"),ObjectPrototype=Object.prototype,$Symbol=global.Symbol,$stringify=getBuiltIn("JSON","stringify"),nativeGetOwnPropertyDescriptor=getOwnPropertyDescriptorModule.f,nativeDefineProperty=definePropertyModule.f,nativeGetOwnPropertyNames=getOwnPropertyNamesExternal.f,nativePropertyIsEnumerable=propertyIsEnumerableModule.f,AllSymbols=shared("symbols"),ObjectPrototypeSymbols=shared("op-symbols"),StringToSymbolRegistry=shared("string-to-symbol-registry"),SymbolToStringRegistry=shared("symbol-to-string-registry"),WellKnownSymbolsStore=shared("wks"),QObject=global.QObject,USE_SETTER=!QObject||!QObject.prototype||!QObject.prototype.findChild,setSymbolDescriptor=DESCRIPTORS&&fails((function(){return 7!=nativeObjectCreate(nativeDefineProperty({},"a",{get:function(){return nativeDefineProperty(this,"a",{value:7}).a}})).a}))?function(O,P,Attributes){var ObjectPrototypeDescriptor=nativeGetOwnPropertyDescriptor(ObjectPrototype,P);ObjectPrototypeDescriptor&&delete ObjectPrototype[P],nativeDefineProperty(O,P,Attributes),ObjectPrototypeDescriptor&&O!==ObjectPrototype&&nativeDefineProperty(ObjectPrototype,P,ObjectPrototypeDescriptor)}:nativeDefineProperty,wrap=function(tag,description){var symbol=AllSymbols[tag]=nativeObjectCreate($Symbol.prototype);return setInternalState(symbol,{type:"Symbol",tag:tag,description:description}),DESCRIPTORS||(symbol.description=description),symbol},isSymbol=USE_SYMBOL_AS_UID?function(it){return"symbol"==typeof it}:function(it){return Object(it)instanceof $Symbol},$defineProperty=function defineProperty(O,P,Attributes){O===ObjectPrototype&&$defineProperty(ObjectPrototypeSymbols,P,Attributes),anObject(O);var key=toPrimitive(P,!0);return anObject(Attributes),has(AllSymbols,key)?(Attributes.enumerable?(has(O,HIDDEN)&&O[HIDDEN][key]&&(O[HIDDEN][key]=!1),Attributes=nativeObjectCreate(Attributes,{enumerable:createPropertyDescriptor(0,!1)})):(has(O,HIDDEN)||nativeDefineProperty(O,HIDDEN,createPropertyDescriptor(1,{})),O[HIDDEN][key]=!0),setSymbolDescriptor(O,key,Attributes)):nativeDefineProperty(O,key,Attributes)},$defineProperties=function defineProperties(O,Properties){anObject(O);var properties=toIndexedObject(Properties),keys=objectKeys(properties).concat($getOwnPropertySymbols(properties));return $forEach(keys,(function(key){DESCRIPTORS&&!$propertyIsEnumerable.call(properties,key)||$defineProperty(O,key,properties[key])})),O},$propertyIsEnumerable=function propertyIsEnumerable(V){var P=toPrimitive(V,!0),enumerable=nativePropertyIsEnumerable.call(this,P);return!(this===ObjectPrototype&&has(AllSymbols,P)&&!has(ObjectPrototypeSymbols,P))&&(!(enumerable||!has(this,P)||!has(AllSymbols,P)||has(this,HIDDEN)&&this[HIDDEN][P])||enumerable)},$getOwnPropertyDescriptor=function getOwnPropertyDescriptor(O,P){var it=toIndexedObject(O),key=toPrimitive(P,!0);if(it!==ObjectPrototype||!has(AllSymbols,key)||has(ObjectPrototypeSymbols,key)){var descriptor=nativeGetOwnPropertyDescriptor(it,key);return!descriptor||!has(AllSymbols,key)||has(it,HIDDEN)&&it[HIDDEN][key]||(descriptor.enumerable=!0),descriptor}},$getOwnPropertyNames=function getOwnPropertyNames(O){var names=nativeGetOwnPropertyNames(toIndexedObject(O)),result=[];return $forEach(names,(function(key){has(AllSymbols,key)||has(hiddenKeys,key)||result.push(key)})),result},$getOwnPropertySymbols=function getOwnPropertySymbols(O){var IS_OBJECT_PROTOTYPE=O===ObjectPrototype,names=nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE?ObjectPrototypeSymbols:toIndexedObject(O)),result=[];return $forEach(names,(function(key){!has(AllSymbols,key)||IS_OBJECT_PROTOTYPE&&!has(ObjectPrototype,key)||result.push(AllSymbols[key])})),result};(NATIVE_SYMBOL||(redefine(($Symbol=function Symbol(){if(this instanceof $Symbol)throw TypeError("Symbol is not a constructor");var description=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,tag=uid(description),setter=function(value){this===ObjectPrototype&&setter.call(ObjectPrototypeSymbols,value),has(this,HIDDEN)&&has(this[HIDDEN],tag)&&(this[HIDDEN][tag]=!1),setSymbolDescriptor(this,tag,createPropertyDescriptor(1,value))};return DESCRIPTORS&&USE_SETTER&&setSymbolDescriptor(ObjectPrototype,tag,{configurable:!0,set:setter}),wrap(tag,description)}).prototype,"toString",(function toString(){return getInternalState(this).tag})),redefine($Symbol,"withoutSetter",(function(description){return wrap(uid(description),description)})),propertyIsEnumerableModule.f=$propertyIsEnumerable,definePropertyModule.f=$defineProperty,getOwnPropertyDescriptorModule.f=$getOwnPropertyDescriptor,getOwnPropertyNamesModule.f=getOwnPropertyNamesExternal.f=$getOwnPropertyNames,getOwnPropertySymbolsModule.f=$getOwnPropertySymbols,wrappedWellKnownSymbolModule.f=function(name){return wrap(wellKnownSymbol(name),name)},DESCRIPTORS&&(nativeDefineProperty($Symbol.prototype,"description",{configurable:!0,get:function description(){return getInternalState(this).description}}),IS_PURE||redefine(ObjectPrototype,"propertyIsEnumerable",$propertyIsEnumerable,{unsafe:!0}))),$({global:!0,wrap:!0,forced:!NATIVE_SYMBOL,sham:!NATIVE_SYMBOL},{Symbol:$Symbol}),$forEach(objectKeys(WellKnownSymbolsStore),(function(name){defineWellKnownSymbol(name)})),$({target:"Symbol",stat:!0,forced:!NATIVE_SYMBOL},{for:function(key){var string=String(key);if(has(StringToSymbolRegistry,string))return StringToSymbolRegistry[string];var symbol=$Symbol(string);return StringToSymbolRegistry[string]=symbol,SymbolToStringRegistry[symbol]=string,symbol},keyFor:function keyFor(sym){if(!isSymbol(sym))throw TypeError(sym+" is not a symbol");if(has(SymbolToStringRegistry,sym))return SymbolToStringRegistry[sym]},useSetter:function(){USE_SETTER=!0},useSimple:function(){USE_SETTER=!1}}),$({target:"Object",stat:!0,forced:!NATIVE_SYMBOL,sham:!DESCRIPTORS},{create:function create(O,Properties){return void 0===Properties?nativeObjectCreate(O):$defineProperties(nativeObjectCreate(O),Properties)},defineProperty:$defineProperty,defineProperties:$defineProperties,getOwnPropertyDescriptor:$getOwnPropertyDescriptor}),$({target:"Object",stat:!0,forced:!NATIVE_SYMBOL},{getOwnPropertyNames:$getOwnPropertyNames,getOwnPropertySymbols:$getOwnPropertySymbols}),$({target:"Object",stat:!0,forced:fails((function(){getOwnPropertySymbolsModule.f(1)}))},{getOwnPropertySymbols:function getOwnPropertySymbols(it){return getOwnPropertySymbolsModule.f(toObject(it))}}),$stringify)&&$({target:"JSON",stat:!0,forced:!NATIVE_SYMBOL||fails((function(){var symbol=$Symbol();return"[null]"!=$stringify([symbol])||"{}"!=$stringify({a:symbol})||"{}"!=$stringify(Object(symbol))}))},{stringify:function stringify(it,replacer,space){for(var $replacer,args=[it],index=1;arguments.length>index;)args.push(arguments[index++]);if($replacer=replacer,(isObject(replacer)||void 0!==it)&&!isSymbol(it))return isArray(replacer)||(replacer=function(key,value){if("function"==typeof $replacer&&(value=$replacer.call(this,key,value)),!isSymbol(value))return value}),args[1]=replacer,$stringify.apply(null,args)}});$Symbol.prototype[TO_PRIMITIVE]||createNonEnumerableProperty($Symbol.prototype,TO_PRIMITIVE,$Symbol.prototype.valueOf),setToStringTag($Symbol,"Symbol"),hiddenKeys[HIDDEN]=!0},function(module,exports,__webpack_require__){var $=__webpack_require__(21),assign=__webpack_require__(493);$({target:"Object",stat:!0,forced:Object.assign!==assign},{assign:assign})},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return capitalize}));var _material_ui_utils__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(637);function capitalize(string){if("string"!=typeof string)throw new Error(Object(_material_ui_utils__WEBPACK_IMPORTED_MODULE_0__.a)(7));return string.charAt(0).toUpperCase()+string.slice(1)}},function(module,exports,__webpack_require__){var DESCRIPTORS=__webpack_require__(71),defineProperty=__webpack_require__(77).f,FunctionPrototype=Function.prototype,FunctionPrototypeToString=FunctionPrototype.toString,nameRE=/^\s*function ([^ (]*)/;DESCRIPTORS&&!("name"in FunctionPrototype)&&defineProperty(FunctionPrototype,"name",{configurable:!0,get:function(){try{return FunctionPrototypeToString.call(this).match(nameRE)[1]}catch(error){return""}}})},function(module,exports,__webpack_require__){"use strict";var $SyntaxError=SyntaxError,$Function=Function,$TypeError=TypeError,getEvalledConstructor=function(expressionSyntax){try{return $Function('"use strict"; return ('+expressionSyntax+").constructor;")()}catch(e){}},$gOPD=Object.getOwnPropertyDescriptor;if($gOPD)try{$gOPD({},"")}catch(e){$gOPD=null}var throwTypeError=function(){throw new $TypeError},ThrowTypeError=$gOPD?function(){try{return throwTypeError}catch(calleeThrows){try{return $gOPD(arguments,"callee").get}catch(gOPDthrows){return throwTypeError}}}():throwTypeError,hasSymbols=__webpack_require__(99)(),getProto=Object.getPrototypeOf||function(x){return x.__proto__},needsEval={},TypedArray="undefined"==typeof Uint8Array?void 0:getProto(Uint8Array),INTRINSICS={"%AggregateError%":"undefined"==typeof AggregateError?void 0:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?void 0:ArrayBuffer,"%ArrayIteratorPrototype%":hasSymbols?getProto([][Symbol.iterator]()):void 0,"%AsyncFromSyncIteratorPrototype%":void 0,"%AsyncFunction%":needsEval,"%AsyncGenerator%":needsEval,"%AsyncGeneratorFunction%":needsEval,"%AsyncIteratorPrototype%":needsEval,"%Atomics%":"undefined"==typeof Atomics?void 0:Atomics,"%BigInt%":"undefined"==typeof BigInt?void 0:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?void 0:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?void 0:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?void 0:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?void 0:FinalizationRegistry,"%Function%":$Function,"%GeneratorFunction%":needsEval,"%Int8Array%":"undefined"==typeof Int8Array?void 0:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?void 0:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?void 0:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":hasSymbols?getProto(getProto([][Symbol.iterator]())):void 0,"%JSON%":"object"==typeof JSON?JSON:void 0,"%Map%":"undefined"==typeof Map?void 0:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&hasSymbols?getProto((new Map)[Symbol.iterator]()):void 0,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?void 0:Promise,"%Proxy%":"undefined"==typeof Proxy?void 0:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?void 0:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?void 0:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&hasSymbols?getProto((new Set)[Symbol.iterator]()):void 0,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?void 0:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":hasSymbols?getProto(""[Symbol.iterator]()):void 0,"%Symbol%":hasSymbols?Symbol:void 0,"%SyntaxError%":$SyntaxError,"%ThrowTypeError%":ThrowTypeError,"%TypedArray%":TypedArray,"%TypeError%":$TypeError,"%Uint8Array%":"undefined"==typeof Uint8Array?void 0:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?void 0:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?void 0:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?void 0:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?void 0:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?void 0:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?void 0:WeakSet},LEGACY_ALIASES={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},bind=__webpack_require__(326),hasOwn=__webpack_require__(89),$concat=bind.call(Function.call,Array.prototype.concat),$spliceApply=bind.call(Function.apply,Array.prototype.splice),$replace=bind.call(Function.call,String.prototype.replace),$strSlice=bind.call(Function.call,String.prototype.slice),rePropName=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,reEscapeChar=/\\(\\)?/g,stringToPath=function stringToPath(string){var first=$strSlice(string,0,1),last=$strSlice(string,-1);if("%"===first&&"%"!==last)throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`");if("%"===last&&"%"!==first)throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`");var result=[];return $replace(string,rePropName,(function(match,number,quote,subString){result[result.length]=quote?$replace(subString,reEscapeChar,"$1"):number||match})),result},getBaseIntrinsic=function getBaseIntrinsic(name,allowMissing){var alias,intrinsicName=name;if(hasOwn(LEGACY_ALIASES,intrinsicName)&&(intrinsicName="%"+(alias=LEGACY_ALIASES[intrinsicName])[0]+"%"),hasOwn(INTRINSICS,intrinsicName)){var value=INTRINSICS[intrinsicName];if(value===needsEval&&(value=function doEval(name){var value;if("%AsyncFunction%"===name)value=getEvalledConstructor("async function () {}");else if("%GeneratorFunction%"===name)value=getEvalledConstructor("function* () {}");else if("%AsyncGeneratorFunction%"===name)value=getEvalledConstructor("async function* () {}");else if("%AsyncGenerator%"===name){var fn=doEval("%AsyncGeneratorFunction%");fn&&(value=fn.prototype)}else if("%AsyncIteratorPrototype%"===name){var gen=doEval("%AsyncGenerator%");gen&&(value=getProto(gen.prototype))}return INTRINSICS[name]=value,value}(intrinsicName)),void 0===value&&!allowMissing)throw new $TypeError("intrinsic "+name+" exists, but is not available. Please file an issue!");return{alias:alias,name:intrinsicName,value:value}}throw new $SyntaxError("intrinsic "+name+" does not exist!")};module.exports=function GetIntrinsic(name,allowMissing){if("string"!=typeof name||0===name.length)throw new $TypeError("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof allowMissing)throw new $TypeError('"allowMissing" argument must be a boolean');var parts=stringToPath(name),intrinsicBaseName=parts.length>0?parts[0]:"",intrinsic=getBaseIntrinsic("%"+intrinsicBaseName+"%",allowMissing),intrinsicRealName=intrinsic.name,value=intrinsic.value,skipFurtherCaching=!1,alias=intrinsic.alias;alias&&(intrinsicBaseName=alias[0],$spliceApply(parts,$concat([0,1],alias)));for(var i=1,isOwn=!0;i=parts.length){var desc=$gOPD(value,part);value=(isOwn=!!desc)&&"get"in desc&&!("originalValue"in desc.get)?desc.get:value[part]}else isOwn=hasOwn(value,part),value=value[part];isOwn&&!skipFurtherCaching&&(INTRINSICS[intrinsicRealName]=value)}}return value}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _exportNames={styled:!0,ignoreSsrWarning:!0,isPropValid:!0,createGlobal:!0,createReset:!0,lighten:!0,darken:!0};Object.defineProperty(exports,"isPropValid",{enumerable:!0,get:function get(){return _isPropValid.default}}),Object.defineProperty(exports,"createGlobal",{enumerable:!0,get:function get(){return _global.createGlobal}}),Object.defineProperty(exports,"createReset",{enumerable:!0,get:function get(){return _global.createReset}}),Object.defineProperty(exports,"lighten",{enumerable:!0,get:function get(){return _utils.lightenColor}}),Object.defineProperty(exports,"darken",{enumerable:!0,get:function get(){return _utils.darkenColor}}),exports.ignoreSsrWarning=exports.styled=void 0;var _styled2=_interopRequireDefault(__webpack_require__(1307)),_base=__webpack_require__(290);Object.keys(_base).forEach((function(key){"default"!==key&&"__esModule"!==key&&(Object.prototype.hasOwnProperty.call(_exportNames,key)||key in exports&&exports[key]===_base[key]||Object.defineProperty(exports,key,{enumerable:!0,get:function get(){return _base[key]}}))}));var _types=__webpack_require__(987);Object.keys(_types).forEach((function(key){"default"!==key&&"__esModule"!==key&&(Object.prototype.hasOwnProperty.call(_exportNames,key)||key in exports&&exports[key]===_types[key]||Object.defineProperty(exports,key,{enumerable:!0,get:function get(){return _types[key]}}))}));var _core=__webpack_require__(125);Object.keys(_core).forEach((function(key){"default"!==key&&"__esModule"!==key&&(Object.prototype.hasOwnProperty.call(_exportNames,key)||key in exports&&exports[key]===_core[key]||Object.defineProperty(exports,key,{enumerable:!0,get:function get(){return _core[key]}}))}));var _emotionTheming=__webpack_require__(988);Object.keys(_emotionTheming).forEach((function(key){"default"!==key&&"__esModule"!==key&&(Object.prototype.hasOwnProperty.call(_exportNames,key)||key in exports&&exports[key]===_emotionTheming[key]||Object.defineProperty(exports,key,{enumerable:!0,get:function get(){return _emotionTheming[key]}}))}));var _isPropValid=_interopRequireDefault(__webpack_require__(434)),_global=__webpack_require__(991),_create=__webpack_require__(547);Object.keys(_create).forEach((function(key){"default"!==key&&"__esModule"!==key&&(Object.prototype.hasOwnProperty.call(_exportNames,key)||key in exports&&exports[key]===_create[key]||Object.defineProperty(exports,key,{enumerable:!0,get:function get(){return _create[key]}}))}));var _convert=__webpack_require__(549);Object.keys(_convert).forEach((function(key){"default"!==key&&"__esModule"!==key&&(Object.prototype.hasOwnProperty.call(_exportNames,key)||key in exports&&exports[key]===_convert[key]||Object.defineProperty(exports,key,{enumerable:!0,get:function get(){return _convert[key]}}))}));var _ensure=__webpack_require__(995);Object.keys(_ensure).forEach((function(key){"default"!==key&&"__esModule"!==key&&(Object.prototype.hasOwnProperty.call(_exportNames,key)||key in exports&&exports[key]===_ensure[key]||Object.defineProperty(exports,key,{enumerable:!0,get:function get(){return _ensure[key]}}))}));var _utils=__webpack_require__(291);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var styled=_styled2.default;exports.styled=styled;exports.ignoreSsrWarning="/* emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason */"},function(module,exports,__webpack_require__){var $=__webpack_require__(21),toObject=__webpack_require__(91),nativeKeys=__webpack_require__(233);$({target:"Object",stat:!0,forced:__webpack_require__(48)((function(){nativeKeys(1)}))},{keys:function keys(it){return nativeKeys(toObject(it))}})},function(module,exports,__webpack_require__){"use strict";var $=__webpack_require__(21),DESCRIPTORS=__webpack_require__(71),global=__webpack_require__(40),has=__webpack_require__(75),isObject=__webpack_require__(55),defineProperty=__webpack_require__(77).f,copyConstructorProperties=__webpack_require__(486),NativeSymbol=global.Symbol;if(DESCRIPTORS&&"function"==typeof NativeSymbol&&(!("description"in NativeSymbol.prototype)||void 0!==NativeSymbol().description)){var EmptyStringDescriptionStore={},SymbolWrapper=function Symbol(){var description=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),result=this instanceof SymbolWrapper?new NativeSymbol(description):void 0===description?NativeSymbol():NativeSymbol(description);return""===description&&(EmptyStringDescriptionStore[result]=!0),result};copyConstructorProperties(SymbolWrapper,NativeSymbol);var symbolPrototype=SymbolWrapper.prototype=NativeSymbol.prototype;symbolPrototype.constructor=SymbolWrapper;var symbolToString=symbolPrototype.toString,native="Symbol(test)"==String(NativeSymbol("test")),regexp=/^Symbol\((.*)\)[^)]+$/;defineProperty(symbolPrototype,"description",{configurable:!0,get:function description(){var symbol=isObject(this)?this.valueOf():this,string=symbolToString.call(symbol);if(has(EmptyStringDescriptionStore,symbol))return"";var desc=native?string.slice(7,-1):string.replace(regexp,"$1");return""===desc?void 0:desc}}),$({global:!0,forced:!0},{Symbol:SymbolWrapper})}},function(module,exports,__webpack_require__){"use strict";var $=__webpack_require__(21),isObject=__webpack_require__(55),isArray=__webpack_require__(229),toAbsoluteIndex=__webpack_require__(346),toLength=__webpack_require__(92),toIndexedObject=__webpack_require__(138),createProperty=__webpack_require__(267),wellKnownSymbol=__webpack_require__(52),HAS_SPECIES_SUPPORT=__webpack_require__(232)("slice"),SPECIES=wellKnownSymbol("species"),nativeSlice=[].slice,max=Math.max;$({target:"Array",proto:!0,forced:!HAS_SPECIES_SUPPORT},{slice:function slice(start,end){var Constructor,result,n,O=toIndexedObject(this),length=toLength(O.length),k=toAbsoluteIndex(start,length),fin=toAbsoluteIndex(void 0===end?length:end,length);if(isArray(O)&&("function"!=typeof(Constructor=O.constructor)||Constructor!==Array&&!isArray(Constructor.prototype)?isObject(Constructor)&&null===(Constructor=Constructor[SPECIES])&&(Constructor=void 0):Constructor=void 0,Constructor===Array||void 0===Constructor))return nativeSlice.call(O,k,fin);for(result=new(void 0===Constructor?Array:Constructor)(max(fin-k,0)),n=0;k1&&void 0!==arguments[1]?arguments[1]:0,max=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return Math.min(Math.max(min,value),max)}function decomposeColor(color){if(color.type)return color;if("#"===color.charAt(0))return decomposeColor(function hexToRgb(color){color=color.substr(1);var re=new RegExp(".{1,".concat(color.length>=6?2:1,"}"),"g"),colors=color.match(re);return colors&&1===colors[0].length&&(colors=colors.map((function(n){return n+n}))),colors?"rgb".concat(4===colors.length?"a":"","(").concat(colors.map((function(n,index){return index<3?parseInt(n,16):Math.round(parseInt(n,16)/255*1e3)/1e3})).join(", "),")"):""}(color));var marker=color.indexOf("("),type=color.substring(0,marker);if(-1===["rgb","rgba","hsl","hsla"].indexOf(type))throw new Error(Object(_material_ui_utils__WEBPACK_IMPORTED_MODULE_0__.a)(3,color));var values=color.substring(marker+1,color.length-1).split(",");return{type:type,values:values=values.map((function(value){return parseFloat(value)}))}}function recomposeColor(color){var type=color.type,values=color.values;return-1!==type.indexOf("rgb")?values=values.map((function(n,i){return i<3?parseInt(n,10):n})):-1!==type.indexOf("hsl")&&(values[1]="".concat(values[1],"%"),values[2]="".concat(values[2],"%")),"".concat(type,"(").concat(values.join(", "),")")}function getContrastRatio(foreground,background){var lumA=getLuminance(foreground),lumB=getLuminance(background);return(Math.max(lumA,lumB)+.05)/(Math.min(lumA,lumB)+.05)}function getLuminance(color){var rgb="hsl"===(color=decomposeColor(color)).type?decomposeColor(function hslToRgb(color){var values=(color=decomposeColor(color)).values,h=values[0],s=values[1]/100,l=values[2]/100,a=s*Math.min(l,1-l),f=function f(n){var k=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(n+h/30)%12;return l-a*Math.max(Math.min(k-3,9-k,1),-1)},type="rgb",rgb=[Math.round(255*f(0)),Math.round(255*f(8)),Math.round(255*f(4))];return"hsla"===color.type&&(type+="a",rgb.push(values[3])),recomposeColor({type:type,values:rgb})}(color)).values:color.values;return rgb=rgb.map((function(val){return(val/=255)<=.03928?val/12.92:Math.pow((val+.055)/1.055,2.4)})),Number((.2126*rgb[0]+.7152*rgb[1]+.0722*rgb[2]).toFixed(3))}function emphasize(color){var coefficient=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.15;return getLuminance(color)>.5?darken(color,coefficient):lighten(color,coefficient)}function fade(color,value){return color=decomposeColor(color),value=clamp(value),"rgb"!==color.type&&"hsl"!==color.type||(color.type+="a"),color.values[3]=value,recomposeColor(color)}function darken(color,coefficient){if(color=decomposeColor(color),coefficient=clamp(coefficient),-1!==color.type.indexOf("hsl"))color.values[2]*=1-coefficient;else if(-1!==color.type.indexOf("rgb"))for(var i=0;i<3;i+=1)color.values[i]*=1-coefficient;return recomposeColor(color)}function lighten(color,coefficient){if(color=decomposeColor(color),coefficient=clamp(coefficient),-1!==color.type.indexOf("hsl"))color.values[2]+=(100-color.values[2])*coefficient;else if(-1!==color.type.indexOf("rgb"))for(var i=0;i<3;i+=1)color.values[i]+=(255-color.values[i])*coefficient;return recomposeColor(color)}},function(module,exports,__webpack_require__){"use strict";var toIndexedObject=__webpack_require__(138),addToUnscopables=__webpack_require__(364),Iterators=__webpack_require__(236),InternalStateModule=__webpack_require__(110),defineIterator=__webpack_require__(365),setInternalState=InternalStateModule.set,getInternalState=InternalStateModule.getterFor("Array Iterator");module.exports=defineIterator(Array,"Array",(function(iterated,kind){setInternalState(this,{type:"Array Iterator",target:toIndexedObject(iterated),index:0,kind:kind})}),(function(){var state=getInternalState(this),target=state.target,kind=state.kind,index=state.index++;return!target||index>=target.length?(state.target=void 0,{value:void 0,done:!0}):"keys"==kind?{value:index,done:!1}:"values"==kind?{value:target[index],done:!1}:{value:[index,target[index]],done:!1}}),"values"),Iterators.Arguments=Iterators.Array,addToUnscopables("keys"),addToUnscopables("values"),addToUnscopables("entries")},function(module,exports,__webpack_require__){"use strict";var charAt=__webpack_require__(359).charAt,InternalStateModule=__webpack_require__(110),defineIterator=__webpack_require__(365),setInternalState=InternalStateModule.set,getInternalState=InternalStateModule.getterFor("String Iterator");defineIterator(String,"String",(function(iterated){setInternalState(this,{type:"String Iterator",string:String(iterated),index:0})}),(function next(){var point,state=getInternalState(this),string=state.string,index=state.index;return index>=string.length?{value:void 0,done:!0}:(point=charAt(string,index),state.index+=point.length,{value:point,done:!1})}))},function(module,exports){module.exports=function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")},module.exports.default=module.exports,module.exports.__esModule=!0},function(module,exports,__webpack_require__){__webpack_require__(21)({target:"Array",stat:!0},{isArray:__webpack_require__(229)})},function(module,exports,__webpack_require__){var global=__webpack_require__(40),DOMIterables=__webpack_require__(496),ArrayIteratorMethods=__webpack_require__(23),createNonEnumerableProperty=__webpack_require__(117),wellKnownSymbol=__webpack_require__(52),ITERATOR=wellKnownSymbol("iterator"),TO_STRING_TAG=wellKnownSymbol("toStringTag"),ArrayValues=ArrayIteratorMethods.values;for(var COLLECTION_NAME in DOMIterables){var Collection=global[COLLECTION_NAME],CollectionPrototype=Collection&&Collection.prototype;if(CollectionPrototype){if(CollectionPrototype[ITERATOR]!==ArrayValues)try{createNonEnumerableProperty(CollectionPrototype,ITERATOR,ArrayValues)}catch(error){CollectionPrototype[ITERATOR]=ArrayValues}if(CollectionPrototype[TO_STRING_TAG]||createNonEnumerableProperty(CollectionPrototype,TO_STRING_TAG,COLLECTION_NAME),DOMIterables[COLLECTION_NAME])for(var METHOD_NAME in ArrayIteratorMethods)if(CollectionPrototype[METHOD_NAME]!==ArrayIteratorMethods[METHOD_NAME])try{createNonEnumerableProperty(CollectionPrototype,METHOD_NAME,ArrayIteratorMethods[METHOD_NAME])}catch(error){CollectionPrototype[METHOD_NAME]=ArrayIteratorMethods[METHOD_NAME]}}}},function(module,exports){function _defineProperties(target,props){for(var i=0;i=51||!fails((function(){var array=[];return array[IS_CONCAT_SPREADABLE]=!1,array.concat()[0]!==array})),SPECIES_SUPPORT=arrayMethodHasSpeciesSupport("concat"),isConcatSpreadable=function(O){if(!isObject(O))return!1;var spreadable=O[IS_CONCAT_SPREADABLE];return void 0!==spreadable?!!spreadable:isArray(O)};$({target:"Array",proto:!0,forced:!IS_CONCAT_SPREADABLE_SUPPORT||!SPECIES_SUPPORT},{concat:function concat(arg){var i,k,length,len,E,O=toObject(this),A=arraySpeciesCreate(O,0),n=0;for(i=-1,length=arguments.length;i9007199254740991)throw TypeError("Maximum allowed index exceeded");for(k=0;k=9007199254740991)throw TypeError("Maximum allowed index exceeded");createProperty(A,n++,E)}return A.length=n,A}})},function(module,exports,__webpack_require__){"use strict";var $=__webpack_require__(21),$indexOf=__webpack_require__(345).indexOf,arrayMethodIsStrict=__webpack_require__(185),nativeIndexOf=[].indexOf,NEGATIVE_ZERO=!!nativeIndexOf&&1/[1].indexOf(1,-0)<0,STRICT_METHOD=arrayMethodIsStrict("indexOf");$({target:"Array",proto:!0,forced:NEGATIVE_ZERO||!STRICT_METHOD},{indexOf:function indexOf(searchElement){return NEGATIVE_ZERO?nativeIndexOf.apply(this,arguments)||0:$indexOf(this,searchElement,arguments.length>1?arguments[1]:void 0)}})},function(module,exports,__webpack_require__){"use strict";var redefine=__webpack_require__(84),anObject=__webpack_require__(61),fails=__webpack_require__(48),flags=__webpack_require__(355),RegExpPrototype=RegExp.prototype,nativeToString=RegExpPrototype.toString,NOT_GENERIC=fails((function(){return"/a/b"!=nativeToString.call({source:"a",flags:"b"})})),INCORRECT_NAME="toString"!=nativeToString.name;(NOT_GENERIC||INCORRECT_NAME)&&redefine(RegExp.prototype,"toString",(function toString(){var R=anObject(this),p=String(R.source),rf=R.flags;return"/"+p+"/"+String(void 0===rf&&R instanceof RegExp&&!("flags"in RegExpPrototype)?flags.call(R):rf)}),{unsafe:!0})},function(module,exports,__webpack_require__){"use strict";var $=__webpack_require__(21),$map=__webpack_require__(155).map;$({target:"Array",proto:!0,forced:!__webpack_require__(232)("map")},{map:function map(callbackfn){return $map(this,callbackfn,arguments.length>1?arguments[1]:void 0)}})},function(module,exports,__webpack_require__){__webpack_require__(64)("iterator")},function(module,exports,__webpack_require__){var redefine=__webpack_require__(84),DatePrototype=Date.prototype,nativeDateToString=DatePrototype.toString,getTime=DatePrototype.getTime;new Date(NaN)+""!="Invalid Date"&&redefine(DatePrototype,"toString",(function toString(){var value=getTime.call(this);return value==value?nativeDateToString.call(this):"Invalid Date"}))},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return useForkRef}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),_setRef__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(86);function useForkRef(refA,refB){return react__WEBPACK_IMPORTED_MODULE_0__.useMemo((function(){return null==refA&&null==refB?null:function(refValue){Object(_setRef__WEBPACK_IMPORTED_MODULE_1__.a)(refA,refValue),Object(_setRef__WEBPACK_IMPORTED_MODULE_1__.a)(refB,refValue)}}),[refA,refB])}},,function(module,exports,__webpack_require__){"use strict";var $=__webpack_require__(21),exec=__webpack_require__(356);$({target:"RegExp",proto:!0,forced:/./.exec!==exec},{exec:exec})},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return _slicedToArray}));var unsupportedIterableToArray=__webpack_require__(214);function _slicedToArray(arr,i){return function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}(arr)||function _iterableToArrayLimit(arr,i){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(arr)){var _arr=[],_n=!0,_d=!1,_e=void 0;try{for(var _s,_i=arr[Symbol.iterator]();!(_n=(_s=_i.next()).done)&&(_arr.push(_s.value),!i||_arr.length!==i);_n=!0);}catch(err){_d=!0,_e=err}finally{try{_n||null==_i.return||_i.return()}finally{if(_d)throw _e}}return _arr}}(arr,i)||Object(unsupportedIterableToArray.a)(arr,i)||function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},function(module,exports,__webpack_require__){"use strict";!function checkDCE(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE)}catch(err){console.error(err)}}}(),module.exports=__webpack_require__(970)},function(module,exports,__webpack_require__){(function(global){var check=function(it){return it&&it.Math==Math&&it};module.exports=check("object"==typeof globalThis&&globalThis)||check("object"==typeof window&&window)||check("object"==typeof self&&self)||check("object"==typeof global&&global)||function(){return this}()||Function("return this")()}).call(this,__webpack_require__(74))},function(module,exports,__webpack_require__){var $=__webpack_require__(21),from=__webpack_require__(499);$({target:"Array",stat:!0,forced:!__webpack_require__(363)((function(iterable){Array.from(iterable)}))},{from:from})},function(module,__webpack_exports__,__webpack_require__){"use strict";function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}__webpack_require__.d(__webpack_exports__,"a",(function(){return _defineProperty}))},function(module,exports,__webpack_require__){module.exports=__webpack_require__(201)},function(module,exports,__webpack_require__){var _typeof=__webpack_require__(606).default,assertThisInitialized=__webpack_require__(8);module.exports=function _possibleConstructorReturn(self,call){return!call||"object"!==_typeof(call)&&"function"!=typeof call?assertThisInitialized(self):call},module.exports.default=module.exports,module.exports.__esModule=!0},function(module,exports){function _getPrototypeOf(o){return module.exports=_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o)},module.exports.default=module.exports,module.exports.__esModule=!0,_getPrototypeOf(o)}module.exports=_getPrototypeOf,module.exports.default=module.exports,module.exports.__esModule=!0},function(module,exports,__webpack_require__){var setPrototypeOf=__webpack_require__(546);module.exports=function _inherits(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function");subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:!0,configurable:!0}}),superClass&&setPrototypeOf(subClass,superClass)},module.exports.default=module.exports,module.exports.__esModule=!0},function(module,exports,__webpack_require__){"use strict";var ES5Type=__webpack_require__(462);module.exports=function Type(x){return"symbol"==typeof x?"Symbol":"bigint"==typeof x?"BigInt":ES5Type(x)}},function(module,exports){module.exports=function(exec){try{return!!exec()}catch(error){return!0}}},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return _inheritsLoose}));var _setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(213);function _inheritsLoose(subClass,superClass){subClass.prototype=Object.create(superClass.prototype),subClass.prototype.constructor=subClass,Object(_setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__.a)(subClass,superClass)}},function(module,exports){module.exports=function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}},module.exports.default=module.exports,module.exports.__esModule=!0},,function(module,exports,__webpack_require__){var global=__webpack_require__(40),shared=__webpack_require__(265),has=__webpack_require__(75),uid=__webpack_require__(266),NATIVE_SYMBOL=__webpack_require__(350),USE_SYMBOL_AS_UID=__webpack_require__(488),WellKnownSymbolsStore=shared("wks"),Symbol=global.Symbol,createWellKnownSymbol=USE_SYMBOL_AS_UID?Symbol:Symbol&&Symbol.withoutSetter||uid;module.exports=function(name){return has(WellKnownSymbolsStore,name)&&(NATIVE_SYMBOL||"string"==typeof WellKnownSymbolsStore[name])||(NATIVE_SYMBOL&&has(Symbol,name)?WellKnownSymbolsStore[name]=Symbol[name]:WellKnownSymbolsStore[name]=createWellKnownSymbol("Symbol."+name)),WellKnownSymbolsStore[name]}},function(module,exports,__webpack_require__){(function(global){var win;win="undefined"!=typeof window?window:void 0!==global?global:"undefined"!=typeof self?self:{},module.exports=win}).call(this,__webpack_require__(74))},function(module,exports,__webpack_require__){"use strict";var GetIntrinsic=__webpack_require__(15),callBind=__webpack_require__(221),$indexOf=callBind(GetIntrinsic("String.prototype.indexOf"));module.exports=function callBoundIntrinsic(name,allowMissing){var intrinsic=GetIntrinsic(name,!!allowMissing);return"function"==typeof intrinsic&&$indexOf(name,".prototype.")>-1?callBind(intrinsic):intrinsic}},function(module,exports){module.exports=function(it){return"object"==typeof it?null!==it:"function"==typeof it}},function(module,exports,__webpack_require__){var $=__webpack_require__(21),DESCRIPTORS=__webpack_require__(71);$({target:"Object",stat:!0,forced:!DESCRIPTORS,sham:!DESCRIPTORS},{defineProperties:__webpack_require__(353)})},function(module,exports,__webpack_require__){var $=__webpack_require__(21),FREEZING=__webpack_require__(494),fails=__webpack_require__(48),isObject=__webpack_require__(55),onFreeze=__webpack_require__(234).onFreeze,$freeze=Object.freeze;$({target:"Object",stat:!0,forced:fails((function(){$freeze(1)})),sham:!FREEZING},{freeze:function freeze(it){return $freeze&&isObject(it)?$freeze(onFreeze(it)):it}})},function(module,exports,__webpack_require__){"use strict";__webpack_require__(29),__webpack_require__(37),__webpack_require__(78),Object.defineProperty(exports,"__esModule",{value:!0}),exports.pretty=exports.logger=void 0;var _global=__webpack_require__(53),levels={trace:1,debug:2,info:3,warn:4,error:5,silent:10},currentLogLevelString=_global.LOGLEVEL,currentLogLevelNumber=levels[currentLogLevelString]||levels.info,logger={trace:function trace(message){for(var _len=arguments.length,rest=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)rest[_key-1]=arguments[_key];return currentLogLevelNumber<=levels.trace&&_global.console.trace.apply(_global.console,[message].concat(rest))},debug:function debug(message){for(var _len2=arguments.length,rest=new Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++)rest[_key2-1]=arguments[_key2];return currentLogLevelNumber<=levels.debug&&_global.console.debug.apply(_global.console,[message].concat(rest))},info:function info(message){for(var _len3=arguments.length,rest=new Array(_len3>1?_len3-1:0),_key3=1;_key3<_len3;_key3++)rest[_key3-1]=arguments[_key3];return currentLogLevelNumber<=levels.info&&_global.console.info.apply(_global.console,[message].concat(rest))},warn:function warn(message){for(var _len4=arguments.length,rest=new Array(_len4>1?_len4-1:0),_key4=1;_key4<_len4;_key4++)rest[_key4-1]=arguments[_key4];return currentLogLevelNumber<=levels.warn&&_global.console.warn.apply(_global.console,[message].concat(rest))},error:function error(message){for(var _len5=arguments.length,rest=new Array(_len5>1?_len5-1:0),_key5=1;_key5<_len5;_key5++)rest[_key5-1]=arguments[_key5];return currentLogLevelNumber<=levels.error&&_global.console.error.apply(_global.console,[message].concat(rest))},log:function log(message){for(var _len6=arguments.length,rest=new Array(_len6>1?_len6-1:0),_key6=1;_key6<_len6;_key6++)rest[_key6-1]=arguments[_key6];return currentLogLevelNumber/gi,endTagRe=/<\/span>/gi;for(argArray.push(args[0].replace(startTagRe,"%c").replace(endTagRe,"%c"));reResultArray=startTagRe.exec(args[0]);)argArray.push(reResultArray[2]),argArray.push("");for(var j=1;j2?arguments[2]:{},props=keys(map);hasSymbols&&(props=concat.call(props,Object.getOwnPropertySymbols(map)));for(var i=0;i=0||(target[key]=source[key]);return target}__webpack_require__.d(__webpack_exports__,"a",(function(){return _objectWithoutPropertiesLoose}))},function(module,exports){var g;g=function(){return this}();try{g=g||new Function("return this")()}catch(e){"object"==typeof window&&(g=window)}module.exports=g},function(module,exports,__webpack_require__){var toObject=__webpack_require__(91),hasOwnProperty={}.hasOwnProperty;module.exports=function hasOwn(it,key){return hasOwnProperty.call(toObject(it),key)}},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"adjustHue",(function(){return curriedAdjustHue})),__webpack_require__.d(__webpack_exports__,"animation",(function(){return animation})),__webpack_require__.d(__webpack_exports__,"backgroundImages",(function(){return backgroundImages})),__webpack_require__.d(__webpack_exports__,"backgrounds",(function(){return backgrounds})),__webpack_require__.d(__webpack_exports__,"between",(function(){return between})),__webpack_require__.d(__webpack_exports__,"border",(function(){return border})),__webpack_require__.d(__webpack_exports__,"borderColor",(function(){return borderColor})),__webpack_require__.d(__webpack_exports__,"borderRadius",(function(){return borderRadius})),__webpack_require__.d(__webpack_exports__,"borderStyle",(function(){return borderStyle})),__webpack_require__.d(__webpack_exports__,"borderWidth",(function(){return borderWidth})),__webpack_require__.d(__webpack_exports__,"buttons",(function(){return buttons})),__webpack_require__.d(__webpack_exports__,"clearFix",(function(){return clearFix})),__webpack_require__.d(__webpack_exports__,"complement",(function(){return complement})),__webpack_require__.d(__webpack_exports__,"cover",(function(){return cover})),__webpack_require__.d(__webpack_exports__,"cssVar",(function(){return cssVar})),__webpack_require__.d(__webpack_exports__,"darken",(function(){return curriedDarken})),__webpack_require__.d(__webpack_exports__,"desaturate",(function(){return curriedDesaturate})),__webpack_require__.d(__webpack_exports__,"directionalProperty",(function(){return directionalProperty})),__webpack_require__.d(__webpack_exports__,"ellipsis",(function(){return ellipsis})),__webpack_require__.d(__webpack_exports__,"em",(function(){return em})),__webpack_require__.d(__webpack_exports__,"fluidRange",(function(){return fluidRange})),__webpack_require__.d(__webpack_exports__,"fontFace",(function(){return fontFace})),__webpack_require__.d(__webpack_exports__,"getContrast",(function(){return getContrast})),__webpack_require__.d(__webpack_exports__,"getLuminance",(function(){return getLuminance})),__webpack_require__.d(__webpack_exports__,"getValueAndUnit",(function(){return getValueAndUnit})),__webpack_require__.d(__webpack_exports__,"grayscale",(function(){return grayscale})),__webpack_require__.d(__webpack_exports__,"hiDPI",(function(){return hiDPI})),__webpack_require__.d(__webpack_exports__,"hideText",(function(){return hideText})),__webpack_require__.d(__webpack_exports__,"hideVisually",(function(){return hideVisually})),__webpack_require__.d(__webpack_exports__,"hsl",(function(){return hsl})),__webpack_require__.d(__webpack_exports__,"hslToColorString",(function(){return hslToColorString})),__webpack_require__.d(__webpack_exports__,"hsla",(function(){return hsla})),__webpack_require__.d(__webpack_exports__,"invert",(function(){return invert})),__webpack_require__.d(__webpack_exports__,"lighten",(function(){return curriedLighten})),__webpack_require__.d(__webpack_exports__,"linearGradient",(function(){return linearGradient})),__webpack_require__.d(__webpack_exports__,"margin",(function(){return margin})),__webpack_require__.d(__webpack_exports__,"math",(function(){return math})),__webpack_require__.d(__webpack_exports__,"meetsContrastGuidelines",(function(){return meetsContrastGuidelines})),__webpack_require__.d(__webpack_exports__,"mix",(function(){return curriedMix})),__webpack_require__.d(__webpack_exports__,"modularScale",(function(){return modularScale})),__webpack_require__.d(__webpack_exports__,"normalize",(function(){return normalize})),__webpack_require__.d(__webpack_exports__,"opacify",(function(){return curriedOpacify})),__webpack_require__.d(__webpack_exports__,"padding",(function(){return padding})),__webpack_require__.d(__webpack_exports__,"parseToHsl",(function(){return parseToHsl})),__webpack_require__.d(__webpack_exports__,"parseToRgb",(function(){return parseToRgb})),__webpack_require__.d(__webpack_exports__,"position",(function(){return polished_esm_position})),__webpack_require__.d(__webpack_exports__,"radialGradient",(function(){return radialGradient})),__webpack_require__.d(__webpack_exports__,"readableColor",(function(){return readableColor})),__webpack_require__.d(__webpack_exports__,"rem",(function(){return rem})),__webpack_require__.d(__webpack_exports__,"retinaImage",(function(){return retinaImage})),__webpack_require__.d(__webpack_exports__,"rgb",(function(){return rgb})),__webpack_require__.d(__webpack_exports__,"rgbToColorString",(function(){return rgbToColorString})),__webpack_require__.d(__webpack_exports__,"rgba",(function(){return rgba})),__webpack_require__.d(__webpack_exports__,"saturate",(function(){return curriedSaturate})),__webpack_require__.d(__webpack_exports__,"setHue",(function(){return curriedSetHue})),__webpack_require__.d(__webpack_exports__,"setLightness",(function(){return curriedSetLightness})),__webpack_require__.d(__webpack_exports__,"setSaturation",(function(){return curriedSetSaturation})),__webpack_require__.d(__webpack_exports__,"shade",(function(){return curriedShade})),__webpack_require__.d(__webpack_exports__,"size",(function(){return size})),__webpack_require__.d(__webpack_exports__,"stripUnit",(function(){return stripUnit})),__webpack_require__.d(__webpack_exports__,"textInputs",(function(){return textInputs})),__webpack_require__.d(__webpack_exports__,"timingFunctions",(function(){return timingFunctions})),__webpack_require__.d(__webpack_exports__,"tint",(function(){return curriedTint})),__webpack_require__.d(__webpack_exports__,"toColorString",(function(){return toColorString})),__webpack_require__.d(__webpack_exports__,"transitions",(function(){return transitions})),__webpack_require__.d(__webpack_exports__,"transparentize",(function(){return curriedTransparentize})),__webpack_require__.d(__webpack_exports__,"triangle",(function(){return triangle})),__webpack_require__.d(__webpack_exports__,"wordWrap",(function(){return wordWrap}));var esm_extends=__webpack_require__(2),assertThisInitialized=__webpack_require__(82),inheritsLoose=__webpack_require__(49);function _getPrototypeOf(o){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o)})(o)}var setPrototypeOf=__webpack_require__(213);function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function construct_construct(Parent,args,Class){return(construct_construct=_isNativeReflectConstruct()?Reflect.construct:function _construct(Parent,args,Class){var a=[null];a.push.apply(a,args);var instance=new(Function.bind.apply(Parent,a));return Class&&Object(setPrototypeOf.a)(instance,Class.prototype),instance}).apply(null,arguments)}function wrapNativeSuper_wrapNativeSuper(Class){var _cache="function"==typeof Map?new Map:void 0;return(wrapNativeSuper_wrapNativeSuper=function _wrapNativeSuper(Class){if(null===Class||!function _isNativeFunction(fn){return-1!==Function.toString.call(fn).indexOf("[native code]")}(Class))return Class;if("function"!=typeof Class)throw new TypeError("Super expression must either be null or a function");if(void 0!==_cache){if(_cache.has(Class))return _cache.get(Class);_cache.set(Class,Wrapper)}function Wrapper(){return construct_construct(Class,arguments,_getPrototypeOf(this).constructor)}return Wrapper.prototype=Object.create(Class.prototype,{constructor:{value:Wrapper,enumerable:!1,writable:!0,configurable:!0}}),Object(setPrototypeOf.a)(Wrapper,Class)})(Class)}function _taggedTemplateLiteralLoose(strings,raw){return raw||(raw=strings.slice(0)),strings.raw=raw,strings}function last(){var _ref;return(_ref=arguments.length-1)<0||arguments.length<=_ref?void 0:arguments[_ref]}var defaultMathSymbols={symbols:{"!":{postfix:{symbol:"!",f:function factorial(a){return a%1||!(+a>=0)?NaN:a>170?1/0:0===a?1:a*factorial(a-1)},notation:"postfix",precedence:6,rightToLeft:0,argCount:1},symbol:"!",regSymbol:"!"},"^":{infix:{symbol:"^",f:function power(a,b){return Math.pow(a,b)},notation:"infix",precedence:5,rightToLeft:1,argCount:2},symbol:"^",regSymbol:"\\^"},"*":{infix:{symbol:"*",f:function multiplication(a,b){return a*b},notation:"infix",precedence:4,rightToLeft:0,argCount:2},symbol:"*",regSymbol:"\\*"},"/":{infix:{symbol:"/",f:function division(a,b){return a/b},notation:"infix",precedence:4,rightToLeft:0,argCount:2},symbol:"/",regSymbol:"/"},"+":{infix:{symbol:"+",f:function addition(a,b){return a+b},notation:"infix",precedence:2,rightToLeft:0,argCount:2},prefix:{symbol:"+",f:last,notation:"prefix",precedence:3,rightToLeft:0,argCount:1},symbol:"+",regSymbol:"\\+"},"-":{infix:{symbol:"-",f:function subtraction(a,b){return a-b},notation:"infix",precedence:2,rightToLeft:0,argCount:2},prefix:{symbol:"-",f:function negation(a){return-a},notation:"prefix",precedence:3,rightToLeft:0,argCount:1},symbol:"-",regSymbol:"-"},",":{infix:{symbol:",",f:function comma(){return Array.of.apply(Array,arguments)},notation:"infix",precedence:1,rightToLeft:0,argCount:2},symbol:",",regSymbol:","},"(":{prefix:{symbol:"(",f:last,notation:"prefix",precedence:0,rightToLeft:0,argCount:1},symbol:"(",regSymbol:"\\("},")":{postfix:{symbol:")",f:void 0,notation:"postfix",precedence:0,rightToLeft:0,argCount:1},symbol:")",regSymbol:"\\)"},min:{func:{symbol:"min",f:function min(){return Math.min.apply(Math,arguments)},notation:"func",precedence:0,rightToLeft:0,argCount:1},symbol:"min",regSymbol:"min\\b"},max:{func:{symbol:"max",f:function max(){return Math.max.apply(Math,arguments)},notation:"func",precedence:0,rightToLeft:0,argCount:1},symbol:"max",regSymbol:"max\\b"},sqrt:{func:{symbol:"sqrt",f:function sqrt(a){return Math.sqrt(a)},notation:"func",precedence:0,rightToLeft:0,argCount:1},symbol:"sqrt",regSymbol:"sqrt\\b"}}};var polished_esm_PolishedError=function(_Error){function PolishedError(code){var _this;return _this=_Error.call(this,"An error occurred. See https://github.com/styled-components/polished/blob/main/src/internalHelpers/errors.md#"+code+" for more information.")||this,Object(assertThisInitialized.a)(_this)}return Object(inheritsLoose.a)(PolishedError,_Error),PolishedError}(wrapNativeSuper_wrapNativeSuper(Error)),unitRegExp=/((?!\w)a|na|hc|mc|dg|me[r]?|xe|ni(?![a-zA-Z])|mm|cp|tp|xp|q(?!s)|hv|xamv|nimv|wv|sm|s(?!\D|$)|ged|darg?|nrut)/g;function exec(operators,values){var _ref,op=operators.pop();return values.push(op.f.apply(op,(_ref=[]).concat.apply(_ref,values.splice(-op.argCount)))),op.precedence}function calculate(expression,additionalSymbols){var match,symbolMap=function mergeSymbolMaps(additionalSymbols){var symbolMap={};return symbolMap.symbols=additionalSymbols?Object(esm_extends.a)({},defaultMathSymbols.symbols,additionalSymbols.symbols):Object(esm_extends.a)({},defaultMathSymbols.symbols),symbolMap}(additionalSymbols),operators=[symbolMap.symbols["("].prefix],values=[],pattern=new RegExp("\\d+(?:\\.\\d+)?|"+Object.keys(symbolMap.symbols).map((function(key){return symbolMap.symbols[key]})).sort((function(a,b){return b.symbol.length-a.symbol.length})).map((function(val){return val.regSymbol})).join("|")+"|(\\S)","g");pattern.lastIndex=0;var afterValue=!1;do{var _ref2=(match=pattern.exec(expression))||[")",void 0],token=_ref2[0],bad=_ref2[1],notNumber=symbolMap.symbols[token],notNewValue=notNumber&&!notNumber.prefix&&!notNumber.func,notAfterValue=!notNumber||!notNumber.postfix&&!notNumber.infix;if(bad||(afterValue?notAfterValue:notNewValue))throw new polished_esm_PolishedError(37,match?match.index:expression.length,expression);if(afterValue){var curr=notNumber.postfix||notNumber.infix;do{var prev=operators[operators.length-1];if((curr.precedence-prev.precedence||prev.rightToLeft)>0)break}while(exec(operators,values));afterValue="postfix"===curr.notation,")"!==curr.symbol&&(operators.push(curr),afterValue&&exec(operators,values))}else if(notNumber){if(operators.push(notNumber.prefix||notNumber.func),notNumber.func&&(!(match=pattern.exec(expression))||"("!==match[0]))throw new polished_esm_PolishedError(38,match?match.index:expression.length,expression)}else values.push(+token),afterValue=!0}while(match&&operators.length);if(operators.length)throw new polished_esm_PolishedError(39,match?match.index:expression.length,expression);if(match)throw new polished_esm_PolishedError(40,match?match.index:expression.length,expression);return values.pop()}function reverseString(str){return str.split("").reverse().join("")}function math(formula,additionalSymbols){var reversedFormula=reverseString(formula),formulaMatch=reversedFormula.match(unitRegExp);if(formulaMatch&&!formulaMatch.every((function(unit){return unit===formulaMatch[0]})))throw new polished_esm_PolishedError(41);return""+calculate(reverseString(reversedFormula.replace(unitRegExp,"")),additionalSymbols)+(formulaMatch?reverseString(formulaMatch[0]):"")}var cssVariableRegex=/--[\S]*/g;function cssVar(cssVariable,passThrough){if(!cssVariable||!cssVariable.match(cssVariableRegex)){if(passThrough)return cssVariable;throw new polished_esm_PolishedError(73)}var variableValue;if("undefined"!=typeof document&&null!==document.documentElement&&(variableValue=getComputedStyle(document.documentElement).getPropertyValue(cssVariable)),variableValue)return variableValue.trim();throw new polished_esm_PolishedError(74)}function capitalizeString(string){return string.charAt(0).toUpperCase()+string.slice(1)}var positionMap=["Top","Right","Bottom","Left"];function generateProperty(property,position){if(!property)return position.toLowerCase();var splitProperty=property.split("-");if(splitProperty.length>1)return splitProperty.splice(1,0,position),splitProperty.reduce((function(acc,val){return""+acc+capitalizeString(val)}));var joinedProperty=property.replace(/([a-z])([A-Z])/g,"$1"+position+"$2");return property===joinedProperty?""+property+position:joinedProperty}function generateStyles(property,valuesWithDefaults){for(var styles={},i=0;i1?_len-1:0),_key=1;_key<_len;_key++)values[_key-1]=arguments[_key];var firstValue=values[0],_values$=values[1],secondValue=void 0===_values$?firstValue:_values$,_values$2=values[2],thirdValue=void 0===_values$2?firstValue:_values$2,_values$3=values[3],fourthValue=void 0===_values$3?secondValue:_values$3,valuesWithDefaults=[firstValue,secondValue,thirdValue,fourthValue];return generateStyles(property,valuesWithDefaults)}function endsWith(string,suffix){return string.substr(-suffix.length)===suffix}var cssRegex=/^([+-]?(?:\d+|\d*\.\d+))([a-z]*|%)$/;function stripUnit(value,unitReturn){if("string"!=typeof value)return unitReturn?[value,void 0]:value;var matchedValue=value.match(cssRegex);return unitReturn?(console.warn("stripUnit's unitReturn functionality has been marked for deprecation in polished 4.0. It's functionality has been been moved to getValueAndUnit."),matchedValue?[parseFloat(value),matchedValue[2]]:[value,void 0]):matchedValue?parseFloat(value):value}var pxtoFactory=function pxtoFactory(to){return function(pxval,base){void 0===base&&(base="16px");var newPxval=pxval,newBase=base;if("string"==typeof pxval){if(!endsWith(pxval,"px"))throw new polished_esm_PolishedError(69,to,pxval);newPxval=stripUnit(pxval)}if("string"==typeof base){if(!endsWith(base,"px"))throw new polished_esm_PolishedError(70,to,base);newBase=stripUnit(base)}if("string"==typeof newPxval)throw new polished_esm_PolishedError(71,pxval,to);if("string"==typeof newBase)throw new polished_esm_PolishedError(72,base,to);return""+newPxval/newBase+to}},em=pxtoFactory("em"),cssRegex$1=/^([+-]?(?:\d+|\d*\.\d+))([a-z]*|%)$/;function getValueAndUnit(value){if("string"!=typeof value)return[value,""];var matchedValue=value.match(cssRegex$1);return matchedValue?[parseFloat(value),matchedValue[2]]:[value,void 0]}var ratioNames={minorSecond:1.067,majorSecond:1.125,minorThird:1.2,majorThird:1.25,perfectFourth:1.333,augFourth:1.414,perfectFifth:1.5,minorSixth:1.6,goldenSection:1.618,majorSixth:1.667,minorSeventh:1.778,majorSeventh:1.875,octave:2,majorTenth:2.5,majorEleventh:2.667,majorTwelfth:3,doubleOctave:4};function modularScale(steps,base,ratio){if(void 0===base&&(base="1em"),void 0===ratio&&(ratio=1.333),"number"!=typeof steps)throw new polished_esm_PolishedError(42);if("string"==typeof ratio&&!ratioNames[ratio])throw new polished_esm_PolishedError(43);var _ref="string"==typeof base?getValueAndUnit(base):[base,""],realBase=_ref[0],unit=_ref[1],realRatio="string"==typeof ratio?function getRatio(ratioName){return ratioNames[ratioName]}(ratio):ratio;if("string"==typeof realBase)throw new polished_esm_PolishedError(44,base);return""+realBase*Math.pow(realRatio,steps)+(unit||"")}var rem=pxtoFactory("rem");function between(fromSize,toSize,minScreen,maxScreen){void 0===minScreen&&(minScreen="320px"),void 0===maxScreen&&(maxScreen="1200px");var _getValueAndUnit=getValueAndUnit(fromSize),unitlessFromSize=_getValueAndUnit[0],fromSizeUnit=_getValueAndUnit[1],_getValueAndUnit2=getValueAndUnit(toSize),unitlessToSize=_getValueAndUnit2[0],toSizeUnit=_getValueAndUnit2[1],_getValueAndUnit3=getValueAndUnit(minScreen),unitlessMinScreen=_getValueAndUnit3[0],minScreenUnit=_getValueAndUnit3[1],_getValueAndUnit4=getValueAndUnit(maxScreen),unitlessMaxScreen=_getValueAndUnit4[0],maxScreenUnit=_getValueAndUnit4[1];if("number"!=typeof unitlessMinScreen||"number"!=typeof unitlessMaxScreen||!minScreenUnit||!maxScreenUnit||minScreenUnit!==maxScreenUnit)throw new polished_esm_PolishedError(47);if("number"!=typeof unitlessFromSize||"number"!=typeof unitlessToSize||fromSizeUnit!==toSizeUnit)throw new polished_esm_PolishedError(48);if(fromSizeUnit!==minScreenUnit||toSizeUnit!==maxScreenUnit)throw new polished_esm_PolishedError(75);var slope=(unitlessFromSize-unitlessToSize)/(unitlessMinScreen-unitlessMaxScreen);return"calc("+(unitlessToSize-slope*unitlessMaxScreen).toFixed(2)+(fromSizeUnit||"")+" + "+(100*slope).toFixed(2)+"vw)"}function clearFix(parent){var _ref;return void 0===parent&&(parent="&"),(_ref={})[parent+"::after"]={clear:"both",content:'""',display:"table"},_ref}function cover(offset){return void 0===offset&&(offset=0),{position:"absolute",top:offset,right:offset,bottom:offset,left:offset}}function ellipsis(width){return void 0===width&&(width="100%"),{display:"inline-block",maxWidth:width,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",wordWrap:"normal"}}function _createForOfIteratorHelperLoose(o,allowArrayLike){var it="undefined"!=typeof Symbol&&o[Symbol.iterator]||o["@@iterator"];if(it)return(it=it.call(o)).next.bind(it);if(Array.isArray(o)||(it=function _unsupportedIterableToArray(o,minLen){if(!o)return;if("string"==typeof o)return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);"Object"===n&&o.constructor&&(n=o.constructor.name);if("Map"===n||"Set"===n)return Array.from(o);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}(o))||allowArrayLike&&o&&"number"==typeof o.length){it&&(o=it);var i=0;return function(){return i>=o.length?{done:!0}:{done:!1,value:o[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i1?_len-1:0),_key=1;_key<_len;_key++)substitutions[_key-1]=arguments[_key];for(var i=0;i1?(template=template.slice(0,-1),template+=", "+substitutions[i]):1===definedValues.length&&(template+=""+substitutions[i])}else substitutions[i]&&(template+=substitutions[i]+" ");return template.trim()}function linearGradient(_ref){var colorStops=_ref.colorStops,fallback=_ref.fallback,_ref$toDirection=_ref.toDirection,toDirection=void 0===_ref$toDirection?"":_ref$toDirection;if(!colorStops||colorStops.length<2)throw new polished_esm_PolishedError(56);return{backgroundColor:fallback||colorStops[0].replace(/,\s+/g,",").split(" ")[0].replace(/,(?=\S)/g,", "),backgroundImage:constructGradientValue(_templateObject||(_templateObject=_taggedTemplateLiteralLoose(["linear-gradient(","",")"])),toDirection,colorStops.join(", ").replace(/,(?=\S)/g,", "))}}function normalize(){var _ref;return[(_ref={html:{lineHeight:"1.15",textSizeAdjust:"100%"},body:{margin:"0"},main:{display:"block"},h1:{fontSize:"2em",margin:"0.67em 0"},hr:{boxSizing:"content-box",height:"0",overflow:"visible"},pre:{fontFamily:"monospace, monospace",fontSize:"1em"},a:{backgroundColor:"transparent"},"abbr[title]":{borderBottom:"none",textDecoration:"underline"}},_ref["b,\n strong"]={fontWeight:"bolder"},_ref["code,\n kbd,\n samp"]={fontFamily:"monospace, monospace",fontSize:"1em"},_ref.small={fontSize:"80%"},_ref["sub,\n sup"]={fontSize:"75%",lineHeight:"0",position:"relative",verticalAlign:"baseline"},_ref.sub={bottom:"-0.25em"},_ref.sup={top:"-0.5em"},_ref.img={borderStyle:"none"},_ref["button,\n input,\n optgroup,\n select,\n textarea"]={fontFamily:"inherit",fontSize:"100%",lineHeight:"1.15",margin:"0"},_ref["button,\n input"]={overflow:"visible"},_ref["button,\n select"]={textTransform:"none"},_ref['button,\n html [type="button"],\n [type="reset"],\n [type="submit"]']={WebkitAppearance:"button"},_ref['button::-moz-focus-inner,\n [type="button"]::-moz-focus-inner,\n [type="reset"]::-moz-focus-inner,\n [type="submit"]::-moz-focus-inner']={borderStyle:"none",padding:"0"},_ref['button:-moz-focusring,\n [type="button"]:-moz-focusring,\n [type="reset"]:-moz-focusring,\n [type="submit"]:-moz-focusring']={outline:"1px dotted ButtonText"},_ref.fieldset={padding:"0.35em 0.625em 0.75em"},_ref.legend={boxSizing:"border-box",color:"inherit",display:"table",maxWidth:"100%",padding:"0",whiteSpace:"normal"},_ref.progress={verticalAlign:"baseline"},_ref.textarea={overflow:"auto"},_ref['[type="checkbox"],\n [type="radio"]']={boxSizing:"border-box",padding:"0"},_ref['[type="number"]::-webkit-inner-spin-button,\n [type="number"]::-webkit-outer-spin-button']={height:"auto"},_ref['[type="search"]']={WebkitAppearance:"textfield",outlineOffset:"-2px"},_ref['[type="search"]::-webkit-search-decoration']={WebkitAppearance:"none"},_ref["::-webkit-file-upload-button"]={WebkitAppearance:"button",font:"inherit"},_ref.details={display:"block"},_ref.summary={display:"list-item"},_ref.template={display:"none"},_ref["[hidden]"]={display:"none"},_ref),{"abbr[title]":{textDecoration:"underline dotted"}}]}function radialGradient(_ref){var colorStops=_ref.colorStops,_ref$extent=_ref.extent,extent=void 0===_ref$extent?"":_ref$extent,fallback=_ref.fallback,_ref$position=_ref.position,position=void 0===_ref$position?"":_ref$position,_ref$shape=_ref.shape,shape=void 0===_ref$shape?"":_ref$shape;if(!colorStops||colorStops.length<2)throw new polished_esm_PolishedError(57);return{backgroundColor:fallback||colorStops[0].split(" ")[0],backgroundImage:constructGradientValue(_templateObject$1||(_templateObject$1=_taggedTemplateLiteralLoose(["radial-gradient(","","","",")"])),position,shape,extent,colorStops.join(", "))}}function retinaImage(filename,backgroundSize,extension,retinaFilename,retinaSuffix){var _ref;if(void 0===extension&&(extension="png"),void 0===retinaSuffix&&(retinaSuffix="_2x"),!filename)throw new polished_esm_PolishedError(58);var ext=extension.replace(/^\./,""),rFilename=retinaFilename?retinaFilename+"."+ext:""+filename+retinaSuffix+"."+ext;return(_ref={backgroundImage:"url("+filename+"."+ext+")"})[hiDPI()]=Object(esm_extends.a)({backgroundImage:"url("+rFilename+")"},backgroundSize?{backgroundSize:backgroundSize}:{}),_ref}var functionsMap={easeInBack:"cubic-bezier(0.600, -0.280, 0.735, 0.045)",easeInCirc:"cubic-bezier(0.600, 0.040, 0.980, 0.335)",easeInCubic:"cubic-bezier(0.550, 0.055, 0.675, 0.190)",easeInExpo:"cubic-bezier(0.950, 0.050, 0.795, 0.035)",easeInQuad:"cubic-bezier(0.550, 0.085, 0.680, 0.530)",easeInQuart:"cubic-bezier(0.895, 0.030, 0.685, 0.220)",easeInQuint:"cubic-bezier(0.755, 0.050, 0.855, 0.060)",easeInSine:"cubic-bezier(0.470, 0.000, 0.745, 0.715)",easeOutBack:"cubic-bezier(0.175, 0.885, 0.320, 1.275)",easeOutCubic:"cubic-bezier(0.215, 0.610, 0.355, 1.000)",easeOutCirc:"cubic-bezier(0.075, 0.820, 0.165, 1.000)",easeOutExpo:"cubic-bezier(0.190, 1.000, 0.220, 1.000)",easeOutQuad:"cubic-bezier(0.250, 0.460, 0.450, 0.940)",easeOutQuart:"cubic-bezier(0.165, 0.840, 0.440, 1.000)",easeOutQuint:"cubic-bezier(0.230, 1.000, 0.320, 1.000)",easeOutSine:"cubic-bezier(0.390, 0.575, 0.565, 1.000)",easeInOutBack:"cubic-bezier(0.680, -0.550, 0.265, 1.550)",easeInOutCirc:"cubic-bezier(0.785, 0.135, 0.150, 0.860)",easeInOutCubic:"cubic-bezier(0.645, 0.045, 0.355, 1.000)",easeInOutExpo:"cubic-bezier(1.000, 0.000, 0.000, 1.000)",easeInOutQuad:"cubic-bezier(0.455, 0.030, 0.515, 0.955)",easeInOutQuart:"cubic-bezier(0.770, 0.000, 0.175, 1.000)",easeInOutQuint:"cubic-bezier(0.860, 0.000, 0.070, 1.000)",easeInOutSine:"cubic-bezier(0.445, 0.050, 0.550, 0.950)"};function timingFunctions(timingFunction){return function getTimingFunction(functionName){return functionsMap[functionName]}(timingFunction)}var getBorderWidth=function getBorderWidth(pointingDirection,height,width){var fullWidth=""+width[0]+(width[1]||""),halfWidth=""+width[0]/2+(width[1]||""),fullHeight=""+height[0]+(height[1]||""),halfHeight=""+height[0]/2+(height[1]||"");switch(pointingDirection){case"top":return"0 "+halfWidth+" "+fullHeight+" "+halfWidth;case"topLeft":return fullWidth+" "+fullHeight+" 0 0";case"left":return halfHeight+" "+fullWidth+" "+halfHeight+" 0";case"bottomLeft":return fullWidth+" 0 0 "+fullHeight;case"bottom":return fullHeight+" "+halfWidth+" 0 "+halfWidth;case"bottomRight":return"0 0 "+fullWidth+" "+fullHeight;case"right":return halfHeight+" 0 "+halfHeight+" "+fullWidth;case"topRight":default:return"0 "+fullWidth+" "+fullHeight+" 0"}};function triangle(_ref){var pointingDirection=_ref.pointingDirection,height=_ref.height,width=_ref.width,foregroundColor=_ref.foregroundColor,_ref$backgroundColor=_ref.backgroundColor,backgroundColor=void 0===_ref$backgroundColor?"transparent":_ref$backgroundColor,widthAndUnit=getValueAndUnit(width),heightAndUnit=getValueAndUnit(height);if(isNaN(heightAndUnit[0])||isNaN(widthAndUnit[0]))throw new polished_esm_PolishedError(60);return Object(esm_extends.a)({width:"0",height:"0",borderColor:backgroundColor},function getBorderColor(pointingDirection,foregroundColor){switch(pointingDirection){case"top":case"bottomRight":return{borderBottomColor:foregroundColor};case"right":case"bottomLeft":return{borderLeftColor:foregroundColor};case"bottom":case"topLeft":return{borderTopColor:foregroundColor};case"left":case"topRight":return{borderRightColor:foregroundColor};default:throw new polished_esm_PolishedError(59)}}(pointingDirection,foregroundColor),{borderStyle:"solid",borderWidth:getBorderWidth(pointingDirection,heightAndUnit,widthAndUnit)})}function wordWrap(wrap){return void 0===wrap&&(wrap="break-word"),{overflowWrap:wrap,wordWrap:wrap,wordBreak:"break-word"===wrap?"break-all":wrap}}function colorToInt(color){return Math.round(255*color)}function convertToInt(red,green,blue){return colorToInt(red)+","+colorToInt(green)+","+colorToInt(blue)}function hslToRgb(hue,saturation,lightness,convert){if(void 0===convert&&(convert=convertToInt),0===saturation)return convert(lightness,lightness,lightness);var huePrime=(hue%360+360)%360/60,chroma=(1-Math.abs(2*lightness-1))*saturation,secondComponent=chroma*(1-Math.abs(huePrime%2-1)),red=0,green=0,blue=0;huePrime>=0&&huePrime<1?(red=chroma,green=secondComponent):huePrime>=1&&huePrime<2?(red=secondComponent,green=chroma):huePrime>=2&&huePrime<3?(green=chroma,blue=secondComponent):huePrime>=3&&huePrime<4?(green=secondComponent,blue=chroma):huePrime>=4&&huePrime<5?(red=secondComponent,blue=chroma):huePrime>=5&&huePrime<6&&(red=chroma,blue=secondComponent);var lightnessModification=lightness-chroma/2;return convert(red+lightnessModification,green+lightnessModification,blue+lightnessModification)}var namedColorMap={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"00ffff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"639",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"};var hexRegex=/^#[a-fA-F0-9]{6}$/,hexRgbaRegex=/^#[a-fA-F0-9]{8}$/,reducedHexRegex=/^#[a-fA-F0-9]{3}$/,reducedRgbaHexRegex=/^#[a-fA-F0-9]{4}$/,rgbRegex=/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/i,rgbaRegex=/^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*([-+]?[0-9]*[.]?[0-9]+)\s*\)$/i,hslRegex=/^hsl\(\s*(\d{0,3}[.]?[0-9]+)\s*,\s*(\d{1,3}[.]?[0-9]?)%\s*,\s*(\d{1,3}[.]?[0-9]?)%\s*\)$/i,hslaRegex=/^hsla\(\s*(\d{0,3}[.]?[0-9]+)\s*,\s*(\d{1,3}[.]?[0-9]?)%\s*,\s*(\d{1,3}[.]?[0-9]?)%\s*,\s*([-+]?[0-9]*[.]?[0-9]+)\s*\)$/i;function parseToRgb(color){if("string"!=typeof color)throw new polished_esm_PolishedError(3);var normalizedColor=function nameToHex(color){if("string"!=typeof color)return color;var normalizedColorName=color.toLowerCase();return namedColorMap[normalizedColorName]?"#"+namedColorMap[normalizedColorName]:color}(color);if(normalizedColor.match(hexRegex))return{red:parseInt(""+normalizedColor[1]+normalizedColor[2],16),green:parseInt(""+normalizedColor[3]+normalizedColor[4],16),blue:parseInt(""+normalizedColor[5]+normalizedColor[6],16)};if(normalizedColor.match(hexRgbaRegex)){var alpha=parseFloat((parseInt(""+normalizedColor[7]+normalizedColor[8],16)/255).toFixed(2));return{red:parseInt(""+normalizedColor[1]+normalizedColor[2],16),green:parseInt(""+normalizedColor[3]+normalizedColor[4],16),blue:parseInt(""+normalizedColor[5]+normalizedColor[6],16),alpha:alpha}}if(normalizedColor.match(reducedHexRegex))return{red:parseInt(""+normalizedColor[1]+normalizedColor[1],16),green:parseInt(""+normalizedColor[2]+normalizedColor[2],16),blue:parseInt(""+normalizedColor[3]+normalizedColor[3],16)};if(normalizedColor.match(reducedRgbaHexRegex)){var _alpha=parseFloat((parseInt(""+normalizedColor[4]+normalizedColor[4],16)/255).toFixed(2));return{red:parseInt(""+normalizedColor[1]+normalizedColor[1],16),green:parseInt(""+normalizedColor[2]+normalizedColor[2],16),blue:parseInt(""+normalizedColor[3]+normalizedColor[3],16),alpha:_alpha}}var rgbMatched=rgbRegex.exec(normalizedColor);if(rgbMatched)return{red:parseInt(""+rgbMatched[1],10),green:parseInt(""+rgbMatched[2],10),blue:parseInt(""+rgbMatched[3],10)};var rgbaMatched=rgbaRegex.exec(normalizedColor.substring(0,50));if(rgbaMatched)return{red:parseInt(""+rgbaMatched[1],10),green:parseInt(""+rgbaMatched[2],10),blue:parseInt(""+rgbaMatched[3],10),alpha:parseFloat(""+rgbaMatched[4])};var hslMatched=hslRegex.exec(normalizedColor);if(hslMatched){var rgbColorString="rgb("+hslToRgb(parseInt(""+hslMatched[1],10),parseInt(""+hslMatched[2],10)/100,parseInt(""+hslMatched[3],10)/100)+")",hslRgbMatched=rgbRegex.exec(rgbColorString);if(!hslRgbMatched)throw new polished_esm_PolishedError(4,normalizedColor,rgbColorString);return{red:parseInt(""+hslRgbMatched[1],10),green:parseInt(""+hslRgbMatched[2],10),blue:parseInt(""+hslRgbMatched[3],10)}}var hslaMatched=hslaRegex.exec(normalizedColor.substring(0,50));if(hslaMatched){var _rgbColorString="rgb("+hslToRgb(parseInt(""+hslaMatched[1],10),parseInt(""+hslaMatched[2],10)/100,parseInt(""+hslaMatched[3],10)/100)+")",_hslRgbMatched=rgbRegex.exec(_rgbColorString);if(!_hslRgbMatched)throw new polished_esm_PolishedError(4,normalizedColor,_rgbColorString);return{red:parseInt(""+_hslRgbMatched[1],10),green:parseInt(""+_hslRgbMatched[2],10),blue:parseInt(""+_hslRgbMatched[3],10),alpha:parseFloat(""+hslaMatched[4])}}throw new polished_esm_PolishedError(5)}function parseToHsl(color){return function rgbToHsl(color){var hue,red=color.red/255,green=color.green/255,blue=color.blue/255,max=Math.max(red,green,blue),min=Math.min(red,green,blue),lightness=(max+min)/2;if(max===min)return void 0!==color.alpha?{hue:0,saturation:0,lightness:lightness,alpha:color.alpha}:{hue:0,saturation:0,lightness:lightness};var delta=max-min,saturation=lightness>.5?delta/(2-max-min):delta/(max+min);switch(max){case red:hue=(green-blue)/delta+(green=1?hslToHex(value,saturation,lightness):"rgba("+hslToRgb(value,saturation,lightness)+","+alpha+")";if("object"==typeof value&&void 0===saturation&&void 0===lightness&&void 0===alpha)return value.alpha>=1?hslToHex(value.hue,value.saturation,value.lightness):"rgba("+hslToRgb(value.hue,value.saturation,value.lightness)+","+value.alpha+")";throw new polished_esm_PolishedError(2)}function rgb(value,green,blue){if("number"==typeof value&&"number"==typeof green&&"number"==typeof blue)return reduceHexValue("#"+numberToHex(value)+numberToHex(green)+numberToHex(blue));if("object"==typeof value&&void 0===green&&void 0===blue)return reduceHexValue("#"+numberToHex(value.red)+numberToHex(value.green)+numberToHex(value.blue));throw new polished_esm_PolishedError(6)}function rgba(firstValue,secondValue,thirdValue,fourthValue){if("string"==typeof firstValue&&"number"==typeof secondValue){var rgbValue=parseToRgb(firstValue);return"rgba("+rgbValue.red+","+rgbValue.green+","+rgbValue.blue+","+secondValue+")"}if("number"==typeof firstValue&&"number"==typeof secondValue&&"number"==typeof thirdValue&&"number"==typeof fourthValue)return fourthValue>=1?rgb(firstValue,secondValue,thirdValue):"rgba("+firstValue+","+secondValue+","+thirdValue+","+fourthValue+")";if("object"==typeof firstValue&&void 0===secondValue&&void 0===thirdValue&&void 0===fourthValue)return firstValue.alpha>=1?rgb(firstValue.red,firstValue.green,firstValue.blue):"rgba("+firstValue.red+","+firstValue.green+","+firstValue.blue+","+firstValue.alpha+")";throw new polished_esm_PolishedError(7)}function toColorString(color){if("object"!=typeof color)throw new polished_esm_PolishedError(8);if(function isRgba(color){return"number"==typeof color.red&&"number"==typeof color.green&&"number"==typeof color.blue&&"number"==typeof color.alpha}(color))return rgba(color);if(function isRgb(color){return"number"==typeof color.red&&"number"==typeof color.green&&"number"==typeof color.blue&&("number"!=typeof color.alpha||void 0===color.alpha)}(color))return rgb(color);if(function isHsla(color){return"number"==typeof color.hue&&"number"==typeof color.saturation&&"number"==typeof color.lightness&&"number"==typeof color.alpha}(color))return hsla(color);if(function isHsl(color){return"number"==typeof color.hue&&"number"==typeof color.saturation&&"number"==typeof color.lightness&&("number"!=typeof color.alpha||void 0===color.alpha)}(color))return hsl(color);throw new polished_esm_PolishedError(8)}function curry(f){return function curried(f,length,acc){return function fn(){var combined=acc.concat(Array.prototype.slice.call(arguments));return combined.length>=length?f.apply(this,combined):curried(f,length,combined)}}(f,f.length,[])}function adjustHue(degree,color){if("transparent"===color)return color;var hslColor=parseToHsl(color);return toColorString(Object(esm_extends.a)({},hslColor,{hue:hslColor.hue+parseFloat(degree)}))}var curriedAdjustHue=curry(adjustHue);function complement(color){if("transparent"===color)return color;var hslColor=parseToHsl(color);return toColorString(Object(esm_extends.a)({},hslColor,{hue:(hslColor.hue+180)%360}))}function guard(lowerBoundary,upperBoundary,value){return Math.max(lowerBoundary,Math.min(upperBoundary,value))}function darken(amount,color){if("transparent"===color)return color;var hslColor=parseToHsl(color);return toColorString(Object(esm_extends.a)({},hslColor,{lightness:guard(0,1,hslColor.lightness-parseFloat(amount))}))}var curriedDarken=curry(darken);function desaturate(amount,color){if("transparent"===color)return color;var hslColor=parseToHsl(color);return toColorString(Object(esm_extends.a)({},hslColor,{saturation:guard(0,1,hslColor.saturation-parseFloat(amount))}))}var curriedDesaturate=curry(desaturate);function getLuminance(color){if("transparent"===color)return 0;var rgbColor=parseToRgb(color),_Object$keys$map=Object.keys(rgbColor).map((function(key){var channel=rgbColor[key]/255;return channel<=.03928?channel/12.92:Math.pow((channel+.055)/1.055,2.4)})),r=_Object$keys$map[0],g=_Object$keys$map[1],b=_Object$keys$map[2];return parseFloat((.2126*r+.7152*g+.0722*b).toFixed(3))}function getContrast(color1,color2){var luminance1=getLuminance(color1),luminance2=getLuminance(color2);return parseFloat((luminance1>luminance2?(luminance1+.05)/(luminance2+.05):(luminance2+.05)/(luminance1+.05)).toFixed(2))}function grayscale(color){return"transparent"===color?color:toColorString(Object(esm_extends.a)({},parseToHsl(color),{saturation:0}))}function hslToColorString(color){if("object"==typeof color&&"number"==typeof color.hue&&"number"==typeof color.saturation&&"number"==typeof color.lightness)return color.alpha&&"number"==typeof color.alpha?hsla({hue:color.hue,saturation:color.saturation,lightness:color.lightness,alpha:color.alpha}):hsl({hue:color.hue,saturation:color.saturation,lightness:color.lightness});throw new polished_esm_PolishedError(45)}function invert(color){if("transparent"===color)return color;var value=parseToRgb(color);return toColorString(Object(esm_extends.a)({},value,{red:255-value.red,green:255-value.green,blue:255-value.blue}))}function lighten(amount,color){if("transparent"===color)return color;var hslColor=parseToHsl(color);return toColorString(Object(esm_extends.a)({},hslColor,{lightness:guard(0,1,hslColor.lightness+parseFloat(amount))}))}var curriedLighten=curry(lighten);function meetsContrastGuidelines(color1,color2){var contrastRatio=getContrast(color1,color2);return{AA:contrastRatio>=4.5,AALarge:contrastRatio>=3,AAA:contrastRatio>=7,AAALarge:contrastRatio>=4.5}}function mix(weight,color,otherColor){if("transparent"===color)return otherColor;if("transparent"===otherColor)return color;if(0===weight)return otherColor;var parsedColor1=parseToRgb(color),color1=Object(esm_extends.a)({},parsedColor1,{alpha:"number"==typeof parsedColor1.alpha?parsedColor1.alpha:1}),parsedColor2=parseToRgb(otherColor),color2=Object(esm_extends.a)({},parsedColor2,{alpha:"number"==typeof parsedColor2.alpha?parsedColor2.alpha:1}),alphaDelta=color1.alpha-color2.alpha,x=2*parseFloat(weight)-1,weight1=((x*alphaDelta==-1?x:x+alphaDelta)/(1+x*alphaDelta)+1)/2,weight2=1-weight1;return rgba({red:Math.floor(color1.red*weight1+color2.red*weight2),green:Math.floor(color1.green*weight1+color2.green*weight2),blue:Math.floor(color1.blue*weight1+color2.blue*weight2),alpha:color1.alpha*(parseFloat(weight)/1)+color2.alpha*(1-parseFloat(weight)/1)})}var curriedMix=curry(mix);function opacify(amount,color){if("transparent"===color)return color;var parsedColor=parseToRgb(color),alpha="number"==typeof parsedColor.alpha?parsedColor.alpha:1;return rgba(Object(esm_extends.a)({},parsedColor,{alpha:guard(0,1,(100*alpha+100*parseFloat(amount))/100)}))}var curriedOpacify=curry(opacify);function readableColor(color,returnIfLightColor,returnIfDarkColor,strict){void 0===returnIfLightColor&&(returnIfLightColor="#000"),void 0===returnIfDarkColor&&(returnIfDarkColor="#fff"),void 0===strict&&(strict=!0);var isColorLight=getLuminance(color)>.179,preferredReturnColor=isColorLight?returnIfLightColor:returnIfDarkColor;return!strict||getContrast(color,preferredReturnColor)>=4.5?preferredReturnColor:isColorLight?"#000":"#fff"}function rgbToColorString(color){if("object"==typeof color&&"number"==typeof color.red&&"number"==typeof color.green&&"number"==typeof color.blue)return"number"==typeof color.alpha?rgba({red:color.red,green:color.green,blue:color.blue,alpha:color.alpha}):rgb({red:color.red,green:color.green,blue:color.blue});throw new polished_esm_PolishedError(46)}function saturate(amount,color){if("transparent"===color)return color;var hslColor=parseToHsl(color);return toColorString(Object(esm_extends.a)({},hslColor,{saturation:guard(0,1,hslColor.saturation+parseFloat(amount))}))}var curriedSaturate=curry(saturate);function setHue(hue,color){return"transparent"===color?color:toColorString(Object(esm_extends.a)({},parseToHsl(color),{hue:parseFloat(hue)}))}var curriedSetHue=curry(setHue);function setLightness(lightness,color){return"transparent"===color?color:toColorString(Object(esm_extends.a)({},parseToHsl(color),{lightness:parseFloat(lightness)}))}var curriedSetLightness=curry(setLightness);function setSaturation(saturation,color){return"transparent"===color?color:toColorString(Object(esm_extends.a)({},parseToHsl(color),{saturation:parseFloat(saturation)}))}var curriedSetSaturation=curry(setSaturation);function shade(percentage,color){return"transparent"===color?color:curriedMix(parseFloat(percentage),"rgb(0, 0, 0)",color)}var curriedShade=curry(shade);function tint(percentage,color){return"transparent"===color?color:curriedMix(parseFloat(percentage),"rgb(255, 255, 255)",color)}var curriedTint=curry(tint);function transparentize(amount,color){if("transparent"===color)return color;var parsedColor=parseToRgb(color),alpha="number"==typeof parsedColor.alpha?parsedColor.alpha:1;return rgba(Object(esm_extends.a)({},parsedColor,{alpha:guard(0,1,+(100*alpha-100*parseFloat(amount)).toFixed(2)/100)}))}var curriedTransparentize=curry(transparentize);function animation(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];var multiMode=Array.isArray(args[0]);if(!multiMode&&args.length>8)throw new polished_esm_PolishedError(64);var code=args.map((function(arg){if(multiMode&&!Array.isArray(arg)||!multiMode&&Array.isArray(arg))throw new polished_esm_PolishedError(65);if(Array.isArray(arg)&&arg.length>8)throw new polished_esm_PolishedError(66);return Array.isArray(arg)?arg.join(" "):arg})).join(", ");return{animation:code}}function backgroundImages(){for(var _len=arguments.length,properties=new Array(_len),_key=0;_key<_len;_key++)properties[_key]=arguments[_key];return{backgroundImage:properties.join(", ")}}function backgrounds(){for(var _len=arguments.length,properties=new Array(_len),_key=0;_key<_len;_key++)properties[_key]=arguments[_key];return{background:properties.join(", ")}}var sideMap=["top","right","bottom","left"];function border(sideKeyword){for(var _len=arguments.length,values=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)values[_key-1]=arguments[_key];var _ref;return"string"==typeof sideKeyword&&sideMap.indexOf(sideKeyword)>=0?((_ref={})["border"+capitalizeString(sideKeyword)+"Width"]=values[0],_ref["border"+capitalizeString(sideKeyword)+"Style"]=values[1],_ref["border"+capitalizeString(sideKeyword)+"Color"]=values[2],_ref):(values.unshift(sideKeyword),{borderWidth:values[0],borderStyle:values[1],borderColor:values[2]})}function borderColor(){for(var _len=arguments.length,values=new Array(_len),_key=0;_key<_len;_key++)values[_key]=arguments[_key];return directionalProperty.apply(void 0,["borderColor"].concat(values))}function borderRadius(side,radius){var _ref,_ref2,uppercaseSide=capitalizeString(side);if(!radius&&0!==radius)throw new polished_esm_PolishedError(62);if("Top"===uppercaseSide||"Bottom"===uppercaseSide)return(_ref={})["border"+uppercaseSide+"RightRadius"]=radius,_ref["border"+uppercaseSide+"LeftRadius"]=radius,_ref;if("Left"===uppercaseSide||"Right"===uppercaseSide)return(_ref2={})["borderTop"+uppercaseSide+"Radius"]=radius,_ref2["borderBottom"+uppercaseSide+"Radius"]=radius,_ref2;throw new polished_esm_PolishedError(63)}function borderStyle(){for(var _len=arguments.length,values=new Array(_len),_key=0;_key<_len;_key++)values[_key]=arguments[_key];return directionalProperty.apply(void 0,["borderStyle"].concat(values))}function borderWidth(){for(var _len=arguments.length,values=new Array(_len),_key=0;_key<_len;_key++)values[_key]=arguments[_key];return directionalProperty.apply(void 0,["borderWidth"].concat(values))}function generateSelectors(template,state){return template(state?":"+state:"")}function statefulSelectors(states,template,stateMap){if(!template)throw new polished_esm_PolishedError(67);if(0===states.length)return generateSelectors(template,null);for(var selectors=[],i=0;i1?_len-1:0),_key=1;_key<_len;_key++)values[_key-1]=arguments[_key];return positionMap$1.indexOf(firstValue)>=0&&firstValue?Object(esm_extends.a)({},directionalProperty.apply(void 0,[""].concat(values)),{position:firstValue}):directionalProperty.apply(void 0,["",firstValue].concat(values))}function size(height,width){return void 0===width&&(width=height),{height:height,width:width}}var stateMap$1=[void 0,null,"active","focus","hover"];function template$1(state){return'input[type="color"]'+state+',\n input[type="date"]'+state+',\n input[type="datetime"]'+state+',\n input[type="datetime-local"]'+state+',\n input[type="email"]'+state+',\n input[type="month"]'+state+',\n input[type="number"]'+state+',\n input[type="password"]'+state+',\n input[type="search"]'+state+',\n input[type="tel"]'+state+',\n input[type="text"]'+state+',\n input[type="time"]'+state+',\n input[type="url"]'+state+',\n input[type="week"]'+state+",\n input:not([type])"+state+",\n textarea"+state}function textInputs(){for(var _len=arguments.length,states=new Array(_len),_key=0;_key<_len;_key++)states[_key]=arguments[_key];return statefulSelectors(states,template$1,stateMap$1)}function transitions(){for(var _len=arguments.length,properties=new Array(_len),_key=0;_key<_len;_key++)properties[_key]=arguments[_key];if(Array.isArray(properties[0])&&2===properties.length){var value=properties[1];if("string"!=typeof value)throw new polished_esm_PolishedError(61);var transitionsString=properties[0].map((function(property){return property+" "+value})).join(", ");return{transition:transitionsString}}return{transition:properties.join(", ")}}},function(module,exports,__webpack_require__){var DESCRIPTORS=__webpack_require__(71),IE8_DOM_DEFINE=__webpack_require__(484),anObject=__webpack_require__(61),toPrimitive=__webpack_require__(224),$defineProperty=Object.defineProperty;exports.f=DESCRIPTORS?$defineProperty:function defineProperty(O,P,Attributes){if(anObject(O),P=toPrimitive(P,!0),anObject(Attributes),IE8_DOM_DEFINE)try{return $defineProperty(O,P,Attributes)}catch(error){}if("get"in Attributes||"set"in Attributes)throw TypeError("Accessors not supported");return"value"in Attributes&&(O[P]=Attributes.value),O}},function(module,exports,__webpack_require__){"use strict";var fixRegExpWellKnownSymbolLogic=__webpack_require__(269),anObject=__webpack_require__(61),toLength=__webpack_require__(92),toInteger=__webpack_require__(227),requireObjectCoercible=__webpack_require__(100),advanceStringIndex=__webpack_require__(358),getSubstitution=__webpack_require__(827),regExpExec=__webpack_require__(270),max=Math.max,min=Math.min;fixRegExpWellKnownSymbolLogic("replace",2,(function(REPLACE,nativeReplace,maybeCallNative,reason){var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE=reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,REPLACE_KEEPS_$0=reason.REPLACE_KEEPS_$0,UNSAFE_SUBSTITUTE=REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE?"$":"$0";return[function replace(searchValue,replaceValue){var O=requireObjectCoercible(this),replacer=null==searchValue?void 0:searchValue[REPLACE];return void 0!==replacer?replacer.call(searchValue,O,replaceValue):nativeReplace.call(String(O),searchValue,replaceValue)},function(regexp,replaceValue){if(!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE&&REPLACE_KEEPS_$0||"string"==typeof replaceValue&&-1===replaceValue.indexOf(UNSAFE_SUBSTITUTE)){var res=maybeCallNative(nativeReplace,regexp,this,replaceValue);if(res.done)return res.value}var rx=anObject(regexp),S=String(this),functionalReplace="function"==typeof replaceValue;functionalReplace||(replaceValue=String(replaceValue));var global=rx.global;if(global){var fullUnicode=rx.unicode;rx.lastIndex=0}for(var results=[];;){var result=regExpExec(rx,S);if(null===result)break;if(results.push(result),!global)break;""===String(result[0])&&(rx.lastIndex=advanceStringIndex(S,toLength(rx.lastIndex),fullUnicode))}for(var it,accumulatedResult="",nextSourcePosition=0,i=0;i=nextSourcePosition&&(accumulatedResult+=S.slice(nextSourcePosition,position)+replacement,nextSourcePosition=position+matched.length)}return accumulatedResult+S.slice(nextSourcePosition)}]}))},function(module,exports,__webpack_require__){"use strict";var $=__webpack_require__(21),IndexedObject=__webpack_require__(223),toIndexedObject=__webpack_require__(138),arrayMethodIsStrict=__webpack_require__(185),nativeJoin=[].join,ES3_STRINGS=IndexedObject!=Object,STRICT_METHOD=arrayMethodIsStrict("join",",");$({target:"Array",proto:!0,forced:ES3_STRINGS||!STRICT_METHOD},{join:function join(separator){return nativeJoin.call(toIndexedObject(this),void 0===separator?",":separator)}})},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return _slicedToArray}));var arrayWithHoles=__webpack_require__(619);var unsupportedIterableToArray=__webpack_require__(311),nonIterableRest=__webpack_require__(620);function _slicedToArray(arr,i){return Object(arrayWithHoles.a)(arr)||function _iterableToArrayLimit(arr,i){var _i=arr&&("undefined"!=typeof Symbol&&arr[Symbol.iterator]||arr["@@iterator"]);if(null!=_i){var _s,_e,_arr=[],_n=!0,_d=!1;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done)&&(_arr.push(_s.value),!i||_arr.length!==i);_n=!0);}catch(err){_d=!0,_e=err}finally{try{_n||null==_i.return||_i.return()}finally{if(_d)throw _e}}return _arr}}(arr,i)||Object(unsupportedIterableToArray.a)(arr,i)||Object(nonIterableRest.a)()}},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return useEventCallback}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),useEnhancedEffect="undefined"!=typeof window?react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect:react__WEBPACK_IMPORTED_MODULE_0__.useEffect;function useEventCallback(fn){var ref=react__WEBPACK_IMPORTED_MODULE_0__.useRef(fn);return useEnhancedEffect((function(){ref.current=fn})),react__WEBPACK_IMPORTED_MODULE_0__.useCallback((function(){return ref.current.apply(void 0,arguments)}),[])}},function(module,__webpack_exports__,__webpack_require__){"use strict";function _assertThisInitialized(self){if(void 0===self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return self}__webpack_require__.d(__webpack_exports__,"a",(function(){return _assertThisInitialized}))},function(module,exports,__webpack_require__){"use strict";var $=__webpack_require__(21),$filter=__webpack_require__(155).filter;$({target:"Array",proto:!0,forced:!__webpack_require__(232)("filter")},{filter:function filter(callbackfn){return $filter(this,callbackfn,arguments.length>1?arguments[1]:void 0)}})},function(module,exports,__webpack_require__){var global=__webpack_require__(40),createNonEnumerableProperty=__webpack_require__(117),has=__webpack_require__(75),setGlobal=__webpack_require__(341),inspectSource=__webpack_require__(342),InternalStateModule=__webpack_require__(110),getInternalState=InternalStateModule.get,enforceInternalState=InternalStateModule.enforce,TEMPLATE=String(String).split("String");(module.exports=function(O,key,value,options){var state,unsafe=!!options&&!!options.unsafe,simple=!!options&&!!options.enumerable,noTargetGet=!!options&&!!options.noTargetGet;"function"==typeof value&&("string"!=typeof key||has(value,"name")||createNonEnumerableProperty(value,"name",key),(state=enforceInternalState(value)).source||(state.source=TEMPLATE.join("string"==typeof key?key:""))),O!==global?(unsafe?!noTargetGet&&O[key]&&(simple=!0):delete O[key],simple?O[key]=value:createNonEnumerableProperty(O,key,value)):simple?O[key]=value:setGlobal(key,value)})(Function.prototype,"toString",(function toString(){return"function"==typeof this&&getInternalState(this).source||inspectSource(this)}))},function(module,exports,__webpack_require__){"use strict";function _typeof(obj){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(obj){return typeof obj}:function _typeof(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj})(obj)}Object.defineProperty(exports,"__esModule",{value:!0});var _exportNames={ClientApi:!0,addDecorator:!0,addParameters:!0,addLoader:!0,addArgTypesEnhancer:!0,defaultDecorateStory:!0,combineParameters:!0,StoryStore:!0,ConfigApi:!0,pathToId:!0,simulatePageLoad:!0,simulateDOMContentLoaded:!0,getQueryParams:!0,getQueryParam:!0};Object.defineProperty(exports,"ClientApi",{enumerable:!0,get:function get(){return _client_api.default}}),Object.defineProperty(exports,"addDecorator",{enumerable:!0,get:function get(){return _client_api.addDecorator}}),Object.defineProperty(exports,"addParameters",{enumerable:!0,get:function get(){return _client_api.addParameters}}),Object.defineProperty(exports,"addLoader",{enumerable:!0,get:function get(){return _client_api.addLoader}}),Object.defineProperty(exports,"addArgTypesEnhancer",{enumerable:!0,get:function get(){return _client_api.addArgTypesEnhancer}}),Object.defineProperty(exports,"defaultDecorateStory",{enumerable:!0,get:function get(){return _decorators.defaultDecorateStory}}),Object.defineProperty(exports,"combineParameters",{enumerable:!0,get:function get(){return _parameters.combineParameters}}),Object.defineProperty(exports,"StoryStore",{enumerable:!0,get:function get(){return _story_store.default}}),Object.defineProperty(exports,"ConfigApi",{enumerable:!0,get:function get(){return _config_api.default}}),Object.defineProperty(exports,"pathToId",{enumerable:!0,get:function get(){return _pathToId.default}}),Object.defineProperty(exports,"simulatePageLoad",{enumerable:!0,get:function get(){return _simulatePageload.simulatePageLoad}}),Object.defineProperty(exports,"simulateDOMContentLoaded",{enumerable:!0,get:function get(){return _simulatePageload.simulateDOMContentLoaded}}),Object.defineProperty(exports,"getQueryParams",{enumerable:!0,get:function get(){return _queryparams.getQueryParams}}),Object.defineProperty(exports,"getQueryParam",{enumerable:!0,get:function get(){return _queryparams.getQueryParam}});var _client_api=function _interopRequireWildcard(obj){if(obj&&obj.__esModule)return obj;if(null===obj||"object"!==_typeof(obj)&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache();if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if(Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}newObj.default=obj,cache&&cache.set(obj,newObj);return newObj}(__webpack_require__(826)),_decorators=__webpack_require__(513),_parameters=__webpack_require__(239);Object.keys(_parameters).forEach((function(key){"default"!==key&&"__esModule"!==key&&(Object.prototype.hasOwnProperty.call(_exportNames,key)||key in exports&&exports[key]===_parameters[key]||Object.defineProperty(exports,key,{enumerable:!0,get:function get(){return _parameters[key]}}))}));var _story_store=_interopRequireDefault(__webpack_require__(866)),_config_api=_interopRequireDefault(__webpack_require__(943)),_pathToId=_interopRequireDefault(__webpack_require__(944)),_simulatePageload=__webpack_require__(945),_queryparams=__webpack_require__(946),_hooks=__webpack_require__(362);Object.keys(_hooks).forEach((function(key){"default"!==key&&"__esModule"!==key&&(Object.prototype.hasOwnProperty.call(_exportNames,key)||key in exports&&exports[key]===_hooks[key]||Object.defineProperty(exports,key,{enumerable:!0,get:function get(){return _hooks[key]}}))}));var _types=__webpack_require__(951);Object.keys(_types).forEach((function(key){"default"!==key&&"__esModule"!==key&&(Object.prototype.hasOwnProperty.call(_exportNames,key)||key in exports&&exports[key]===_types[key]||Object.defineProperty(exports,key,{enumerable:!0,get:function get(){return _types[key]}}))}));var _inferControls=__webpack_require__(532);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _getRequireWildcardCache(){if("function"!=typeof WeakMap)return null;var cache=new WeakMap;return _getRequireWildcardCache=function _getRequireWildcardCache(){return cache},cache}Object.keys(_inferControls).forEach((function(key){"default"!==key&&"__esModule"!==key&&(Object.prototype.hasOwnProperty.call(_exportNames,key)||key in exports&&exports[key]===_inferControls[key]||Object.defineProperty(exports,key,{enumerable:!0,get:function get(){return _inferControls[key]}}))}))},function(module,__webpack_exports__,__webpack_require__){"use strict";function setRef(ref,value){"function"==typeof ref?ref(value):ref&&(ref.current=value)}__webpack_require__.d(__webpack_exports__,"a",(function(){return setRef}))},,,function(module,exports,__webpack_require__){"use strict";var bind=__webpack_require__(326);module.exports=bind.call(Function.call,Object.prototype.hasOwnProperty)},function(module,exports,__webpack_require__){"use strict";var $TypeError=__webpack_require__(15)("%TypeError%"),inspect=__webpack_require__(262),IsPropertyKey=__webpack_require__(116),Type=__webpack_require__(47);module.exports=function Get(O,P){if("Object"!==Type(O))throw new $TypeError("Assertion failed: Type(O) is not Object");if(!IsPropertyKey(P))throw new $TypeError("Assertion failed: IsPropertyKey(P) is not true, got "+inspect(P));return O[P]}},function(module,exports,__webpack_require__){var requireObjectCoercible=__webpack_require__(100);module.exports=function(argument){return Object(requireObjectCoercible(argument))}},function(module,exports,__webpack_require__){var toInteger=__webpack_require__(227),min=Math.min;module.exports=function(argument){return argument>0?min(toInteger(argument),9007199254740991):0}},function(module,exports,__webpack_require__){(function(global){function config(name){try{if(!global.localStorage)return!1}catch(_){return!1}var val=global.localStorage[name];return null!=val&&"true"===String(val).toLowerCase()}module.exports=function deprecate(fn,msg){if(config("noDeprecation"))return fn;var warned=!1;return function deprecated(){if(!warned){if(config("throwDeprecation"))throw new Error(msg);config("traceDeprecation")?console.trace(msg):console.warn(msg),warned=!0}return fn.apply(this,arguments)}}}).call(this,__webpack_require__(74))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DocsContext=void 0;var DocsContext=(0,__webpack_require__(0).createContext)({});exports.DocsContext=DocsContext},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"capitalize",(function(){return capitalize.a})),__webpack_require__.d(__webpack_exports__,"createChainedFunction",(function(){return createChainedFunction.a})),__webpack_require__.d(__webpack_exports__,"createSvgIcon",(function(){return createSvgIcon.a})),__webpack_require__.d(__webpack_exports__,"debounce",(function(){return debounce.a})),__webpack_require__.d(__webpack_exports__,"deprecatedPropType",(function(){return deprecatedPropType})),__webpack_require__.d(__webpack_exports__,"isMuiElement",(function(){return isMuiElement.a})),__webpack_require__.d(__webpack_exports__,"ownerDocument",(function(){return ownerDocument.a})),__webpack_require__.d(__webpack_exports__,"ownerWindow",(function(){return ownerWindow.a})),__webpack_require__.d(__webpack_exports__,"requirePropFactory",(function(){return requirePropFactory.a})),__webpack_require__.d(__webpack_exports__,"setRef",(function(){return setRef.a})),__webpack_require__.d(__webpack_exports__,"unsupportedProp",(function(){return unsupportedProp.a})),__webpack_require__.d(__webpack_exports__,"useControlled",(function(){return useControlled.a})),__webpack_require__.d(__webpack_exports__,"useEventCallback",(function(){return useEventCallback.a})),__webpack_require__.d(__webpack_exports__,"useForkRef",(function(){return useForkRef.a})),__webpack_require__.d(__webpack_exports__,"unstable_useId",(function(){return unstable_useId.a})),__webpack_require__.d(__webpack_exports__,"useIsFocusVisible",(function(){return useIsFocusVisible.a}));var capitalize=__webpack_require__(13),createChainedFunction=__webpack_require__(121),createSvgIcon=__webpack_require__(62),debounce=__webpack_require__(114);function deprecatedPropType(validator,reason){return function(){return null}}var isMuiElement=__webpack_require__(197),ownerDocument=__webpack_require__(72),ownerWindow=__webpack_require__(163),requirePropFactory=__webpack_require__(430),setRef=__webpack_require__(86),unsupportedProp=__webpack_require__(306),useControlled=__webpack_require__(162),useEventCallback=__webpack_require__(81),useForkRef=__webpack_require__(35),unstable_useId=__webpack_require__(307),useIsFocusVisible=__webpack_require__(212)},,function(module,__webpack_exports__,__webpack_require__){"use strict";var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(2),_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(7),react__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(0),clsx__WEBPACK_IMPORTED_MODULE_4__=(__webpack_require__(3),__webpack_require__(6)),_styles_withStyles__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(9),_utils_capitalize__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(13),defaultVariantMapping={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p"},Typography=react__WEBPACK_IMPORTED_MODULE_2__.forwardRef((function Typography(props,ref){var _props$align=props.align,align=void 0===_props$align?"inherit":_props$align,classes=props.classes,className=props.className,_props$color=props.color,color=void 0===_props$color?"initial":_props$color,component=props.component,_props$display=props.display,display=void 0===_props$display?"initial":_props$display,_props$gutterBottom=props.gutterBottom,gutterBottom=void 0!==_props$gutterBottom&&_props$gutterBottom,_props$noWrap=props.noWrap,noWrap=void 0!==_props$noWrap&&_props$noWrap,_props$paragraph=props.paragraph,paragraph=void 0!==_props$paragraph&&_props$paragraph,_props$variant=props.variant,variant=void 0===_props$variant?"body1":_props$variant,_props$variantMapping=props.variantMapping,variantMapping=void 0===_props$variantMapping?defaultVariantMapping:_props$variantMapping,other=Object(_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__.a)(props,["align","classes","className","color","component","display","gutterBottom","noWrap","paragraph","variant","variantMapping"]),Component=component||(paragraph?"p":variantMapping[variant]||defaultVariantMapping[variant])||"span";return react__WEBPACK_IMPORTED_MODULE_2__.createElement(Component,Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__.a)({className:Object(clsx__WEBPACK_IMPORTED_MODULE_4__.a)(classes.root,className,"inherit"!==variant&&classes[variant],"initial"!==color&&classes["color".concat(Object(_utils_capitalize__WEBPACK_IMPORTED_MODULE_6__.a)(color))],noWrap&&classes.noWrap,gutterBottom&&classes.gutterBottom,paragraph&&classes.paragraph,"inherit"!==align&&classes["align".concat(Object(_utils_capitalize__WEBPACK_IMPORTED_MODULE_6__.a)(align))],"initial"!==display&&classes["display".concat(Object(_utils_capitalize__WEBPACK_IMPORTED_MODULE_6__.a)(display))]),ref:ref},other))}));__webpack_exports__.a=Object(_styles_withStyles__WEBPACK_IMPORTED_MODULE_5__.a)((function styles(theme){return{root:{margin:0},body2:theme.typography.body2,body1:theme.typography.body1,caption:theme.typography.caption,button:theme.typography.button,h1:theme.typography.h1,h2:theme.typography.h2,h3:theme.typography.h3,h4:theme.typography.h4,h5:theme.typography.h5,h6:theme.typography.h6,subtitle1:theme.typography.subtitle1,subtitle2:theme.typography.subtitle2,overline:theme.typography.overline,srOnly:{position:"absolute",height:1,width:1,overflow:"hidden"},alignLeft:{textAlign:"left"},alignCenter:{textAlign:"center"},alignRight:{textAlign:"right"},alignJustify:{textAlign:"justify"},noWrap:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},gutterBottom:{marginBottom:"0.35em"},paragraph:{marginBottom:16},colorInherit:{color:"inherit"},colorPrimary:{color:theme.palette.primary.main},colorSecondary:{color:theme.palette.secondary.main},colorTextPrimary:{color:theme.palette.text.primary},colorTextSecondary:{color:theme.palette.text.secondary},colorError:{color:theme.palette.error.main},displayInline:{display:"inline"},displayBlock:{display:"block"}}}),{name:"MuiTypography"})(Typography)},,function(module,exports,__webpack_require__){"use strict";var origSymbol="undefined"!=typeof Symbol&&Symbol,hasSymbolSham=__webpack_require__(454);module.exports=function hasNativeSymbols(){return"function"==typeof origSymbol&&("function"==typeof Symbol&&("symbol"==typeof origSymbol("foo")&&("symbol"==typeof Symbol("bar")&&hasSymbolSham())))}},function(module,exports){module.exports=function(it){if(null==it)throw TypeError("Can't call method on "+it);return it}},function(module,exports){var isArray=Array.isArray;module.exports=isArray},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _exportNames={};exports.default=void 0;var _index=__webpack_require__(504);Object.keys(_index).forEach((function(key){"default"!==key&&"__esModule"!==key&&(Object.prototype.hasOwnProperty.call(_exportNames,key)||key in exports&&exports[key]===_index[key]||Object.defineProperty(exports,key,{enumerable:!0,get:function get(){return _index[key]}}))}));var _makeDecorator=__webpack_require__(860);Object.keys(_makeDecorator).forEach((function(key){"default"!==key&&"__esModule"!==key&&(Object.prototype.hasOwnProperty.call(_exportNames,key)||key in exports&&exports[key]===_makeDecorator[key]||Object.defineProperty(exports,key,{enumerable:!0,get:function get(){return _makeDecorator[key]}}))}));var _types=__webpack_require__(509);Object.keys(_types).forEach((function(key){"default"!==key&&"__esModule"!==key&&(Object.prototype.hasOwnProperty.call(_exportNames,key)||key in exports&&exports[key]===_types[key]||Object.defineProperty(exports,key,{enumerable:!0,get:function get(){return _types[key]}}))}));var _storybookChannelMock=__webpack_require__(861);Object.keys(_storybookChannelMock).forEach((function(key){"default"!==key&&"__esModule"!==key&&(Object.prototype.hasOwnProperty.call(_exportNames,key)||key in exports&&exports[key]===_storybookChannelMock[key]||Object.defineProperty(exports,key,{enumerable:!0,get:function get(){return _storybookChannelMock[key]}}))}));var _hooks=__webpack_require__(862);Object.keys(_hooks).forEach((function(key){"default"!==key&&"__esModule"!==key&&(Object.prototype.hasOwnProperty.call(_exportNames,key)||key in exports&&exports[key]===_hooks[key]||Object.defineProperty(exports,key,{enumerable:!0,get:function get(){return _hooks[key]}}))}));var _default=_index.addons;exports.default=_default},function(module,exports,__webpack_require__){"use strict";var fixRegExpWellKnownSymbolLogic=__webpack_require__(269),isRegExp=__webpack_require__(372),anObject=__webpack_require__(61),requireObjectCoercible=__webpack_require__(100),speciesConstructor=__webpack_require__(506),advanceStringIndex=__webpack_require__(358),toLength=__webpack_require__(92),callRegExpExec=__webpack_require__(270),regexpExec=__webpack_require__(356),UNSUPPORTED_Y=__webpack_require__(357).UNSUPPORTED_Y,arrayPush=[].push,min=Math.min;fixRegExpWellKnownSymbolLogic("split",2,(function(SPLIT,nativeSplit,maybeCallNative){var internalSplit;return internalSplit="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(separator,limit){var string=String(requireObjectCoercible(this)),lim=void 0===limit?4294967295:limit>>>0;if(0===lim)return[];if(void 0===separator)return[string];if(!isRegExp(separator))return nativeSplit.call(string,separator,lim);for(var match,lastIndex,lastLength,output=[],flags=(separator.ignoreCase?"i":"")+(separator.multiline?"m":"")+(separator.unicode?"u":"")+(separator.sticky?"y":""),lastLastIndex=0,separatorCopy=new RegExp(separator.source,flags+"g");(match=regexpExec.call(separatorCopy,string))&&!((lastIndex=separatorCopy.lastIndex)>lastLastIndex&&(output.push(string.slice(lastLastIndex,match.index)),match.length>1&&match.index=lim));)separatorCopy.lastIndex===match.index&&separatorCopy.lastIndex++;return lastLastIndex===string.length?!lastLength&&separatorCopy.test("")||output.push(""):output.push(string.slice(lastLastIndex)),output.length>lim?output.slice(0,lim):output}:"0".split(void 0,0).length?function(separator,limit){return void 0===separator&&0===limit?[]:nativeSplit.call(this,separator,limit)}:nativeSplit,[function split(separator,limit){var O=requireObjectCoercible(this),splitter=null==separator?void 0:separator[SPLIT];return void 0!==splitter?splitter.call(separator,O,limit):internalSplit.call(String(O),separator,limit)},function(regexp,limit){var res=maybeCallNative(internalSplit,regexp,this,limit,internalSplit!==nativeSplit);if(res.done)return res.value;var rx=anObject(regexp),S=String(this),C=speciesConstructor(rx,RegExp),unicodeMatching=rx.unicode,flags=(rx.ignoreCase?"i":"")+(rx.multiline?"m":"")+(rx.unicode?"u":"")+(UNSUPPORTED_Y?"g":"y"),splitter=new C(UNSUPPORTED_Y?"^(?:"+rx.source+")":rx,flags),lim=void 0===limit?4294967295:limit>>>0;if(0===lim)return[];if(0===S.length)return null===callRegExpExec(splitter,S)?[S]:[];for(var p=0,q=0,A=[];q1?arguments[1]:void 0)}}),addToUnscopables("includes")},function(module,exports,__webpack_require__){"use strict";var $=__webpack_require__(21),$reduce=__webpack_require__(865).left,arrayMethodIsStrict=__webpack_require__(185),CHROME_VERSION=__webpack_require__(231),IS_NODE=__webpack_require__(230);$({target:"Array",proto:!0,forced:!arrayMethodIsStrict("reduce")||!IS_NODE&&CHROME_VERSION>79&&CHROME_VERSION<83},{reduce:function reduce(callbackfn){return $reduce(this,callbackfn,arguments.length,arguments.length>1?arguments[1]:void 0)}})},function(module,exports,__webpack_require__){"use strict";var $=__webpack_require__(21),createHTML=__webpack_require__(544);$({target:"String",proto:!0,forced:__webpack_require__(545)("bold")},{bold:function bold(){return createHTML(this,"b","","")}})},function(module,__webpack_exports__,__webpack_require__){"use strict";function debounce(func){var timeout,wait=arguments.length>1&&void 0!==arguments[1]?arguments[1]:166;function debounced(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];var that=this,later=function later(){func.apply(that,args)};clearTimeout(timeout),timeout=setTimeout(later,wait)}return debounced.clear=function(){clearTimeout(timeout)},debounced}__webpack_require__.d(__webpack_exports__,"a",(function(){return debounce}))},function(module,__webpack_exports__,__webpack_require__){"use strict";var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(2),_material_ui_styles__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1321),_defaultTheme__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(166);__webpack_exports__.a=function makeStyles(stylesOrCreator){var options=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object(_material_ui_styles__WEBPACK_IMPORTED_MODULE_1__.a)(stylesOrCreator,Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__.a)({defaultTheme:_defaultTheme__WEBPACK_IMPORTED_MODULE_2__.a},options))}},function(module,exports,__webpack_require__){"use strict";module.exports=function IsPropertyKey(argument){return"string"==typeof argument||"symbol"==typeof argument}},function(module,exports,__webpack_require__){var DESCRIPTORS=__webpack_require__(71),definePropertyModule=__webpack_require__(77),createPropertyDescriptor=__webpack_require__(205);module.exports=DESCRIPTORS?function(object,key,value){return definePropertyModule.f(object,key,createPropertyDescriptor(1,value))}:function(object,key,value){return object[key]=value,object}},function(module,exports,__webpack_require__){var defineProperty=__webpack_require__(77).f,has=__webpack_require__(75),TO_STRING_TAG=__webpack_require__(52)("toStringTag");module.exports=function(it,TAG,STATIC){it&&!has(it=STATIC?it:it.prototype,TO_STRING_TAG)&&defineProperty(it,TO_STRING_TAG,{configurable:!0,value:TAG})}},function(module,exports,__webpack_require__){var freeGlobal=__webpack_require__(497),freeSelf="object"==typeof self&&self&&self.Object===Object&&self,root=freeGlobal||freeSelf||Function("return this")();module.exports=root},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _exportNames={Badge:!0,Link:!0,DocumentWrapper:!0,SyntaxHighlighter:!0,SyntaxHighlighterProps:!0,SyntaxHighlighterRendererProps:!0,createSyntaxHighlighterElement:!0,ActionBar:!0,Spaced:!0,Placeholder:!0,ScrollArea:!0,Zoom:!0,Button:!0,Form:!0,WithTooltip:!0,WithTooltipPure:!0,TooltipMessage:!0,TooltipNote:!0,TooltipLinkList:!0,Tabs:!0,TabsState:!0,TabBar:!0,TabWrapper:!0,IconButton:!0,TabButton:!0,Separator:!0,interleaveSeparators:!0,Bar:!0,FlexBar:!0,AddonPanel:!0,Icons:!0,IconsProps:!0,StorybookLogo:!0,StorybookIcon:!0,Loader:!0};Object.defineProperty(exports,"Badge",{enumerable:!0,get:function get(){return _Badge.Badge}}),Object.defineProperty(exports,"Link",{enumerable:!0,get:function get(){return _link.Link}}),Object.defineProperty(exports,"DocumentWrapper",{enumerable:!0,get:function get(){return _DocumentWrapper.DocumentWrapper}}),Object.defineProperty(exports,"SyntaxHighlighter",{enumerable:!0,get:function get(){return _syntaxhighlighter.SyntaxHighlighter}}),Object.defineProperty(exports,"SyntaxHighlighterProps",{enumerable:!0,get:function get(){return _syntaxhighlighter.SyntaxHighlighterProps}}),Object.defineProperty(exports,"SyntaxHighlighterRendererProps",{enumerable:!0,get:function get(){return _syntaxhighlighter.SyntaxHighlighterRendererProps}}),Object.defineProperty(exports,"createSyntaxHighlighterElement",{enumerable:!0,get:function get(){return _syntaxhighlighter.createSyntaxHighlighterElement}}),Object.defineProperty(exports,"ActionBar",{enumerable:!0,get:function get(){return _ActionBar.ActionBar}}),Object.defineProperty(exports,"Spaced",{enumerable:!0,get:function get(){return _Spaced.Spaced}}),Object.defineProperty(exports,"Placeholder",{enumerable:!0,get:function get(){return _placeholder.Placeholder}}),Object.defineProperty(exports,"ScrollArea",{enumerable:!0,get:function get(){return _ScrollArea.ScrollArea}}),Object.defineProperty(exports,"Zoom",{enumerable:!0,get:function get(){return _Zoom.Zoom}}),Object.defineProperty(exports,"Button",{enumerable:!0,get:function get(){return _Button.Button}}),Object.defineProperty(exports,"Form",{enumerable:!0,get:function get(){return _index.Form}}),Object.defineProperty(exports,"WithTooltip",{enumerable:!0,get:function get(){return _WithTooltip.WithTooltip}}),Object.defineProperty(exports,"WithTooltipPure",{enumerable:!0,get:function get(){return _WithTooltip.WithTooltipPure}}),Object.defineProperty(exports,"TooltipMessage",{enumerable:!0,get:function get(){return _TooltipMessage.TooltipMessage}}),Object.defineProperty(exports,"TooltipNote",{enumerable:!0,get:function get(){return _TooltipNote.TooltipNote}}),Object.defineProperty(exports,"TooltipLinkList",{enumerable:!0,get:function get(){return _TooltipLinkList.TooltipLinkList}}),Object.defineProperty(exports,"Tabs",{enumerable:!0,get:function get(){return _tabs.Tabs}}),Object.defineProperty(exports,"TabsState",{enumerable:!0,get:function get(){return _tabs.TabsState}}),Object.defineProperty(exports,"TabBar",{enumerable:!0,get:function get(){return _tabs.TabBar}}),Object.defineProperty(exports,"TabWrapper",{enumerable:!0,get:function get(){return _tabs.TabWrapper}}),Object.defineProperty(exports,"IconButton",{enumerable:!0,get:function get(){return _button.IconButton}}),Object.defineProperty(exports,"TabButton",{enumerable:!0,get:function get(){return _button.TabButton}}),Object.defineProperty(exports,"Separator",{enumerable:!0,get:function get(){return _separator.Separator}}),Object.defineProperty(exports,"interleaveSeparators",{enumerable:!0,get:function get(){return _separator.interleaveSeparators}}),Object.defineProperty(exports,"Bar",{enumerable:!0,get:function get(){return _bar.Bar}}),Object.defineProperty(exports,"FlexBar",{enumerable:!0,get:function get(){return _bar.FlexBar}}),Object.defineProperty(exports,"AddonPanel",{enumerable:!0,get:function get(){return _addonPanel.AddonPanel}}),Object.defineProperty(exports,"Icons",{enumerable:!0,get:function get(){return _icon.Icons}}),Object.defineProperty(exports,"IconsProps",{enumerable:!0,get:function get(){return _icon.IconsProps}}),Object.defineProperty(exports,"StorybookLogo",{enumerable:!0,get:function get(){return _StorybookLogo.StorybookLogo}}),Object.defineProperty(exports,"StorybookIcon",{enumerable:!0,get:function get(){return _StorybookIcon.StorybookIcon}}),Object.defineProperty(exports,"Loader",{enumerable:!0,get:function get(){return _Loader.Loader}});var _Badge=__webpack_require__(985),_link=__webpack_require__(293),_DocumentWrapper=__webpack_require__(1001),_syntaxhighlighter=__webpack_require__(294),_ActionBar=__webpack_require__(405),_Spaced=__webpack_require__(1056),_placeholder=__webpack_require__(566),_ScrollArea=__webpack_require__(406),_Zoom=__webpack_require__(295),_Button=__webpack_require__(567),_index=__webpack_require__(192),_WithTooltip=__webpack_require__(568),_TooltipMessage=__webpack_require__(1063),_TooltipNote=__webpack_require__(1064),_TooltipLinkList=__webpack_require__(1065),_tabs=__webpack_require__(569),_button=__webpack_require__(408),_separator=__webpack_require__(1067),_bar=__webpack_require__(407),_addonPanel=__webpack_require__(1068),_icon=__webpack_require__(159),_StorybookLogo=__webpack_require__(1069),_StorybookIcon=__webpack_require__(1070),_blocks=__webpack_require__(1071);Object.keys(_blocks).forEach((function(key){"default"!==key&&"__esModule"!==key&&(Object.prototype.hasOwnProperty.call(_exportNames,key)||key in exports&&exports[key]===_blocks[key]||Object.defineProperty(exports,key,{enumerable:!0,get:function get(){return _blocks[key]}}))}));var _controls=__webpack_require__(578);Object.keys(_controls).forEach((function(key){"default"!==key&&"__esModule"!==key&&(Object.prototype.hasOwnProperty.call(_exportNames,key)||key in exports&&exports[key]===_controls[key]||Object.defineProperty(exports,key,{enumerable:!0,get:function get(){return _controls[key]}}))}));var _Loader=__webpack_require__(1154)},function(module,__webpack_exports__,__webpack_require__){"use strict";function createChainedFunction(){for(var _len=arguments.length,funcs=new Array(_len),_key=0;_key<_len;_key++)funcs[_key]=arguments[_key];return funcs.reduce((function(acc,func){return null==func?acc:function chainedFunction(){for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++)args[_key2]=arguments[_key2];acc.apply(this,args),func.apply(this,args)}}),(function(){}))}__webpack_require__.d(__webpack_exports__,"a",(function(){return createChainedFunction}))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _class,_temp2,_extends=Object.assign||function(target){for(var i=1;i1?"0":"")+patterns[key]).slice(-2)}))).replace(/(Y+)/g,(function(test){return date.getFullYear().toString().slice(-test.length)}))}},{key:"render",value:function render(){var _props=this.props,value=_props.value,titleFormat=_props.titleFormat,props=function _objectWithoutProperties(obj,keys){var target={};for(var i in obj)keys.indexOf(i)>=0||Object.prototype.hasOwnProperty.call(obj,i)&&(target[i]=obj[i]);return target}(_props,["value","titleFormat"]),date=void 0;if(value instanceof Date)date=value;else if("string"==typeof value)date=this.parseTimestring(value);else{if("number"!=typeof value)return _react2.default.createElement("span",null,"Invalid date");date=new Date(value)}var machineReadable=this.format(date,"iso8601"),humanReadable=this.relativeTimeString(date);return _react2.default.createElement("time",_extends({title:this.format(date,titleFormat)},props,{dateTime:machineReadable}),humanReadable)}}]),RelativeTime}(_react2.default.Component),_class.propTypes={value:_propTypes2.default.oneOfType([_propTypes2.default.instanceOf(Date),_propTypes2.default.number,_propTypes2.default.string]).isRequired,titleFormat:_propTypes2.default.string},_class.defaultProps={titleFormat:"iso8601"},_temp2);exports.default=RelativeTime},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",(function(){return _toConsumableArray}));var arrayLikeToArray=__webpack_require__(251);var iterableToArray=__webpack_require__(621),unsupportedIterableToArray=__webpack_require__(311);function _toConsumableArray(arr){return function _arrayWithoutHoles(arr){if(Array.isArray(arr))return Object(arrayLikeToArray.a)(arr)}(arr)||Object(iterableToArray.a)(arr)||Object(unsupportedIterableToArray.a)(arr)||function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"b",(function(){return useFormControl}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),FormControlContext=react__WEBPACK_IMPORTED_MODULE_0__.createContext();function useFormControl(){return react__WEBPACK_IMPORTED_MODULE_0__.useContext(FormControlContext)}__webpack_exports__.a=FormControlContext},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"CacheProvider",(function(){return CacheProvider})),__webpack_require__.d(__webpack_exports__,"ThemeContext",(function(){return ThemeContext})),__webpack_require__.d(__webpack_exports__,"withEmotionCache",(function(){return emotion_element_57a3a7a3_browser_esm_withEmotionCache})),__webpack_require__.d(__webpack_exports__,"css",(function(){return css_browser_esm})),__webpack_require__.d(__webpack_exports__,"ClassNames",(function(){return ClassNames})),__webpack_require__.d(__webpack_exports__,"Global",(function(){return Global})),__webpack_require__.d(__webpack_exports__,"createElement",(function(){return core_browser_esm_jsx})),__webpack_require__.d(__webpack_exports__,"jsx",(function(){return core_browser_esm_jsx})),__webpack_require__.d(__webpack_exports__,"keyframes",(function(){return core_browser_esm_keyframes}));var inheritsLoose=__webpack_require__(49),react=__webpack_require__(0);var StyleSheet=function(){function StyleSheet(options){this.isSpeedy=void 0===options.speedy||options.speedy,this.tags=[],this.ctr=0,this.nonce=options.nonce,this.key=options.key,this.container=options.container,this.before=null}var _proto=StyleSheet.prototype;return _proto.insert=function insert(rule){if(this.ctr%(this.isSpeedy?65e3:1)==0){var before,_tag=function createStyleElement(options){var tag=document.createElement("style");return tag.setAttribute("data-emotion",options.key),void 0!==options.nonce&&tag.setAttribute("nonce",options.nonce),tag.appendChild(document.createTextNode("")),tag}(this);before=0===this.tags.length?this.before:this.tags[this.tags.length-1].nextSibling,this.container.insertBefore(_tag,before),this.tags.push(_tag)}var tag=this.tags[this.tags.length-1];if(this.isSpeedy){var sheet=function sheetForTag(tag){if(tag.sheet)return tag.sheet;for(var i=0;ih&&(h=(c=c.trim()).charCodeAt(0)),h){case 38:return c.replace(F,"$1"+d.trim());case 58:return d.trim()+c.replace(F,"$1"+d.trim());default:if(0<1*e&&0b.charCodeAt(8))break;case 115:a=a.replace(b,"-webkit-"+b)+";"+a;break;case 207:case 102:a=a.replace(b,"-webkit-"+(102e.charCodeAt(0)&&(e=e.trim()),e=[e],0q)&&(t=(f=f.replace(" ",":")).length),0=4;++i,len-=4)k=1540483477*(65535&(k=255&str.charCodeAt(i)|(255&str.charCodeAt(++i))<<8|(255&str.charCodeAt(++i))<<16|(255&str.charCodeAt(++i))<<24))+(59797*(k>>>16)<<16),h=1540483477*(65535&(k^=k>>>24))+(59797*(k>>>16)<<16)^1540483477*(65535&h)+(59797*(h>>>16)<<16);switch(len){case 3:h^=(255&str.charCodeAt(i+2))<<16;case 2:h^=(255&str.charCodeAt(i+1))<<8;case 1:h=1540483477*(65535&(h^=255&str.charCodeAt(i)))+(59797*(h>>>16)<<16)}return(((h=1540483477*(65535&(h^=h>>>13))+(59797*(h>>>16)<<16))^h>>>15)>>>0).toString(36)},unitless_browser_esm={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},memoize_browser_esm=__webpack_require__(308),hyphenateRegex=/[A-Z]|^ms/g,animationRegex=/_EMO_([^_]+?)_([^]*?)_EMO_/g,isCustomProperty=function isCustomProperty(property){return 45===property.charCodeAt(1)},isProcessableValue=function isProcessableValue(value){return null!=value&&"boolean"!=typeof value},processStyleName=Object(memoize_browser_esm.a)((function(styleName){return isCustomProperty(styleName)?styleName:styleName.replace(hyphenateRegex,"-$&").toLowerCase()})),serialize_browser_esm_processStyleValue=function processStyleValue(key,value){switch(key){case"animation":case"animationName":if("string"==typeof value)return value.replace(animationRegex,(function(match,p1,p2){return cursor={name:p1,styles:p2,next:cursor},p1}))}return 1===unitless_browser_esm[key]||isCustomProperty(key)||"number"!=typeof value||0===value?value:value+"px"};function handleInterpolation(mergedProps,registered,interpolation,couldBeSelectorInterpolation){if(null==interpolation)return"";if(void 0!==interpolation.__emotion_styles)return interpolation;switch(typeof interpolation){case"boolean":return"";case"object":if(1===interpolation.anim)return cursor={name:interpolation.name,styles:interpolation.styles,next:cursor},interpolation.name;if(void 0!==interpolation.styles){var next=interpolation.next;if(void 0!==next)for(;void 0!==next;)cursor={name:next.name,styles:next.styles,next:cursor},next=next.next;return interpolation.styles+";"}return function createStringFromObject(mergedProps,registered,obj){var string="";if(Array.isArray(obj))for(var i=0;i1?arguments[1]:void 0)}})},function(module,exports,__webpack_require__){var baseAssignValue=__webpack_require__(376),baseForOwn=__webpack_require__(378),baseIteratee=__webpack_require__(386);module.exports=function mapValues(object,iteratee){var result={};return iteratee=baseIteratee(iteratee,3),baseForOwn(object,(function(value,key,object){baseAssignValue(result,key,iteratee(value,key,object))})),result}},function(module,exports,__webpack_require__){module.exports=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,(function(e){var n=t[o][1][e];return s(n||e)}),l,l.exports,e,t,n,r)}return n[o].exports}for(var i=!1,o=0;o=0?(this.lastItem=this.list[index],this.list[index].val):void 0},Similar.prototype.set=function(key,val){var index;return this.lastItem&&this.isEqual(this.lastItem.key,key)?(this.lastItem.val=val,this):(index=this.indexOf(key))>=0?(this.lastItem=this.list[index],this.list[index].val=val,this):(this.lastItem={key:key,val:val},this.list.push(this.lastItem),this.size++,this)},Similar.prototype.delete=function(key){var index;if(this.lastItem&&this.isEqual(this.lastItem.key,key)&&(this.lastItem=void 0),(index=this.indexOf(key))>=0)return this.size--,this.list.splice(index,1)[0]},Similar.prototype.has=function(key){var index;return!(!this.lastItem||!this.isEqual(this.lastItem.key,key))||(index=this.indexOf(key))>=0&&(this.lastItem=this.list[index],!0)},Similar.prototype.forEach=function(callback,thisArg){var i;for(i=0;i=0&&(!(tmp=(currentLru=removedLru[i]).cacheItem.get(currentLru.arg))||!tmp.size);i--)currentLru.cacheItem.delete(currentLru.arg)}module.exports=function(limit){var cache=new MapOrSimilar(!1),lru=[];return function(fn){var memoizerific=function(){var newMap,fnResult,i,currentCache=cache,argsLengthMinusOne=arguments.length-1,lruPath=Array(argsLengthMinusOne+1),isMemoized=!0;if((memoizerific.numArgs||0===memoizerific.numArgs)&&memoizerific.numArgs!==argsLengthMinusOne+1)throw new Error("Memoizerific functions should always be called with the same number of arguments");for(i=0;i0&&(lruPath[argsLengthMinusOne]={cacheItem:currentCache,arg:arguments[argsLengthMinusOne]},isMemoized?moveToMostRecentLru(lru,lruPath):lru.push(lruPath),lru.length>limit&&removeCachedResult(lru.shift())),memoizerific.wasMemoized=isMemoized,memoizerific.numArgs=argsLengthMinusOne+1,fnResult};return memoizerific.limit=limit,memoizerific.wasMemoized=!1,memoizerific.cache=cache,memoizerific.lru=lru,memoizerific}}},{"map-or-similar":1}]},{},[3])(3)},,,,function(module,exports,__webpack_require__){module.exports=__webpack_require__(1266)},function(module,exports,__webpack_require__){"use strict";var MAX_SAFE_INTEGER=__webpack_require__(329),ToInteger=__webpack_require__(327);module.exports=function ToLength(argument){var len=ToInteger(argument);return len<=0?0:len>MAX_SAFE_INTEGER?MAX_SAFE_INTEGER:len}},function(module,exports,__webpack_require__){"use strict";var GetIntrinsic=__webpack_require__(15),$String=GetIntrinsic("%String%"),$TypeError=GetIntrinsic("%TypeError%");module.exports=function ToString(argument){if("symbol"==typeof argument)throw new $TypeError("Cannot convert a Symbol value to a string");return $String(argument)}},function(module,exports,__webpack_require__){"use strict";var GetIntrinsic=__webpack_require__(15),callBound=__webpack_require__(54),$TypeError=GetIntrinsic("%TypeError%"),IsArray=__webpack_require__(180),$apply=GetIntrinsic("%Reflect.apply%",!0)||callBound("%Function.prototype.apply%");module.exports=function Call(F,V){var argumentsList=arguments.length>2?arguments[2]:[];if(!IsArray(argumentsList))throw new $TypeError("Assertion failed: optional `argumentsList`, if provided, must be a List");return $apply(F,V,argumentsList)}},function(module,exports){module.exports=!1},function(module,exports,__webpack_require__){var path=__webpack_require__(344),global=__webpack_require__(40),aFunction=function(variable){return"function"==typeof variable?variable:void 0};module.exports=function(namespace,method){return arguments.length<2?aFunction(path[namespace])||aFunction(global[namespace]):path[namespace]&&path[namespace][method]||global[namespace]&&global[namespace][method]}},function(module,exports,__webpack_require__){var activeXDocument,anObject=__webpack_require__(61),defineProperties=__webpack_require__(353),enumBugKeys=__webpack_require__(347),hiddenKeys=__webpack_require__(225),html=__webpack_require__(489),documentCreateElement=__webpack_require__(340),sharedKey=__webpack_require__(264),IE_PROTO=sharedKey("IE_PROTO"),EmptyConstructor=function(){},scriptTag=function(content){return"