From aca37cb21dbc0f95c90b69f6b4217c0f0c3916f6 Mon Sep 17 00:00:00 2001 From: Jeroen Ransijn Date: Mon, 15 Oct 2018 17:34:37 -0700 Subject: [PATCH] V4 (Kauri) (#200) * Stack component and React 16.3 * improvements * typo * add default value * themer wip * create select appearance * create link appearance * theme * fix border * progress on buttons theming * using new icons * in flight progress * withTheme single line * default theme cleanup in folder * more controls use withTheme * getTextareaClassName * getRowAppearance * getSelectClassName * getSegmentedControlClassName * remove ButtonAppearances * themed avatar * fixes * fix icon Combobox * themed badges * sunset icons * themed switch * remove color refs from components * updated colors story * default theme cleanup * upgrade to gatsby v2 * color docs * typography docs improvements * improve layer docs * improve alert docs * improve button docs * add icon docs * Table improvements + Menu component added * advanced table example * advanced table example * table docs update * component status fix * fix theme export + text size 600 * fix * 4.0.0-0 * scales added * 4.0.0-1 * color mapping example * prop type fix Select * fix tooltip * 4.0.0-2 * fix autofocus => autoFocus in Select * alert improvements * 4.0.0-3 * support auto height table rows * 4.0.0-4 * support border false * 4.0.0-5 * unify intent API, deprecate info * 4.0.0-6 * icon button default color change * 4.0.0-7 * docs update * Fix popover not closed when toggle button has children (#219) * Fix popover when toggle button has children * Add a story for popover * Update snapshot and fix tests * Refactor onbody click check * Increase package size limit * add hint prop to TextInputField * 4.0.0-8 * 4.0.0-9 * set default TextInputField height to 32 * 4.0.0-10 * add cursor not-allowed to disabled button * use transparent color for button disabled * focus management * Remove intent requirement on button, add default "none" (#225) * Remove intent requirement on button, add default "none" * Update snapshots * support is prop MenuItem * 4.0.0-11 * allow passthrough props on menu item, and always bubble highjacked events (#231) * 4.0.0-12 * increase the contrast of n1-level colors and fix typo (#232) * increase the contrast of n1-level colors and fix typo * wip update snap and B1 color * wip. update more snaps * 4.0.0-13 * size in lists + icons (#234) * 4.0.0-14 * Bug/select icon margin (#237) * add padding for icon on Select, add SelectField, add docs * wip. include in docs * wip * 4.0.0-15 * add export for SelectField (#238) * [v4] Fix button margin top (#240) * fix margin top button * fix tests * add focus handling to segmented control (#241) * [V4] tooltip inside popover (#239) * size in lists + icons * clean up * fix typo and add children check * fix * clean up * fix typo and add children check * fix * 4.0.0-16 * fix docs blank page (#244) * enable passing `defaultValue` for uncontrolled select inputs (#245) * 4.0.0-17 * fix icon placement (#248) * 4.0.0-18 * Remove caret right icon from sidebartab (#250) * 4.0.0-19 * fix jitter positioner (#257) * 4.0.0-20 * improve positioner calculations (#259) * 4.0.0-21 * fix css ssr (#264) * Fix hiding by explicitly setting `isShown` to `false` (#265) * 4.0.0-22 * support onCancel callback prop (#266) * 4.0.0-23 * [v4] Add Table.VirtualBody (#267) * wip virtual body * add Table.VirtualBody * remove warning (#269) * fix fixed height virtual body (#270) * 4.0.0-24 * improve virtual body (#271) * 4.0.0-25 * Fix broken blueprint link (#273) Fixes a broken link in the docs for icons. ``` http://blueprintjs.com/docs/v2/#icons -> http://blueprintjs.com/docs/versions/2/#icons ``` * [v4] Add Editable/SelectMenu Cell (#274) * add Editable/SelectMenu Cell * minor tweaks * cleanup stories + improve table row interaction * cleanup imports * 4.0.0-26 * [V4] EditableCell improvements (#278) * wip disabled editable cell * editable cell improvements * remove controlled usage * 4.0.0-27 * [v4] Improve (SelectMenu/Editable)Cell and SegmentedControl (#281) * improve select menu/editable cell and segmented control * remove border right from cell * 4.0.0-28 * [v4] Table.(Editable/SelectMenu)Cell Fixes (#284) * fix size and isSelectable={true} * fixes to size and isSelectable={true} * 4.0.0-29 * fix editable cell position + tiny pixel shift radio (#286) * 4.0.0-30 * fix virtual body height calculation (#289) * 4.0.0-31 * improve editable/selectmenu cells (#293) * 4.0.0-32 * add left, right, top, bottom anchors to side-sheet (#252) * add left, right, top, bottom anchors to side-sheet * use Position enum in Side-sheet and cache calls to generating sheetCloseClassName * move Position to constants and update imports * fix another Position import * change SheetClose animation name and make position a required prop * 4.0.0-33 * fix search (#304) * 4.0.0-34 * Migrate to circleci 2.0 * circleci: fix the gh-pages ignore * circleci: fix the gh-pages ignore config * Run the babel builds concurrently * Make the Dialog mobile friendly (#301) * Make the dialog mobile friendly This change makes the dialog resize gracefuly to fit the available viewport. It should be a non-breaking change and the dialog should behave the same on desktop as it did before. * Add sideOffset * Remove unnecessary sideOffsetWithUnit variable * Use `rm -rf` in prepublishOnly * v4.0.0-35 * add docs to badge and pill (#307) * fix prop warnings and make list components more flexible (#315) * dialog: add horizontal scrolling support (#314) This allows the Dialog to gracefully handle block level content that's too wide by scrolling, preventing the Dialog from overflowing the sides of the viewport. This should be a non-breaking change. * add iconSize to IconButton component. closes #316 (#317) * 4.0.0-36 * Add "indeterminate" prop to (#313) * Add "indeterminate" prop to * Delete extraneous line * Remove permutation function, use plain JSX * Fix label * Add ref callback to set indeterminate prop * Add indeterminate styles * Remove console.log * Make prop order consistent * Clean up story * Uncomment commented-out styles * Remove duplicate styles * add position relative (#318) * 4.0.0-37 * Allow grammarly to be disabled for Textarea (#323) * Allow grammarly to be disabled for Textarea * Destructure grammarly from props * Improve cancelation behavior for SideSheet, Dialog, and Overlay (#324) * Extend cancelation handling in Dialog and Overlay This adds: - `shouldCloseOnEscapePress` and `shouldCloseOnClick` to `Overlay` and `Dialog` - Fixes a bug where `Dialog`'s did not trigger the `onCancel` handler when the close button was clicked. * Add Stories and SideSheet support * 4.0.0-38 * add Positioner support for Position.LEFT and Position.RIGHT (#299) * add Position.LEFT and Position.RIGHT positions to Positioner, Tooltip, and Popover * alter y axis to keep popover in viewport * 4.0.0-39 * remove empty divs from positioner (#330) * 4.0.0-40 * fix conflict between v3 and v4 toaster init order (#332) * 4.0.0-41 * Remove storybook-deployer * V4 Docs (#335) * overview images * wip * mdx integration wip * wip testing mdx * wip docs provider * overview images * wip * mdx integration wip * wip testing mdx * wip docs provider * layout primitives * fix css * typography * small cleanup * colors + icons * button docs * tab docs * badge and pill * avatar docs * TextInput docs * SearchInput docs * Textarea docs * Autocomplete docs * filepicker docs * Select docs * Select docs * Combobox docs * SelectMenu docs * more examples for SelectMenu * Popover docs * Menu docs * Checkbox docs * Radio docs * SegmentedControl docs * Switch docs * toaster docs * Alert docs * Spinner docs * Dialog docs * SideSheet docs * IconButton docs * remove example * CornerDialog docs * Table docs * Portal docs * FormField docs * broken wip * fix portal * get started back to normal * docs homepage * docs media items * add spectrum link * github button * docs update * ssr and improvements * fix aboslutePath * remove old docs * fix imports * clean docs * docs & readme improvements * update readme and remove unused code * remove old code * Upgrade dependencies v4 (#336) * upgrade deps * update snaphosts * add segment tracking (#337) * Tracking fix (#338) * add segment tracking * improve ssr * fix * Bug/radio indeterminate (#340) * v4.0.0-42 * Add babel-plugin-add-react-displayname This makes sure that all components have a `displayName`. * v4.0.0-43 * Add displayName to withTheme * v4.0.0-44 * Upgrade most of the dependencies (#344) * Upgrade most of the dependencies * Fix evergreen version in ssr example * Add @babel/runtime * Fix excluding the stories and tests from the build * Revert test order change * Upgrade ava and sinon * Upgrade husky hooks config * remove unused TableCell props (#342) * BREAKING: bubble event in radio onChange (#341) * BREAKING: bubble event in radio onChange * comply with linter * 4.0.0-45 --- .babelrc | 24 +- .github/CODE_OF_CONDUCT.md | 12 +- .github/CONTRIBUTING.md | 16 +- .github/ISSUE_TEMPLATE.md | 36 +- .github/PULL_REQUEST_TEMPLATE.md | 10 +- .storybook/webpack.config.es6.js | 33 - .storybook/webpack.config.js | 38 +- .vscode/settings.json | 4 + README.md | 145 +- ROADMAP.md | 55 - docs/.eslintrc | 6 + docs/gatsby-browser.js | 13 + docs/gatsby-config.js | 29 +- docs/gatsby-node.js | 56 +- docs/gatsby-ssr.js | 54 + docs/package.json | 37 +- docs/postcss.config.js | 13 + docs/segmentWriteKey.js | 1 + docs/src/IA.js | 335 + docs/src/absolutePath.js | 3 + docs/src/componentRoutes.js | 87 - docs/src/components/ApppearanceOption.js | 22 - docs/src/components/ColorExamples.js | 64 + docs/src/components/ColorGroup.js | 35 + docs/src/components/ComponentBlock.js | 49 - docs/src/components/ComponentReadme.js | 149 - docs/src/components/ComponentSection.js | 6 +- docs/src/components/ComponentsSidebar.js | 30 - docs/src/components/ConsentManager.js | 48 + docs/src/components/DocsMDXProvider.js | 40 + docs/src/components/Features.js | 41 + docs/src/components/GetStartedSidebar.js | 1 - docs/src/components/GitHubIcon.js | 20 + docs/src/components/HomeHero.js | 71 + docs/src/components/HomeMedia.js | 89 + docs/src/components/IconSearch.js | 62 + docs/src/components/Layout.js | 40 + docs/src/components/LogoIcon.js | 36 + docs/src/components/LogoWordmark.js | 40 + docs/src/components/MDXPlayground.js | 23 + docs/src/components/Overview.js | 117 + docs/src/components/OverviewItem.js | 21 + docs/src/components/Page.js | 180 + docs/src/components/PageFooter.js | 35 + docs/src/components/Playground.js | 80 +- docs/src/components/PropsTable.js | 146 + docs/src/components/SegmentLogoWordmark.js | 24 + docs/src/components/Sidebar.js | 21 +- docs/src/components/SpectrumIcon.js | 20 + docs/src/components/Swatch.js | 61 + docs/src/components/SyntaxHighlighter.js | 35 +- docs/src/components/TextStylePreview.js | 66 + docs/src/components/TopBar.js | 49 +- docs/src/components/examples/AdvancedTable.js | 267 + docs/src/components/examples/VirtualTable.js | 71 + docs/src/components/examples/profiles.json | 842 ++ docs/src/components/prop-types-table/index.js | 109 - docs/src/css/appearance-option.css | 22 - docs/src/css/colors.css | 362 +- docs/src/css/component-readme.css | 65 - docs/src/css/container.css | 28 +- docs/src/css/content.css | 222 +- docs/src/css/features.css | 21 + docs/src/css/global.css | 7 + docs/src/css/home-hero.css | 53 + docs/src/css/home-media.css | 71 + docs/src/css/home.css | 104 - docs/src/css/index.css | 9 +- docs/src/css/main-layout.css | 82 +- docs/src/css/mdx-page.css | 32 + docs/src/css/media-ranges.css | 14 +- docs/src/css/nav-group.css | 49 +- docs/src/css/overview.css | 73 + docs/src/css/page-footer.css | 33 + docs/src/css/playground.css | 62 +- docs/src/css/prism-theme.css | 27 +- docs/src/css/reset.css | 4 +- docs/src/css/scratch.css | 81 + docs/src/css/top-bar.css | 42 +- docs/src/css/variables.css | 124 +- docs/src/favicon.png | Bin 0 -> 41124 bytes docs/src/html.js | 64 +- docs/src/images/design-systems-com.png | Bin 0 -> 8467 bytes .../driving-adoption-of-a-design-system.png | Bin 0 -> 42639 bytes docs/src/images/evergreen-logo-icon.svg | 23 - docs/src/images/evergreen-logo-wordmark.svg | 26 - .../images/evergreen-spot-illustration.png | Bin 0 -> 540552 bytes docs/src/images/growing-a-design-system.png | Bin 0 -> 85316 bytes docs/src/images/illustrations/Alert.png | Bin 0 -> 9982 bytes .../src/images/illustrations/Autocomplete.png | Bin 0 -> 8809 bytes docs/src/images/illustrations/Avatar.png | Bin 0 -> 13071 bytes .../src/images/illustrations/Badge & Pill.png | Bin 0 -> 13537 bytes docs/src/images/illustrations/Button.png | Bin 0 -> 7359 bytes docs/src/images/illustrations/Checkbox.png | Bin 0 -> 8239 bytes docs/src/images/illustrations/Colors.png | Bin 0 -> 9833 bytes docs/src/images/illustrations/Combobox.png | Bin 0 -> 7675 bytes .../images/illustrations/Corner Dialog.png | Bin 0 -> 9044 bytes docs/src/images/illustrations/Dialog.png | Bin 0 -> 8159 bytes docs/src/images/illustrations/Filepicker.png | Bin 0 -> 9756 bytes docs/src/images/illustrations/Form Field.png | Bin 0 -> 6424 bytes docs/src/images/illustrations/Icons.png | Bin 0 -> 12015 bytes .../images/illustrations/Layout Primitive.png | Bin 0 -> 6200 bytes docs/src/images/illustrations/Menu.png | Bin 0 -> 10164 bytes docs/src/images/illustrations/Popover.png | Bin 0 -> 9538 bytes docs/src/images/illustrations/Portal.png | Bin 0 -> 13834 bytes docs/src/images/illustrations/Positioner.png | Bin 0 -> 10301 bytes docs/src/images/illustrations/Radio.png | Bin 0 -> 11259 bytes .../src/images/illustrations/Search Input.png | Bin 0 -> 8800 bytes .../illustrations/Segmented Control.png | Bin 0 -> 8070 bytes docs/src/images/illustrations/Select Menu.png | Bin 0 -> 9844 bytes docs/src/images/illustrations/Select.png | Bin 0 -> 7608 bytes docs/src/images/illustrations/Side Sheet.png | Bin 0 -> 8423 bytes docs/src/images/illustrations/Spinner.png | Bin 0 -> 10500 bytes docs/src/images/illustrations/Switch.png | Bin 0 -> 12348 bytes docs/src/images/illustrations/Tab.png | Bin 0 -> 8509 bytes docs/src/images/illustrations/Table.png | Bin 0 -> 9949 bytes docs/src/images/illustrations/Text Input.png | Bin 0 -> 7286 bytes docs/src/images/illustrations/Textarea.png | Bin 0 -> 7312 bytes docs/src/images/illustrations/Toaster.png | Bin 0 -> 15013 bytes docs/src/images/illustrations/Tooltip.png | Bin 0 -> 8792 bytes docs/src/images/illustrations/Typography.png | Bin 0 -> 12079 bytes docs/src/layouts/index.js | 18 - docs/src/pages/components/alert.mdx | 144 + docs/src/pages/components/autocomplete.mdx | 162 + docs/src/pages/components/avatar.mdx | 69 + docs/src/pages/components/badge-and-pill.mdx | 150 + docs/src/pages/components/button.mdx | 415 + docs/src/pages/components/checkbox.mdx | 47 + docs/src/pages/components/colors.mdx | 21 + docs/src/pages/components/combobox.mdx | 83 + docs/src/pages/components/corner-dialog.mdx | 76 + docs/src/pages/components/dialog.mdx | 236 + docs/src/pages/components/filepicker.mdx | 30 + docs/src/pages/components/form-field.mdx | 8 + docs/src/pages/components/icons.mdx | 56 + docs/src/pages/components/index.js | 24 + .../pages/components/layout-primitives.mdx | 432 + docs/src/pages/components/menu.mdx | 249 + docs/src/pages/components/popover.mdx | 265 + docs/src/pages/components/portal.mdx | 21 + docs/src/pages/components/positioner.mdx | 8 + docs/src/pages/components/radio.mdx | 100 + docs/src/pages/components/search-input.mdx | 58 + .../pages/components/segmented-control.mdx | 73 + docs/src/pages/components/select-menu.mdx | 200 + docs/src/pages/components/select.mdx | 153 + docs/src/pages/components/side-sheet.mdx | 242 + docs/src/pages/components/spinner.mdx | 50 + docs/src/pages/components/switch.mdx | 56 + docs/src/pages/components/tab.mdx | 160 + docs/src/pages/components/table.mdx | 272 + docs/src/pages/components/text-input.mdx | 143 + docs/src/pages/components/textarea.mdx | 49 + docs/src/pages/components/toaster.mdx | 152 + docs/src/pages/components/tooltip.mdx | 76 + docs/src/pages/components/typography.mdx | 382 + docs/src/pages/get-started/introduction.js | 163 +- docs/src/pages/get-started/theming.js | 70 +- docs/src/pages/index.js | 65 +- docs/src/templates/component.js | 47 - docs/src/utils/getComponent.js | 58 - docs/src/utils/kebabCase.js | 25 - docs/static/CNAME | 1 + docs/static/circle.yml | 19 + docs/static/og-image.png | Bin 0 -> 8166 bytes docs/static/twitter-og.png | Bin 0 -> 2182 bytes docs/yarn.lock | 9105 +++++++++++------ examples/ssr-next/package.json | 6 +- examples/ssr-next/pages/_document.js | 10 +- examples/ssr-next/yarn.lock | 3751 ++++--- package.json | 119 +- .../examples/alert-card-with-children.example | 46 - src/alert/docs/examples/alert-card.example | 31 - .../alert-default-with-children.example | 41 - src/alert/docs/examples/alert-default.example | 26 - src/alert/docs/examples/inline-alert.example | 14 - src/alert/docs/index.js | 116 - src/alert/index.js | 4 +- src/alert/src/Alert.js | 156 +- src/alert/src/InlineAlert.js | 86 +- src/alert/stories/index.stories.js | 37 +- src/alert/test/index.js | 17 +- src/alert/test/snapshots/index.js.md | 148 +- src/alert/test/snapshots/index.js.snap | Bin 1264 -> 1482 bytes .../docs/examples/allOptions.example | 32 - .../docs/examples/default-basic.example | 17 - .../default-with-children-prop.example | 16 - .../examples/filterDisabled-basic.example | 18 - .../docs/examples/onFocus-basic.example | 17 - .../docs/examples/withButton-basic.example | 23 - .../docs/examples/withTitle-basic.example | 18 - src/autocomplete/docs/index.js | 160 - src/autocomplete/index.js | 4 +- src/autocomplete/src/Autocomplete.js | 10 +- src/autocomplete/stories/index.stories.js | 2 +- src/avatar/index.js | 2 +- src/avatar/src/Avatar.js | 131 +- src/avatar/stories/index.stories.js | 61 +- src/badges/index.js | 5 +- src/badges/src/Badge.js | 41 +- src/badges/stories/index.stories.js | 55 +- src/buttons/docs/LoadingManager.js | 31 - src/buttons/docs/examples/arrow.example | 10 - src/buttons/docs/examples/back-button.example | 1 - .../docs/examples/basic-with-icons.example | 9 - src/buttons/docs/examples/basic.example | 8 - .../docs/examples/icon-button-basic.example | 6 - src/buttons/docs/examples/loading.example | 13 - src/buttons/docs/examples/triangle.example | 10 - src/buttons/docs/index.js | 214 - src/buttons/index.js | 8 +- src/buttons/src/BackButton.js | 14 +- src/buttons/src/Button.js | 131 +- src/buttons/src/IconButton.js | 119 +- src/buttons/src/TextDropdownButton.js | 138 + src/buttons/src/styles/ButtonAppearances.js | 193 - src/buttons/stories/index.stories.js | 603 +- src/checkbox/index.js | 2 +- src/checkbox/src/Checkbox.js | 110 +- src/checkbox/stories/index.stories.js | 4 +- src/colors/docs/index.js | 218 - src/colors/index.js | 1 - src/colors/src/colors.css | 419 - src/colors/stories/ColorExamples.js | 65 + src/colors/stories/ColorGroup.js | 35 + src/colors/stories/ColorMapping.js | 774 ++ src/colors/stories/Swatch.js | 62 + src/colors/stories/index.stories.js | 66 +- .../{src/colors.js => stories/v3-colors.js} | 0 .../docs/examples/Combobox-basic.example | 8 - .../examples/Combobox-custom-items.example | 6 - .../examples/Combobox-open-on-focus.example | 5 - src/combobox/docs/index.js | 95 - src/combobox/index.js | 2 +- src/combobox/src/Combobox.js | 8 +- src/combobox/stories/index.stories.js | 2 +- src/constants/index.js | 3 + src/constants/src/Intent.js | 6 + src/constants/src/Position.js | 10 + src/constants/src/StackingOrder.js | 30 + .../docs/examples/CornerDialog-basic.example | 57 - src/corner-dialog/docs/index.js | 74 - src/corner-dialog/index.js | 2 +- src/corner-dialog/src/CornerDialog.js | 24 +- src/corner-dialog/stories/index.stories.js | 2 +- src/dialog/docs/examples/hide-header.example | 24 - .../docs/examples/internal-scrolling.example | 14 - .../primary-button-confirmation.example | 20 - .../docs/examples/primary-button-only.example | 18 - .../docs/examples/primary-button-red.example | 16 - .../docs/examples/primary-button.example | 15 - .../docs/examples/self-managed-close.example | 22 - .../docs/examples/without-buttons.example | 17 - src/dialog/docs/index.js | 198 - src/dialog/index.js | 2 +- src/dialog/src/Dialog.js | 172 +- src/dialog/{docs => stories}/DialogManager.js | 0 src/dialog/stories/index.stories.js | 430 +- src/file-picker/index.js | 2 +- src/file-picker/src/FilePicker.js | 31 + src/file-picker/stories/index.stories.js | 2 +- src/file-picker/test/snapshots/index.js.md | 4 +- src/file-picker/test/snapshots/index.js.snap | Bin 900 -> 896 bytes src/form-field/index.js | 11 +- src/form-field/src/FormField.js | 34 +- src/form-field/src/FormFieldDescription.js | 4 +- src/form-field/src/FormFieldHint.js | 15 + .../src/FormFieldValidationMessage.js | 44 +- src/form-field/stories/index.stories.js | 2 +- src/icon/index.js | 1 + src/icon/src/Icon.js | 126 + src/icon/stories/index.stories.js | 40 + src/icons/docs/examples/AddIcon-basic.example | 1 - .../docs/examples/ArrowIcon-basic.example | 1 - .../examples/CheckCircleIcon-basic.example | 1 - .../docs/examples/CloseIcon-basic.example | 1 - src/icons/docs/examples/CogIcon-basic.example | 1 - .../docs/examples/DangerIcon-basic.example | 1 - src/icons/docs/examples/Icon-basic.example | 1 - .../docs/examples/QuestionIcon-basic.example | 1 - .../docs/examples/SearchIcon-basic.example | 1 - .../docs/examples/TriangleIcon-basic.example | 1 - .../docs/examples/WarningIcon-basic.example | 1 - src/icons/docs/index.js | 261 - src/icons/index.js | 41 - src/icons/src/AddIcon.js | 34 - src/icons/src/ArrowIcon.js | 33 - src/icons/src/CheckCircleIcon.js | 33 - src/icons/src/CloseIcon.js | 33 - src/icons/src/CogIcon.js | 33 - src/icons/src/DangerIcon.js | 33 - src/icons/src/Icon.js | 105 - src/icons/src/QuestionIcon.js | 33 - src/icons/src/SearchIcon.js | 33 - src/icons/src/TriangleIcon.js | 33 - src/icons/src/WarningIcon.js | 33 - src/icons/src/styles/IconAim.js | 11 - src/icons/src/styles/IconColors.js | 11 - src/icons/stories/index.stories.js | 49 - src/image/index.js | 2 +- src/image/stories/index.stories.js | 2 +- src/index.js | 67 +- src/layers/docs/examples/Card-basic.example | 12 - .../examples/Card-elevation-styles.example | 73 - .../docs/examples/Pane-appearances.example | 63 - src/layers/docs/examples/Pane-basic.example | 14 - src/layers/docs/examples/Pane-borders.example | 14 - .../examples/Pane-elevation-styles.example | 73 - src/layers/docs/index.js | 242 - src/layers/index.js | 7 +- src/layers/src/Pane.js | 153 +- src/layers/src/styles/border-colors.js | 9 - src/layers/src/styles/elevation-styles.js | 14 - src/layers/src/styles/layer-appearances.js | 16 - src/layers/stories/index.stories.js | 143 +- src/manager/index.js | 2 +- src/menu/index.js | 1 + src/menu/src/Menu.js | 126 + src/menu/src/MenuDivider.js | 8 + src/menu/src/MenuGroup.js | 32 + src/menu/src/MenuItem.js | 134 + src/menu/src/MenuOption.js | 123 + src/menu/src/MenuOptionsGroup.js | 59 + src/menu/stories/index.stories.js | 188 + src/overlay/index.js | 2 +- src/overlay/src/Overlay.js | 113 +- src/overlay/stories/index.stories.js | 2 +- src/popover/README.md | 16 +- .../docs/examples/Popover-basic.example | 16 - .../examples/Popover-close-inside.example | 19 - .../docs/examples/Popover-positions.example | 24 - src/popover/docs/index.js | 169 - src/popover/index.js | 2 +- src/popover/src/Popover.js | 88 +- src/popover/stories/index.stories.js | 85 +- src/portal/index.js | 2 +- src/portal/stories/index.stories.js | 2 +- src/positioner/index.js | 3 +- src/positioner/src/Position.js | 8 - src/positioner/src/Positioner.js | 137 +- src/positioner/src/getPosition.js | 186 +- src/positioner/test/index.js | 114 + src/positioner/test/snapshots/index.js.md | 210 + src/positioner/test/snapshots/index.js.snap | Bin 0 -> 1199 bytes src/radio/docs/examples/Radio-basic.example | 20 - .../docs/examples/RadioGroup-basic.example | 42 - src/radio/docs/index.js | 68 - src/radio/index.js | 4 +- src/radio/src/Radio.js | 44 +- src/radio/src/RadioGroup.js | 12 +- src/radio/stories/index.stories.js | 13 +- src/scales/index.js | 2 + src/scales/src/majorScale.js | 16 + src/scales/src/minorScale.js | 16 + .../docs/examples/SearchInput-basic.example | 7 - src/search-input/docs/index.js | 56 - src/search-input/index.js | 2 +- src/search-input/src/SearchInput.js | 39 +- src/search-input/stories/index.stories.js | 2 +- .../examples/SegmentedControl-basic.example | 19 - .../examples/SegmentedControl-small.example | 16 - src/segmented-control/docs/index.js | 113 - src/segmented-control/index.js | 3 +- src/segmented-control/src/SegmentedControl.js | 46 +- .../src/SegmentedControlRadio.js | 49 +- .../src/styles/SegmentedControlAppearances.js | 64 - .../stories/index.stories.js | 19 +- .../docs/examples/SelectMenu-basic.example | 12 - .../docs/examples/SelectMenu-multi.example | 49 - src/select-menu/docs/index.js | 128 - src/select-menu/index.js | 10 +- src/select-menu/src/Option.js | 37 +- src/select-menu/src/OptionsList.js | 48 +- src/select-menu/src/SelectMenu.js | 24 +- src/select-menu/src/SelectMenuContent.js | 21 +- src/select-menu/{docs => stories}/Manager.js | 1 + src/select-menu/stories/index.stories.js | 7 +- .../{docs => stories}/starwars-options.js | 0 src/select/index.js | 4 +- src/select/src/Select.js | 138 +- src/select/src/SelectField.js | 125 + src/select/src/styles/SelectAppearances.js | 67 - src/select/stories/index.stories.js | 8 +- src/shared-styles/index.js | 11 - .../src/styles/CheckboxAppearances.js | 108 - .../src/styles/FillAppearances.js | 25 - .../src/styles/InputAppearances.js | 54 - .../src/styles/controlBaseStyle.js | 20 - .../src/styles/selectableRowStyle.js | 25 - .../src/styles/selectableTabStyle.js | 25 - .../utils/getBorderRadiusForControlHeight.js | 7 - .../src/utils/getBorderRadiusForTextSize.js | 8 - .../src/utils/getIconSizeForControlHeight.js | 12 - .../src/utils/getTextSizeForControlHeight.js | 12 - .../src/utils/getTextStyleForControlHeight.js | 7 - .../docs/examples/SideSheet-basic.example | 15 - .../examples/SideSheet-full-featured.example | 56 - .../examples/SideSheet-title-subtitle.example | 39 - .../docs/examples/SideSheet-title.example | 36 - src/side-sheet/docs/index.js | 150 - src/side-sheet/index.js | 2 +- src/side-sheet/src/SheetClose.js | 162 +- src/side-sheet/src/SideSheet.js | 183 +- src/side-sheet/stories/index.stories.js | 97 +- src/spinner/index.js | 2 +- src/spinner/src/Spinner.js | 29 +- src/spinner/stories/index.stories.js | 4 +- src/ssr/index.js | 4 +- src/ssr/src/autoHydrate.js | 4 +- src/ssr/test/snapshots/extractStyles.js.md | 62 +- src/ssr/test/snapshots/extractStyles.js.snap | Bin 2866 -> 2846 bytes src/stack/index.js | 2 + src/stack/src/Stack.js | 40 + src/stack/src/StackingContext.js | 8 + src/switch/index.js | 2 +- src/switch/src/Switch.js | 94 +- src/switch/src/styles/SwitchAppearances.js | 106 - src/switch/stories/index.stories.js | 2 +- .../examples/SearchTableHeaderCell.example | 4 - src/table/docs/examples/Table.example | 22 - src/table/docs/examples/TableBody.example | 11 - src/table/docs/examples/TableCell.example | 4 - src/table/docs/examples/TableHead.example | 9 - .../docs/examples/TableHeaderCell.example | 3 - src/table/docs/examples/TableRow.example | 11 - src/table/docs/examples/TextTableCell.example | 5 - .../docs/examples/TextTableHeaderCell.example | 4 - src/table/docs/index.js | 290 - src/table/index.js | 18 +- src/table/src/EditableCell.js | 182 + src/table/src/EditableCellField.js | 180 + src/table/src/ScrollbarSize.js | 25 +- src/table/src/SearchTableHeaderCell.js | 13 +- src/table/src/SelectMenuCell.js | 199 + src/table/src/SortableIcon.js | 45 - src/table/src/Table.js | 39 +- src/table/src/TableBody.js | 2 +- src/table/src/TableCell.js | 129 +- src/table/src/TableHead.js | 24 +- src/table/src/TableRow.js | 118 +- src/table/src/TableRowContext.js | 11 + src/table/src/TableVirtualBody.js | 326 + src/table/src/TextTableCell.js | 12 +- src/table/src/TextTableHeaderCell.js | 23 +- .../src/manageTableCellFocusInteraction.js | 39 + .../src/manageTableRowFocusInteraction.js | 20 + src/table/stories/AdvancedTable.js | 262 + src/table/stories/EditableTable.js | 188 + src/table/stories/VirtualTable.js | 67 + src/table/stories/index.stories.js | 207 +- src/tabs/index.js | 8 +- src/tabs/src/SidebarTab.js | 15 +- src/tabs/src/Tab.js | 57 +- src/tabs/stories/index.stories.js | 8 +- src/text-input/docs/Manager.js | 18 - .../docs/examples/TextInput-basic.example | 57 - .../examples/TextInputField-basic.example | 33 - src/text-input/docs/index.js | 108 - src/text-input/index.js | 5 +- src/text-input/src/TextInput.js | 42 +- src/text-input/src/TextInputField.js | 27 +- src/text-input/stories/index.stories.js | 36 +- src/textarea/index.js | 2 +- src/textarea/src/Textarea.js | 116 +- src/textarea/stories/index.stories.js | 62 +- src/theme/index.js | 3 + src/theme/src/ThemeContext.js | 12 + .../component-specific/avatarColors.js | 5 + .../component-specific/badgeColors.js | 5 + .../component-specific/getAlertProps.js | 40 + .../getAvatarInitialsFontSize.js | 13 + .../component-specific/getAvatarProps.js | 21 + .../component-specific/getBadgeProps.js | 1 + .../component-specific/getButtonClassName.js | 103 + .../getCheckboxClassName.js | 87 + .../component-specific/getCodeProps.js | 27 + .../component-specific/getLinkClassName.js | 87 + .../getMenuItemClassName.js | 1 + .../component-specific/getRadioClassName.js | 1 + .../component-specific/getRowClassName.js | 130 + .../getSegmentedControlRadioClassName.js | 27 + .../component-specific/getSelectClassName.js | 36 + .../component-specific/getSwitchClassName.js | 55 + .../component-specific/getTabClassName.js | 34 + .../getTableCellClassName.js | 29 + .../getTextDropdownButtonClassName.js | 29 + .../getTextInputClassName.js | 75 + .../getTextareaClassName.js | 98 + .../component-specific/getTooltipProps.js | 22 + .../default-theme/component-specific/index.js | 37 + .../overlayBackgroundColor.js | 5 + .../component-specific/spinnerColor.js | 5 + .../foundational-styles/colors.js | 91 + .../foundational-styles/elevations.js | 16 + .../foundational-styles/fills.js | 81 + .../foundational-styles/index.js | 5 + .../foundational-styles/palette.js | 59 + .../foundational-styles/scales.js | 51 + src/theme/src/default-theme/helpers.js | 117 + src/theme/src/default-theme/index.js | 144 + src/theme/src/default-theme/shared.js | 44 + .../src/default-theme/theme-helpers/index.js | 192 + .../default-theme/typography/fontFamilies.js} | 11 + .../src/default-theme/typography/headings.js | 98 + .../src/default-theme/typography/index.js | 4 + .../src/default-theme/typography/paragraph.js | 23 + .../src/default-theme/typography/text.js | 55 + .../default-theme/utils/memoizeClassName.js | 43 + .../src/default-theme/utils/themedProperty.js | 17 + src/theme/src/withTheme.js | 25 + src/themer/index.js | 1 + src/themer/src/Themer.js | 28 + src/themer/src/createAppearance.js | 51 + src/themer/src/createButtonAppearance.js | 58 + src/themer/src/createCheckboxAppearance.js | 94 + src/themer/src/createInputAppearance.js | 47 + src/themer/src/createLinkAppearance.js | 32 + src/themer/src/createRowAppearance.js | 42 + .../createSegmentedControlRadioAppearance.js | 57 + src/themer/src/createSelectAppearance.js | 56 + src/themer/src/createSwitchAppearance.js | 80 + src/themer/src/createTabAppearance.js | 44 + src/themer/src/createTableCellAppearance.js | 28 + .../src/createTextDropdownButtonAppearance.js | 50 + src/themer/src/hasOwnProperty.js | 1 + src/themer/src/isDev.js | 1 + src/themer/src/missingStateWarning.js | 13 + .../docs/examples/custom-duration.example | 19 - .../examples/title-and-description.example | 44 - src/toaster/docs/examples/title-only.example | 43 - src/toaster/docs/index.js | 123 - src/toaster/index.js | 2 +- src/toaster/src/Toast.js | 17 +- src/toaster/src/ToastManager.js | 5 +- src/toaster/src/Toaster.js | 26 +- src/toaster/stories/index.stories.js | 28 +- .../docs/examples/Tooltip-basic.example | 3 - src/tooltip/docs/index.js | 94 - src/tooltip/index.js | 2 +- src/tooltip/src/Tooltip.js | 90 +- src/tooltip/src/TooltipStateless.js | 44 +- src/tooltip/stories/index.stories.js | 91 +- .../docs/examples/Code-basic.example | 9 - .../docs/examples/Heading-basic.example | 11 - .../docs/examples/Label-basic.example | 11 - .../docs/examples/Link-basic.example | 5 - .../docs/examples/ListItem-basic.example | 1 - .../docs/examples/OrderedList-basic.example | 6 - .../docs/examples/Paragraph-basic.example | 11 - .../docs/examples/Pre-basic.example | 3 - .../docs/examples/Small-basic.example | 9 - .../docs/examples/Strong-basic.example | 11 - .../docs/examples/SubHeading-basic.example | 11 - .../docs/examples/Text-basic.example | 11 - .../docs/examples/UnorderedList-basic.example | 6 - src/typography/docs/index.js | 365 - src/typography/index.js | 23 +- src/typography/src/Code.js | 46 +- src/typography/src/Heading.js | 65 +- src/typography/src/Label.js | 2 +- src/typography/src/Link.js | 32 +- src/typography/src/ListItem.js | 62 +- src/typography/src/OrderedList.js | 32 +- src/typography/src/Paragraph.js | 64 +- src/typography/src/Small.js | 20 +- src/typography/src/SubHeading.js | 31 - src/typography/src/Text.js | 77 +- src/typography/src/UnorderedList.js | 47 +- src/typography/src/styles/LinkAppearances.js | 51 - src/typography/src/styles/TextColors.js | 11 - src/typography/src/styles/TextStyles.js | 54 - .../src/styles/TextUppercaseStyles.js | 16 - src/typography/stories/index.stories.js | 154 +- tools/create-docs-template.js | 66 - tools/create-package-components.js | 2 +- tools/delete-old-tags.js | 4 +- tools/docs-index-template.js | 105 - tools/task.js | 20 +- yarn.lock | 6947 ++++++++++--- 579 files changed, 33688 insertions(+), 17568 deletions(-) delete mode 100644 .storybook/webpack.config.es6.js create mode 100644 .vscode/settings.json delete mode 100644 ROADMAP.md create mode 100644 docs/.eslintrc create mode 100644 docs/gatsby-browser.js create mode 100644 docs/gatsby-ssr.js create mode 100644 docs/postcss.config.js create mode 100644 docs/segmentWriteKey.js create mode 100644 docs/src/IA.js create mode 100644 docs/src/absolutePath.js delete mode 100644 docs/src/componentRoutes.js delete mode 100644 docs/src/components/ApppearanceOption.js create mode 100644 docs/src/components/ColorExamples.js create mode 100644 docs/src/components/ColorGroup.js delete mode 100644 docs/src/components/ComponentBlock.js delete mode 100644 docs/src/components/ComponentReadme.js delete mode 100644 docs/src/components/ComponentsSidebar.js create mode 100644 docs/src/components/ConsentManager.js create mode 100644 docs/src/components/DocsMDXProvider.js create mode 100644 docs/src/components/Features.js create mode 100644 docs/src/components/GitHubIcon.js create mode 100644 docs/src/components/HomeHero.js create mode 100644 docs/src/components/HomeMedia.js create mode 100644 docs/src/components/IconSearch.js create mode 100644 docs/src/components/Layout.js create mode 100644 docs/src/components/LogoIcon.js create mode 100644 docs/src/components/LogoWordmark.js create mode 100644 docs/src/components/MDXPlayground.js create mode 100644 docs/src/components/Overview.js create mode 100644 docs/src/components/OverviewItem.js create mode 100644 docs/src/components/Page.js create mode 100644 docs/src/components/PageFooter.js create mode 100644 docs/src/components/PropsTable.js create mode 100644 docs/src/components/SegmentLogoWordmark.js create mode 100644 docs/src/components/SpectrumIcon.js create mode 100644 docs/src/components/Swatch.js create mode 100644 docs/src/components/TextStylePreview.js create mode 100644 docs/src/components/examples/AdvancedTable.js create mode 100644 docs/src/components/examples/VirtualTable.js create mode 100644 docs/src/components/examples/profiles.json delete mode 100644 docs/src/components/prop-types-table/index.js delete mode 100644 docs/src/css/appearance-option.css delete mode 100644 docs/src/css/component-readme.css create mode 100644 docs/src/css/features.css create mode 100644 docs/src/css/home-hero.css create mode 100644 docs/src/css/home-media.css delete mode 100644 docs/src/css/home.css create mode 100644 docs/src/css/mdx-page.css create mode 100644 docs/src/css/overview.css create mode 100644 docs/src/css/page-footer.css create mode 100644 docs/src/favicon.png create mode 100644 docs/src/images/design-systems-com.png create mode 100644 docs/src/images/driving-adoption-of-a-design-system.png delete mode 100644 docs/src/images/evergreen-logo-icon.svg delete mode 100644 docs/src/images/evergreen-logo-wordmark.svg create mode 100644 docs/src/images/evergreen-spot-illustration.png create mode 100644 docs/src/images/growing-a-design-system.png create mode 100644 docs/src/images/illustrations/Alert.png create mode 100644 docs/src/images/illustrations/Autocomplete.png create mode 100644 docs/src/images/illustrations/Avatar.png create mode 100644 docs/src/images/illustrations/Badge & Pill.png create mode 100644 docs/src/images/illustrations/Button.png create mode 100644 docs/src/images/illustrations/Checkbox.png create mode 100644 docs/src/images/illustrations/Colors.png create mode 100644 docs/src/images/illustrations/Combobox.png create mode 100644 docs/src/images/illustrations/Corner Dialog.png create mode 100644 docs/src/images/illustrations/Dialog.png create mode 100644 docs/src/images/illustrations/Filepicker.png create mode 100644 docs/src/images/illustrations/Form Field.png create mode 100644 docs/src/images/illustrations/Icons.png create mode 100644 docs/src/images/illustrations/Layout Primitive.png create mode 100644 docs/src/images/illustrations/Menu.png create mode 100644 docs/src/images/illustrations/Popover.png create mode 100644 docs/src/images/illustrations/Portal.png create mode 100644 docs/src/images/illustrations/Positioner.png create mode 100644 docs/src/images/illustrations/Radio.png create mode 100644 docs/src/images/illustrations/Search Input.png create mode 100644 docs/src/images/illustrations/Segmented Control.png create mode 100644 docs/src/images/illustrations/Select Menu.png create mode 100644 docs/src/images/illustrations/Select.png create mode 100644 docs/src/images/illustrations/Side Sheet.png create mode 100644 docs/src/images/illustrations/Spinner.png create mode 100644 docs/src/images/illustrations/Switch.png create mode 100644 docs/src/images/illustrations/Tab.png create mode 100644 docs/src/images/illustrations/Table.png create mode 100644 docs/src/images/illustrations/Text Input.png create mode 100644 docs/src/images/illustrations/Textarea.png create mode 100644 docs/src/images/illustrations/Toaster.png create mode 100644 docs/src/images/illustrations/Tooltip.png create mode 100644 docs/src/images/illustrations/Typography.png delete mode 100644 docs/src/layouts/index.js create mode 100644 docs/src/pages/components/alert.mdx create mode 100644 docs/src/pages/components/autocomplete.mdx create mode 100644 docs/src/pages/components/avatar.mdx create mode 100644 docs/src/pages/components/badge-and-pill.mdx create mode 100644 docs/src/pages/components/button.mdx create mode 100644 docs/src/pages/components/checkbox.mdx create mode 100644 docs/src/pages/components/colors.mdx create mode 100644 docs/src/pages/components/combobox.mdx create mode 100644 docs/src/pages/components/corner-dialog.mdx create mode 100644 docs/src/pages/components/dialog.mdx create mode 100644 docs/src/pages/components/filepicker.mdx create mode 100644 docs/src/pages/components/form-field.mdx create mode 100644 docs/src/pages/components/icons.mdx create mode 100644 docs/src/pages/components/index.js create mode 100644 docs/src/pages/components/layout-primitives.mdx create mode 100644 docs/src/pages/components/menu.mdx create mode 100644 docs/src/pages/components/popover.mdx create mode 100644 docs/src/pages/components/portal.mdx create mode 100644 docs/src/pages/components/positioner.mdx create mode 100644 docs/src/pages/components/radio.mdx create mode 100644 docs/src/pages/components/search-input.mdx create mode 100644 docs/src/pages/components/segmented-control.mdx create mode 100644 docs/src/pages/components/select-menu.mdx create mode 100644 docs/src/pages/components/select.mdx create mode 100644 docs/src/pages/components/side-sheet.mdx create mode 100644 docs/src/pages/components/spinner.mdx create mode 100644 docs/src/pages/components/switch.mdx create mode 100644 docs/src/pages/components/tab.mdx create mode 100644 docs/src/pages/components/table.mdx create mode 100644 docs/src/pages/components/text-input.mdx create mode 100644 docs/src/pages/components/textarea.mdx create mode 100644 docs/src/pages/components/toaster.mdx create mode 100644 docs/src/pages/components/tooltip.mdx create mode 100644 docs/src/pages/components/typography.mdx delete mode 100644 docs/src/templates/component.js delete mode 100644 docs/src/utils/getComponent.js delete mode 100644 docs/src/utils/kebabCase.js create mode 100644 docs/static/CNAME create mode 100644 docs/static/circle.yml create mode 100644 docs/static/og-image.png create mode 100644 docs/static/twitter-og.png delete mode 100644 src/alert/docs/examples/alert-card-with-children.example delete mode 100644 src/alert/docs/examples/alert-card.example delete mode 100644 src/alert/docs/examples/alert-default-with-children.example delete mode 100644 src/alert/docs/examples/alert-default.example delete mode 100644 src/alert/docs/examples/inline-alert.example delete mode 100644 src/alert/docs/index.js delete mode 100644 src/autocomplete/docs/examples/allOptions.example delete mode 100644 src/autocomplete/docs/examples/default-basic.example delete mode 100644 src/autocomplete/docs/examples/default-with-children-prop.example delete mode 100644 src/autocomplete/docs/examples/filterDisabled-basic.example delete mode 100644 src/autocomplete/docs/examples/onFocus-basic.example delete mode 100644 src/autocomplete/docs/examples/withButton-basic.example delete mode 100644 src/autocomplete/docs/examples/withTitle-basic.example delete mode 100644 src/autocomplete/docs/index.js delete mode 100644 src/buttons/docs/LoadingManager.js delete mode 100644 src/buttons/docs/examples/arrow.example delete mode 100644 src/buttons/docs/examples/back-button.example delete mode 100644 src/buttons/docs/examples/basic-with-icons.example delete mode 100644 src/buttons/docs/examples/basic.example delete mode 100644 src/buttons/docs/examples/icon-button-basic.example delete mode 100644 src/buttons/docs/examples/loading.example delete mode 100644 src/buttons/docs/examples/triangle.example delete mode 100644 src/buttons/docs/index.js create mode 100644 src/buttons/src/TextDropdownButton.js delete mode 100644 src/buttons/src/styles/ButtonAppearances.js delete mode 100644 src/colors/docs/index.js delete mode 100644 src/colors/index.js delete mode 100644 src/colors/src/colors.css create mode 100644 src/colors/stories/ColorExamples.js create mode 100644 src/colors/stories/ColorGroup.js create mode 100644 src/colors/stories/ColorMapping.js create mode 100644 src/colors/stories/Swatch.js rename src/colors/{src/colors.js => stories/v3-colors.js} (100%) delete mode 100644 src/combobox/docs/examples/Combobox-basic.example delete mode 100644 src/combobox/docs/examples/Combobox-custom-items.example delete mode 100644 src/combobox/docs/examples/Combobox-open-on-focus.example delete mode 100644 src/combobox/docs/index.js create mode 100644 src/constants/index.js create mode 100644 src/constants/src/Intent.js create mode 100644 src/constants/src/Position.js create mode 100644 src/constants/src/StackingOrder.js delete mode 100644 src/corner-dialog/docs/examples/CornerDialog-basic.example delete mode 100644 src/corner-dialog/docs/index.js delete mode 100644 src/dialog/docs/examples/hide-header.example delete mode 100644 src/dialog/docs/examples/internal-scrolling.example delete mode 100644 src/dialog/docs/examples/primary-button-confirmation.example delete mode 100644 src/dialog/docs/examples/primary-button-only.example delete mode 100644 src/dialog/docs/examples/primary-button-red.example delete mode 100644 src/dialog/docs/examples/primary-button.example delete mode 100644 src/dialog/docs/examples/self-managed-close.example delete mode 100644 src/dialog/docs/examples/without-buttons.example delete mode 100644 src/dialog/docs/index.js rename src/dialog/{docs => stories}/DialogManager.js (100%) create mode 100644 src/form-field/src/FormFieldHint.js create mode 100644 src/icon/index.js create mode 100644 src/icon/src/Icon.js create mode 100644 src/icon/stories/index.stories.js delete mode 100644 src/icons/docs/examples/AddIcon-basic.example delete mode 100644 src/icons/docs/examples/ArrowIcon-basic.example delete mode 100644 src/icons/docs/examples/CheckCircleIcon-basic.example delete mode 100644 src/icons/docs/examples/CloseIcon-basic.example delete mode 100644 src/icons/docs/examples/CogIcon-basic.example delete mode 100644 src/icons/docs/examples/DangerIcon-basic.example delete mode 100644 src/icons/docs/examples/Icon-basic.example delete mode 100644 src/icons/docs/examples/QuestionIcon-basic.example delete mode 100644 src/icons/docs/examples/SearchIcon-basic.example delete mode 100644 src/icons/docs/examples/TriangleIcon-basic.example delete mode 100644 src/icons/docs/examples/WarningIcon-basic.example delete mode 100644 src/icons/docs/index.js delete mode 100644 src/icons/index.js delete mode 100644 src/icons/src/AddIcon.js delete mode 100644 src/icons/src/ArrowIcon.js delete mode 100644 src/icons/src/CheckCircleIcon.js delete mode 100644 src/icons/src/CloseIcon.js delete mode 100644 src/icons/src/CogIcon.js delete mode 100644 src/icons/src/DangerIcon.js delete mode 100644 src/icons/src/Icon.js delete mode 100644 src/icons/src/QuestionIcon.js delete mode 100644 src/icons/src/SearchIcon.js delete mode 100644 src/icons/src/TriangleIcon.js delete mode 100644 src/icons/src/WarningIcon.js delete mode 100644 src/icons/src/styles/IconAim.js delete mode 100644 src/icons/src/styles/IconColors.js delete mode 100644 src/icons/stories/index.stories.js delete mode 100644 src/layers/docs/examples/Card-basic.example delete mode 100644 src/layers/docs/examples/Card-elevation-styles.example delete mode 100644 src/layers/docs/examples/Pane-appearances.example delete mode 100644 src/layers/docs/examples/Pane-basic.example delete mode 100644 src/layers/docs/examples/Pane-borders.example delete mode 100644 src/layers/docs/examples/Pane-elevation-styles.example delete mode 100644 src/layers/docs/index.js delete mode 100644 src/layers/src/styles/border-colors.js delete mode 100644 src/layers/src/styles/elevation-styles.js delete mode 100644 src/layers/src/styles/layer-appearances.js create mode 100644 src/menu/index.js create mode 100644 src/menu/src/Menu.js create mode 100644 src/menu/src/MenuDivider.js create mode 100644 src/menu/src/MenuGroup.js create mode 100644 src/menu/src/MenuItem.js create mode 100644 src/menu/src/MenuOption.js create mode 100644 src/menu/src/MenuOptionsGroup.js create mode 100644 src/menu/stories/index.stories.js delete mode 100644 src/popover/docs/examples/Popover-basic.example delete mode 100644 src/popover/docs/examples/Popover-close-inside.example delete mode 100644 src/popover/docs/examples/Popover-positions.example delete mode 100644 src/popover/docs/index.js delete mode 100644 src/positioner/src/Position.js create mode 100644 src/positioner/test/index.js create mode 100644 src/positioner/test/snapshots/index.js.md create mode 100644 src/positioner/test/snapshots/index.js.snap delete mode 100644 src/radio/docs/examples/Radio-basic.example delete mode 100644 src/radio/docs/examples/RadioGroup-basic.example delete mode 100644 src/radio/docs/index.js create mode 100644 src/scales/index.js create mode 100644 src/scales/src/majorScale.js create mode 100644 src/scales/src/minorScale.js delete mode 100644 src/search-input/docs/examples/SearchInput-basic.example delete mode 100644 src/search-input/docs/index.js delete mode 100644 src/segmented-control/docs/examples/SegmentedControl-basic.example delete mode 100644 src/segmented-control/docs/examples/SegmentedControl-small.example delete mode 100644 src/segmented-control/docs/index.js delete mode 100644 src/segmented-control/src/styles/SegmentedControlAppearances.js delete mode 100644 src/select-menu/docs/examples/SelectMenu-basic.example delete mode 100644 src/select-menu/docs/examples/SelectMenu-multi.example delete mode 100644 src/select-menu/docs/index.js rename src/select-menu/{docs => stories}/Manager.js (99%) rename src/select-menu/{docs => stories}/starwars-options.js (100%) create mode 100644 src/select/src/SelectField.js delete mode 100644 src/select/src/styles/SelectAppearances.js delete mode 100644 src/shared-styles/index.js delete mode 100644 src/shared-styles/src/styles/CheckboxAppearances.js delete mode 100644 src/shared-styles/src/styles/FillAppearances.js delete mode 100644 src/shared-styles/src/styles/InputAppearances.js delete mode 100644 src/shared-styles/src/styles/controlBaseStyle.js delete mode 100644 src/shared-styles/src/styles/selectableRowStyle.js delete mode 100644 src/shared-styles/src/styles/selectableTabStyle.js delete mode 100644 src/shared-styles/src/utils/getBorderRadiusForControlHeight.js delete mode 100644 src/shared-styles/src/utils/getBorderRadiusForTextSize.js delete mode 100644 src/shared-styles/src/utils/getIconSizeForControlHeight.js delete mode 100644 src/shared-styles/src/utils/getTextSizeForControlHeight.js delete mode 100644 src/shared-styles/src/utils/getTextStyleForControlHeight.js delete mode 100644 src/side-sheet/docs/examples/SideSheet-basic.example delete mode 100644 src/side-sheet/docs/examples/SideSheet-full-featured.example delete mode 100644 src/side-sheet/docs/examples/SideSheet-title-subtitle.example delete mode 100644 src/side-sheet/docs/examples/SideSheet-title.example delete mode 100644 src/side-sheet/docs/index.js create mode 100644 src/stack/index.js create mode 100644 src/stack/src/Stack.js create mode 100644 src/stack/src/StackingContext.js delete mode 100644 src/switch/src/styles/SwitchAppearances.js delete mode 100644 src/table/docs/examples/SearchTableHeaderCell.example delete mode 100644 src/table/docs/examples/Table.example delete mode 100644 src/table/docs/examples/TableBody.example delete mode 100644 src/table/docs/examples/TableCell.example delete mode 100644 src/table/docs/examples/TableHead.example delete mode 100644 src/table/docs/examples/TableHeaderCell.example delete mode 100644 src/table/docs/examples/TableRow.example delete mode 100644 src/table/docs/examples/TextTableCell.example delete mode 100644 src/table/docs/examples/TextTableHeaderCell.example delete mode 100644 src/table/docs/index.js create mode 100644 src/table/src/EditableCell.js create mode 100644 src/table/src/EditableCellField.js create mode 100644 src/table/src/SelectMenuCell.js delete mode 100644 src/table/src/SortableIcon.js create mode 100644 src/table/src/TableRowContext.js create mode 100644 src/table/src/TableVirtualBody.js create mode 100644 src/table/src/manageTableCellFocusInteraction.js create mode 100644 src/table/src/manageTableRowFocusInteraction.js create mode 100644 src/table/stories/AdvancedTable.js create mode 100644 src/table/stories/EditableTable.js create mode 100644 src/table/stories/VirtualTable.js delete mode 100644 src/text-input/docs/Manager.js delete mode 100644 src/text-input/docs/examples/TextInput-basic.example delete mode 100644 src/text-input/docs/examples/TextInputField-basic.example delete mode 100644 src/text-input/docs/index.js create mode 100644 src/theme/index.js create mode 100644 src/theme/src/ThemeContext.js create mode 100644 src/theme/src/default-theme/component-specific/avatarColors.js create mode 100644 src/theme/src/default-theme/component-specific/badgeColors.js create mode 100644 src/theme/src/default-theme/component-specific/getAlertProps.js create mode 100644 src/theme/src/default-theme/component-specific/getAvatarInitialsFontSize.js create mode 100644 src/theme/src/default-theme/component-specific/getAvatarProps.js create mode 100644 src/theme/src/default-theme/component-specific/getBadgeProps.js create mode 100644 src/theme/src/default-theme/component-specific/getButtonClassName.js create mode 100644 src/theme/src/default-theme/component-specific/getCheckboxClassName.js create mode 100644 src/theme/src/default-theme/component-specific/getCodeProps.js create mode 100644 src/theme/src/default-theme/component-specific/getLinkClassName.js create mode 100644 src/theme/src/default-theme/component-specific/getMenuItemClassName.js create mode 100644 src/theme/src/default-theme/component-specific/getRadioClassName.js create mode 100644 src/theme/src/default-theme/component-specific/getRowClassName.js create mode 100644 src/theme/src/default-theme/component-specific/getSegmentedControlRadioClassName.js create mode 100644 src/theme/src/default-theme/component-specific/getSelectClassName.js create mode 100644 src/theme/src/default-theme/component-specific/getSwitchClassName.js create mode 100644 src/theme/src/default-theme/component-specific/getTabClassName.js create mode 100644 src/theme/src/default-theme/component-specific/getTableCellClassName.js create mode 100644 src/theme/src/default-theme/component-specific/getTextDropdownButtonClassName.js create mode 100644 src/theme/src/default-theme/component-specific/getTextInputClassName.js create mode 100644 src/theme/src/default-theme/component-specific/getTextareaClassName.js create mode 100644 src/theme/src/default-theme/component-specific/getTooltipProps.js create mode 100644 src/theme/src/default-theme/component-specific/index.js create mode 100644 src/theme/src/default-theme/component-specific/overlayBackgroundColor.js create mode 100644 src/theme/src/default-theme/component-specific/spinnerColor.js create mode 100644 src/theme/src/default-theme/foundational-styles/colors.js create mode 100644 src/theme/src/default-theme/foundational-styles/elevations.js create mode 100644 src/theme/src/default-theme/foundational-styles/fills.js create mode 100644 src/theme/src/default-theme/foundational-styles/index.js create mode 100644 src/theme/src/default-theme/foundational-styles/palette.js create mode 100644 src/theme/src/default-theme/foundational-styles/scales.js create mode 100644 src/theme/src/default-theme/helpers.js create mode 100644 src/theme/src/default-theme/index.js create mode 100644 src/theme/src/default-theme/shared.js create mode 100644 src/theme/src/default-theme/theme-helpers/index.js rename src/{typography/src/styles/FontFamilies.js => theme/src/default-theme/typography/fontFamilies.js} (63%) create mode 100644 src/theme/src/default-theme/typography/headings.js create mode 100644 src/theme/src/default-theme/typography/index.js create mode 100644 src/theme/src/default-theme/typography/paragraph.js create mode 100644 src/theme/src/default-theme/typography/text.js create mode 100644 src/theme/src/default-theme/utils/memoizeClassName.js create mode 100644 src/theme/src/default-theme/utils/themedProperty.js create mode 100644 src/theme/src/withTheme.js create mode 100644 src/themer/index.js create mode 100644 src/themer/src/Themer.js create mode 100644 src/themer/src/createAppearance.js create mode 100644 src/themer/src/createButtonAppearance.js create mode 100644 src/themer/src/createCheckboxAppearance.js create mode 100644 src/themer/src/createInputAppearance.js create mode 100644 src/themer/src/createLinkAppearance.js create mode 100644 src/themer/src/createRowAppearance.js create mode 100644 src/themer/src/createSegmentedControlRadioAppearance.js create mode 100644 src/themer/src/createSelectAppearance.js create mode 100644 src/themer/src/createSwitchAppearance.js create mode 100644 src/themer/src/createTabAppearance.js create mode 100644 src/themer/src/createTableCellAppearance.js create mode 100644 src/themer/src/createTextDropdownButtonAppearance.js create mode 100644 src/themer/src/hasOwnProperty.js create mode 100644 src/themer/src/isDev.js create mode 100644 src/themer/src/missingStateWarning.js delete mode 100644 src/toaster/docs/examples/custom-duration.example delete mode 100644 src/toaster/docs/examples/title-and-description.example delete mode 100644 src/toaster/docs/examples/title-only.example delete mode 100644 src/toaster/docs/index.js delete mode 100644 src/tooltip/docs/examples/Tooltip-basic.example delete mode 100644 src/tooltip/docs/index.js delete mode 100644 src/typography/docs/examples/Code-basic.example delete mode 100644 src/typography/docs/examples/Heading-basic.example delete mode 100644 src/typography/docs/examples/Label-basic.example delete mode 100644 src/typography/docs/examples/Link-basic.example delete mode 100644 src/typography/docs/examples/ListItem-basic.example delete mode 100644 src/typography/docs/examples/OrderedList-basic.example delete mode 100644 src/typography/docs/examples/Paragraph-basic.example delete mode 100644 src/typography/docs/examples/Pre-basic.example delete mode 100644 src/typography/docs/examples/Small-basic.example delete mode 100644 src/typography/docs/examples/Strong-basic.example delete mode 100644 src/typography/docs/examples/SubHeading-basic.example delete mode 100644 src/typography/docs/examples/Text-basic.example delete mode 100644 src/typography/docs/examples/UnorderedList-basic.example delete mode 100644 src/typography/docs/index.js delete mode 100644 src/typography/src/SubHeading.js delete mode 100644 src/typography/src/styles/LinkAppearances.js delete mode 100644 src/typography/src/styles/TextColors.js delete mode 100644 src/typography/src/styles/TextStyles.js delete mode 100644 src/typography/src/styles/TextUppercaseStyles.js delete mode 100755 tools/create-docs-template.js delete mode 100644 tools/docs-index-template.js diff --git a/.babelrc b/.babelrc index 2d1ac9fd5..1bf8ca0e4 100644 --- a/.babelrc +++ b/.babelrc @@ -1,22 +1,14 @@ { + "presets": ["@babel/preset-env", "@babel/preset-react"], + "plugins": [ + "@babel/plugin-transform-runtime", + "@babel/plugin-proposal-class-properties", + "babel-plugin-add-react-displayname" + ], "env": { - // Workaround Babel 6's weird config inheritance by not having any root - // config (`{"modules":false}` gets overridden). This can be improved with - // Babel 7's `.babelrc.js` support. - "development": { - "presets": ["env", "react", "stage-0"] - }, - "test": { - "presets": ["env", "react", "stage-0"] - }, - "production": { - "presets": ["env", "react", "stage-0"] - }, - "commonjs": { - "presets": ["env", "react", "stage-0"] - }, "esm": { - "presets": [["env", { "modules": false }], "react", "stage-0"] + "presets": [["@babel/preset-env", { "modules": false }]], + "plugins": [["@babel/plugin-transform-runtime", { "useESModules": true }]] } } } diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md index 4b9d30be9..9a64d9d1e 100644 --- a/.github/CODE_OF_CONDUCT.md +++ b/.github/CODE_OF_CONDUCT.md @@ -8,12 +8,12 @@ In the interest of fostering an open and welcoming environment, we as contributo Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members -* Examples of unacceptable behavior by participants include: +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members +- Examples of unacceptable behavior by participants include: The use of sexualized language or imagery and unwelcome sexual attention or advances Trolling, insulting/derogatory comments, and personal or political attacks diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 4fed5a009..50c1df280 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -25,17 +25,17 @@ Include this in your issue if possible. We hope to formalize the 🌲 Evergreen design language more as we go. As a general rule of thumb try to follow these constraints: -* Use `color` and the `typography` components. -* 8px soft grid, (4px under 40px is also good). -* Don't force line heights on grid if it looks poorly. +- Use `color` and the `typography` components. +- 8px soft grid, (4px under 40px is also good). +- Don't force line heights on grid if it looks poorly. ### Component API -* Write down how you would like to use this component. -* Write down the component API and prop types. -* Try to use `ui-box` for your components. -* Try to make all heights possible. -* Base the text style (font size) on the height. +- Write down how you would like to use this component. +- Write down the component API and prop types. +- Try to use `ui-box` for your components. +- Try to make all heights possible. +- Base the text style (font size) on the height. Include this in your issue if possible. diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index eb591a525..269838d88 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -13,24 +13,24 @@ _Bug fixes and documentation fixes are welcome._ Please consider the following items when filing a bug report: -* Issue and steps to reproduce. -* Versions. -* Screenshots. -* Expected. -* Actual. -* Link to your project. -* Browser name and version. -* Operating system. +- Issue and steps to reproduce. +- Versions. +- Screenshots. +- Expected. +- Actual. +- Link to your project. +- Browser name and version. +- Operating system. ## In the case of a feature/component request ✍️ Please consider the following items when filing a feature request: -* **Usage**, component API if applicable. -* **Design Example**, screenshot of what the design should look like. -* Problem that feature/component addresses. -* Examples in other projects of feature/component. -* Screenshots if design changes. +- **Usage**, component API if applicable. +- **Design Example**, screenshot of what the design should look like. +- Problem that feature/component addresses. +- Examples in other projects of feature/component. +- Screenshots if design changes. See the contributing guide for more details. @@ -38,8 +38,8 @@ See the contributing guide for more details. Please respect our Code of Conduct, in short: -* Using welcoming and inclusive language. -* Being respectful of differing viewpoints and experiences. -* Gracefully accepting constructive criticism. -* Focusing on what is best for the community. -* Showing empathy towards other community members. +- Using welcoming and inclusive language. +- Being respectful of differing viewpoints and experiences. +- Gracefully accepting constructive criticism. +- Focusing on what is best for the community. +- Showing empathy towards other community members. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 63a3efed8..77eb311f2 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -11,8 +11,8 @@ thank you for your time, and close the issue. Please respect our Code of Conduct, in short: -* Using welcoming and inclusive language. -* Being respectful of differing viewpoints and experiences. -* Gracefully accepting constructive criticism. -* Focusing on what is best for the community. -* Showing empathy towards other community members. +- Using welcoming and inclusive language. +- Being respectful of differing viewpoints and experiences. +- Gracefully accepting constructive criticism. +- Focusing on what is best for the community. +- Showing empathy towards other community members. diff --git a/.storybook/webpack.config.es6.js b/.storybook/webpack.config.es6.js deleted file mode 100644 index 527db8d85..000000000 --- a/.storybook/webpack.config.es6.js +++ /dev/null @@ -1,33 +0,0 @@ -const path = require('path') -const webpack = require('webpack') - -module.exports = storybookBaseConfig => { - // Return the altered config - return { - ...storybookBaseConfig, - plugins: [ - ...storybookBaseConfig.plugins, - new webpack.LoaderOptionsPlugin({ - debug: true - }) - ], - module: { - ...storybookBaseConfig.module, - rules: [ - ...storybookBaseConfig.module.rules, - { - test: /\.(png\?.*|jpg\?.*|jpg|png)$/, - loader: 'url-loader' - }, - { - test: /\.(blob)/, - loader: 'file-loader' - }, - { - test: /\.(json)/, - loader: 'json-loader' - } - ] - } - } -} diff --git a/.storybook/webpack.config.js b/.storybook/webpack.config.js index 6a3e6391a..527db8d85 100644 --- a/.storybook/webpack.config.js +++ b/.storybook/webpack.config.js @@ -1,5 +1,33 @@ -// Storybook config does not work with ES6 just yet. -// This is a workaround. -// https://github.com/storybooks/storybook/issues/155 -require('babel-register') -module.exports = require('./webpack.config.es6.js') +const path = require('path') +const webpack = require('webpack') + +module.exports = storybookBaseConfig => { + // Return the altered config + return { + ...storybookBaseConfig, + plugins: [ + ...storybookBaseConfig.plugins, + new webpack.LoaderOptionsPlugin({ + debug: true + }) + ], + module: { + ...storybookBaseConfig.module, + rules: [ + ...storybookBaseConfig.module.rules, + { + test: /\.(png\?.*|jpg\?.*|jpg|png)$/, + loader: 'url-loader' + }, + { + test: /\.(blob)/, + loader: 'file-loader' + }, + { + test: /\.(json)/, + loader: 'json-loader' + } + ] + } + } +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..42f0c9a9d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "eslint.enable": false, + "xo.enable": true +} diff --git a/README.md b/README.md index c3b9c1add..7a12d25fa 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@
- Evergreen, A Design System for the Web. Evergreen is a React UI Framework for building ambitious products on the web. Brought to you by Segment. + + Evergreen, A Design System for the Web. Evergreen is a React UI Framework for building ambitious products on the web. Brought to you by Segment.

@@ -9,36 +10,22 @@
+- **Works out of the box.** Evergreen contains a set of polished React components that work out of the box. -* **Evergreen v4 coming soon** - * Prerelease: `yarn add evergreen-ui@next` - * [View PR](https://github.com/segmentio/evergreen/pull/200) - * [View v4 Documentation (WIP)](http://evergreen-v4.surge.sh/components/) -* React 16 -* [Documentation (WIP)](http://evergreen.surge.sh/) -* [View Live Storybook](https://segmentio.github.io/evergreen/) -* Presentational React components -* Powerful component API with [ui-box](https://github.com/segmentio/ui-box) -* Dedicated UI Development Environment with [React storybook](https://storybook.js.org/) -* Easy adoption because of CSS-in-JS -* Easy Server Side Rendering (SSR) and automatic hydration -* Interested in Evergreen? [Come work for Segment!](https://segment.com/jobs/) -* Brought to you by [Segment](https://segment.com/) +- **Flexible & composable.** Evergreen components are build on top of a React UI Primitive for endless composability. +- **Enterprise-grade.** Evergreen features a UI design language for enterprise-grade web applications. -## Spend the day with us at [Synapse](https://synapse.segment.com/?sgmt_ref=evergreen) -All Evergreen developers get in free. Register with `SEGMENTDIGSDEVS`. +## Documentation & Community -## Core values of 🌲 Evergreen - -**Evergreen is built on the belief that you can never predict all future requirements, -only prepare for it.** Instead of creating fixed configurations that work today, Evergreen promotes building systems that anticipate new and changing design requirements. +- [Documentation](https://evergreen.segment.com/) +- [Spectrum Chat](https://spectrum.chat/evergreen) -**Evergreen is built on the belief that things should work out of the box with smart defaults, but also offer full control when needed.** For example, Evergreen uses CSS-in-JS and builds on top of the Box component in [ui-box](https://github.com/segmentio/ui-box). +## Evergreen v3 to v4 Migration guide -**Evergreen is built on the belief that using Evergreen and contributing to Evergreen should be a pleasant experience.** We prioritize documentation and all the tools for a solid developer experience. We advocate respect and inclusivity in our writings and interactions. +Evergreen v3 to v4 [migration guide](https://github.com/segmentio/evergreen/pull/200) -## Install and use components 🔓 +## Install and use components 🌲 Evergreen is made up of multiple components and tools which you can import one by one. All you need to do is install the `evergreen-ui` package: @@ -61,35 +48,40 @@ ReactDOM.render( ) ``` -## FAQ +## Core values of 🌲 Evergreen -### Does Evergreen support theming? +- **Evergreen is build on the belief that you can never predict all future requirements, + only prepare for it.** Instead of creating fixed configurations that work today, Evergreen promotes building systems that anticipate new and changing design requirements. -Evergreen currently does not support theming. +- **Evergreen is build on the belief that things should work out of the box with smart defaults, but also offer full control when needed.** For example, Evergreen uses CSS-in-JS and builds on top of the Box component in [ui-box](https://github.com/segmentio/ui-box). -### Is theming support on the roadmap? +- **Evergreen is build on the belief that using Evergreen and contributing to Evergreen should be a pleasant experience.** We prioritize documentation and all the tools for a solid developer experience. We advocate respect and inclusivity in our writings and interactions. -This project is originally build to support the development of product at Segment. This is also the reason theming is not our short term priority. It is on our longer term priority list and hopefully will be supported later in 2018. Expect a clearer roadmap available before that. +## FAQ + +### Theming support? -[Learn more about the theming roadmap](https://github.com/segmentio/evergreen/issues/179) +Evergreen v4 supports theming partially. It is still complex to theme Evergreen. We have done exploratory work to make theming more powerful and accessible. The progress is available in the `v4-create-theme` branch. -### How does Server Side Rendering work? +### How does Server Side Rendering (SSR) work? + +Evergreen offers easy Server Side Rendering (SSR) and automatic hydration. Evergreen bundles 2 CSS-in-JS solutions, from glamor and ui-box. To make it super easy to do server side rendering and hydration, Evergreen exposes a `extractStyles()` function that will do SSR for both at once. -* How to use it with Next.js in the [ssr-next example app](examples/ssr-next). -* [How to use it with GatsbyJS](https://github.com/segmentio/evergreen/issues/154) +- How to use it with Next.js in the [ssr-next example app](examples/ssr-next). +- [How to use it with GatsbyJS](https://github.com/segmentio/evergreen/issues/154) ## Contributing to Evergreen -### Step 1. Configuring your editor ⚙ +### ⚙ Step 1. Configuring your editor If you are using Atom, make sure to install the [`prettier-atom`](https://atom.io/packages/prettier-atom), [`linter`](https://github.com/AtomLinter/linter) and [`linter-xo`](https://github.com/sindresorhus/atom-linter-xo) packages. All the configuration for prettier and xo is in the `package.json`. You shouldn't have to configure things separately, please file a issue if there's a problem. -### Step 2. Get storybook up and running 📖 +### 📖 Step 2. Get storybook up and running To actually start seeing the components you have to run React Storybook: @@ -97,40 +89,24 @@ To actually start seeing the components you have to run React Storybook: $ yarn dev ``` -### Step 3. Learn more in the Contributing guide 🎓 - -Please take a look at the [contributing guide](.github/CONTRIBUTING.md) and [roadmap](ROADMAP.md) to better understand what to work on. - -## Scripts explained 🤓 +## 🤓 Scripts explained Inside the `package.json` there are a bunch of scripts that this repo uses to run the project in development and to build the project. Below you can read a description of each script. -### `yarn dev` - -Starts the development React Storybook. - -### `yarn test` - -Lints the JavaScript files using XO and then runs the unit tests using AVA. - -### `yarn build` - -Builds all of the JavaScript files using Babel. +- `yarn dev`: Starts the development React Storybook. -### `yarn clean` +- `yarn test`: Lints the JavaScript files using XO and then runs the unit tests using AVA. -Removes all untracked files (`git clean -Xdf`). +- `yarn build`: Builds all of the JavaScript files using Babel. -### `yarn release` +- `yarn clean`: removes all untracked files (`git clean -Xdf`). -Releases new version of Evergreen (requires `np` to be installed globally). +- `yarn release`: Releases new version of Evergreen (requires `np` to be installed globally). -### `yarn create-package` - -This command scaffolds a package with no specific boilerplate. It's useful for creating utilities. +- `yarn create-package`: This command scaffolds a package with no specific boilerplate. It's useful for creating utilities. For the following command: @@ -146,9 +122,8 @@ The following file tree will be generated: └── index.js ``` -### `yarn create-package:components` +- `yarn create-package:components`: This command scaffolds a package with React component(s) boilerplate. -This command scaffolds a package with React component(s) boilerplate. You can pass one or more components to this command. For the following command: @@ -169,55 +144,33 @@ The following file tree will be generated: └── index.js ``` -## yarn run create-docs-template - -For the following command: - -``` -$ yarn run create-docs-template layers Pane Card -``` - -The following file tree will be generated: - -``` -/src/layers/docs -├── index.js -└── /examples/ - ├── Pane-basic.example - └── Card-basic.example -``` - -### Manual steps for docs - -This `yarn run create-docs-template` script is far from perfect and still requires manual steps. This includes: - -* Making sure to use the right examples and write some docs. -* Configure `docs/utils/getComponent.js` -* Configure `docs/components/ComponentsSidebar.js` - -## Contributors 🎉 +## 🎉 Contributors -We will add you to the list if you make any contribution! +We will add you to the list if you make any meaningful contribution! -* Jeroen Ransijn -* Roland Warmerdam +- Jeroen Ransijn +- Roland Warmerdam +- Ben McMahon +- Matt Shwery +- ... many other on the Segment team and open-source contributors This project is maintained by [Segment](https://segment.com/) Please take a look at the [contributing guide](.github/CONTRIBUTING.md) and [roadmap](ROADMAP.md) to better understand what to work on. -## Respect earns Respect 👏 +## 👏 Respect earns Respect Please respect our [Code of Conduct](.github/CODE_OF_CONDUCT.md), in short: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members ## License Evergreen is released under the MIT license. +The BlueprintJS icons are licensed under a [custom Apache 2.0 license](https://github.com/palantir/blueprint/blob/develop/LICENSE). Copyright © 2017 Segment.io, Inc. diff --git a/ROADMAP.md b/ROADMAP.md deleted file mode 100644 index 291e6a75c..000000000 --- a/ROADMAP.md +++ /dev/null @@ -1,55 +0,0 @@ -# 🌲Evergreen Roadmap 🛣️ - -We'll try as much as possible to plan ahead. -Since some of the conversation happens internally, this document -might go stale from time-to-time. - -## Is theming support on the roadmap? - -This project is originally build to support the development of product at Segment. This is also the reason theming is not our short term priority. It is on our longer term priority list and hopefully will be supported later in 2018. Expect a clearer roadmap available before that. - -## How does that roadmap look like? - -We have been thinking about theming and doing research on theming for a while now. There are still higher priority items for us to tackle inside of Evergreen and internally at Segment before we can making theming a priority. - -### Milestones - -Roughly I see this is as the milestones to achieve theming within Evergreen: - -* Work through dependencies for theming layer -* Centralize all theming information (privately) -* Expose a theming provider to consumers. (public) - -### Work through dependencies for theming layer - -Before we can start working on theming itself, we have to improve some of the systems inside Evergreen — primarily the color system and some type systems. The following items come to mind: - -* Color System overhaul -* Typography tweaks -* 100% documentation for public components and API stability - -### Centralize all theming information (privately) - -On the short term we are tackling the color system and that should be one of the first steps to enabling a theming layer. Once we got those dependencies figured out we can start working towards centralizing all theme related information that is currently scattered around components. This would give us a centralized place that determines the theme of Evergreen and serve as a basis to start exposing this through a `ThemeProvider` of some sorts. - -### Expose a theming provider to consumers. (public) - -After we have created an internal API for theming the next step is to expose this through a `ThemeProvider` interface. Material UI and Mineral UI are good examples of how something like that might look. - -## Dedicated documentation website - -The third part is to create documentation website, similar to how AtlasKit approaches this. This will require a bigger set of components and resources to be available. - -We already made some good progress towards this goal. - -## Design documentation (long term goal) - -The last part is to create design documentation. That will be primarily for designers, and is more focused around what is the right way to use a component or patter, instead of showing you how to implement it. - -### The process for building something should try and follow: - -* Add item to Roadmap -* Create a issue outline -* Create a PR, reference issue in PR -* Merge into master -* Move item from ROADMAP into CHANGELOG, and write any notes diff --git a/docs/.eslintrc b/docs/.eslintrc new file mode 100644 index 000000000..10b427e85 --- /dev/null +++ b/docs/.eslintrc @@ -0,0 +1,6 @@ +{ + "parser": "babel-eslint", + "rules": { + "react/forbid-foreign-prop-types": ["off"] + } +} diff --git a/docs/gatsby-browser.js b/docs/gatsby-browser.js new file mode 100644 index 000000000..dd63748f7 --- /dev/null +++ b/docs/gatsby-browser.js @@ -0,0 +1,13 @@ +const { NODE_ENV = 'development' } = process.env + +// eslint-disable-next-line import/prefer-default-export +export const onRouteUpdate = () => { + if (!window.analytics || typeof window.analytics.page !== 'function') { + if (NODE_ENV === 'development') { + console.warn('Unable to locate analytics.js') + } + return + } + + window.analytics.page() +} diff --git a/docs/gatsby-config.js b/docs/gatsby-config.js index db0c6d493..9e215af60 100644 --- a/docs/gatsby-config.js +++ b/docs/gatsby-config.js @@ -1,6 +1,29 @@ +const Path = require('path') + module.exports = { + plugins: [ + `gatsby-plugin-favicon`, + { + resolve: `gatsby-mdx`, + options: { + defaultLayouts: { + default: require.resolve('./src/components/Page.js') + } + } + }, + { + resolve: `gatsby-source-filesystem`, + options: { + path: Path.resolve(__dirname, `../src/`), + name: 'evergreen' + } + }, + 'gatsby-transformer-react-docgen', + 'gatsby-plugin-react-helmet', + 'gatsby-plugin-postcss' + ], siteMetadata: { - title: `Evergreen documentation` - }, - plugins: ['gatsby-plugin-react-next'] + title: 'Evergreen documentation', + description: 'Evergreen Design System by Segment' + } } diff --git a/docs/gatsby-node.js b/docs/gatsby-node.js index c750be4da..d3cbc194f 100644 --- a/docs/gatsby-node.js +++ b/docs/gatsby-node.js @@ -1,37 +1,31 @@ const path = require('path') const webpack = require('webpack') // eslint-disable-line import/no-extraneous-dependencies -const componentRoutes = require('./src/componentRoutes') -const componentTemplate = path.resolve(`src/templates/component.js`) - -// Implement the Gatsby API “createPages”. This is called once the -// data layer is bootstrapped to let plugins create pages from data. -exports.createPages = ({ boundActionCreators }) => { - const { createPage } = boundActionCreators - - componentRoutes.forEach(({ name, path }) => { - createPage({ - path, - component: componentTemplate, - // If you have a layout component at src/layouts/blog-layout.js - // layout: `blog-layout`, - // In your blog post template's graphql query, you can use path - // as a GraphQL variable to query for data from the markdown file. - context: { - path, - name +exports.onCreateWebpackConfig = ({ actions }) => { + actions.setWebpackConfig({ + module: { + rules: [ + { + test: /\.example/, + use: [ + { + loader: 'raw-loader' + } + ] + } + ] + }, + plugins: [ + // See https://github.com/FormidableLabs/react-live/issues/5 + new webpack.IgnorePlugin(/^(xor|props)$/) + ], + resolve: { + // Force Gatsby to look for dependencies within the local node_modules from docs. + modules: [path.join(__dirname, 'node_modules')], + alias: { + 'evergreen-ui': path.resolve(__dirname, '../src/index.js'), + components: path.resolve(__dirname, './src/components') } - }) + } }) } - -exports.modifyWebpackConfig = ({ config }) => { - config.loader('raw-loader', { - test: /\.example$/ - }) - - // See https://github.com/FormidableLabs/react-live/issues/5 - config.plugin('ignore', () => new webpack.IgnorePlugin(/^(xor|props)$/)) - - return config -} diff --git a/docs/gatsby-ssr.js b/docs/gatsby-ssr.js new file mode 100644 index 000000000..1c85a8d0f --- /dev/null +++ b/docs/gatsby-ssr.js @@ -0,0 +1,54 @@ +/* eslint-disable react/no-danger */ +const React = require('react') +const { min: createSnippet } = require('@segment/snippet') +const { extractStyles } = require('../esm') +const segmentWriteKey = require('./segmentWriteKey') + +const getSnippet = ({ writeKey }) => { + // In development, stub out all analytics.js methods + // this prevents "dirtying" your real analytics with local testing/traffic + const { NODE_ENV = 'development' } = process.env + if (NODE_ENV === 'development') { + return ` + (function () { + // analytics.js stub + const analytics = window.analytics = {} + const methods = [ + 'trackSubmit', 'trackClick', 'trackLink', 'trackForm', 'pageview', + 'identify', 'reset', 'group', 'track', 'ready', 'alias', 'debug', + 'page', 'once', 'off', 'on', 'load' + ] + methods.forEach(method => + analytics[method] = (...args) => console.log(\`analytics.\${method}\`, ...args) + ) + })() + ` + } + + return createSnippet({ + apiKey: writeKey, + page: false, + load: false + }) +} + +exports.onRenderBody = ({ setHeadComponents }) => { + // Get the css and hydration script from Evergreen. + const { css, hydrationScript } = extractStyles() + + const snippet = getSnippet({ writeKey: segmentWriteKey }) + + // Takes an array of components as its first argument which are added to + // the headComponents array which is passed to the html.js component. + setHeadComponents([ + // We need a key here for Gatsby to stop complaining. + + +
+ {hydrationScript} diff --git a/examples/ssr-next/yarn.lock b/examples/ssr-next/yarn.lock index cf9ccc3b5..e8013ae68 100644 --- a/examples/ssr-next/yarn.lock +++ b/examples/ssr-next/yarn.lock @@ -2,113 +2,972 @@ # yarn lockfile v1 -"@zeit/check-updates@1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@zeit/check-updates/-/check-updates-1.1.0.tgz#d0f65026a36f27cd1fd54c647d8294447c1d2d8b" +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== dependencies: - chalk "2.3.0" - ms "2.1.1" - update-notifier "2.3.0" + "@babel/highlight" "^7.0.0" + +"@babel/core@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0.tgz#0cb0c0fd2e78a0a2bec97698f549ae9ce0b99515" + integrity sha512-nrvxS5u6QUN5gLl1GEakIcmOeoUHT1/gQtdMRq18WFURJ5osn4ppJLVSseMQo4zVWKJfBTF4muIYijXUnKlRLQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.0.0" + "@babel/helpers" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + convert-source-map "^1.1.0" + debug "^3.1.0" + json5 "^0.5.0" + lodash "^4.17.10" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.0.0", "@babel/generator@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.1.3.tgz#2103ec9c42d9bdad9190a6ad5ff2d456fd7b8673" + integrity sha512-ZoCZGcfIJFJuZBqxcY9OjC1KW2lWK64qrX1o4UYL3yshVhwKFYgzpWZ0vvtGMNJdTlvkw0W+HR1VnYN8q3QPFQ== + dependencies: + "@babel/types" "^7.1.3" + jsesc "^2.5.1" + lodash "^4.17.10" + source-map "^0.5.0" + trim-right "^1.0.1" -"@zeit/source-map-support@0.6.2": - version "0.6.2" - resolved "https://registry.yarnpkg.com/@zeit/source-map-support/-/source-map-support-0.6.2.tgz#0efd478f24a606726948165e53a8efe89e24036f" +"@babel/helper-annotate-as-pure@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" + integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== dependencies: - source-map "^0.6.0" + "@babel/types" "^7.0.0" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" + integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-builder-react-jsx@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz#fa154cb53eb918cf2a9a7ce928e29eb649c5acdb" + integrity sha512-ebJ2JM6NAKW0fQEqN8hOLxK84RbRz9OkUhGS/Xd5u56ejMfVbayJ4+LykERZCOUM6faa6Fp3SZNX3fcT16MKHw== + dependencies: + "@babel/types" "^7.0.0" + esutils "^2.0.0" + +"@babel/helper-call-delegate@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz#6a957f105f37755e8645343d3038a22e1449cc4a" + integrity sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ== + dependencies: + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-define-map@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c" + integrity sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/types" "^7.0.0" + lodash "^4.17.10" + +"@babel/helper-explode-assignable-expression@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" + integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== + dependencies: + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-function-name@^7.0.0", "@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-hoist-variables@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88" + integrity sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-member-expression-to-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" + integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-imports@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" + integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-transforms@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.1.0.tgz#470d4f9676d9fad50b324cdcce5fbabbc3da5787" + integrity sha512-0JZRd2yhawo79Rcm4w0LwSMILFmFXjugG3yqf+P/UsKsRS1mJCmMwwlHDlMg7Avr9LrvSpp4ZSULO9r8jpCzcw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + lodash "^4.17.10" + +"@babel/helper-optimise-call-expression@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" + integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/helper-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27" + integrity sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg== + dependencies: + lodash "^4.17.10" + +"@babel/helper-remap-async-to-generator@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" + integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-wrap-function" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-replace-supers@^7.0.0", "@babel/helper-replace-supers@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.1.0.tgz#5fc31de522ec0ef0899dc9b3e7cf6a5dd655f362" + integrity sha512-BvcDWYZRWVuDeXTYZWxekQNO5D4kO55aArwZOTFXw6rlLQA8ZaDicJR1sO47h+HrnCiDFiww0fSPV0d713KBGQ== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-simple-access@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" + integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== + dependencies: + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" + integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-wrap-function@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.1.0.tgz#8cf54e9190706067f016af8f75cb3df829cc8c66" + integrity sha512-R6HU3dete+rwsdAfrOzTlE9Mcpk4RjU3aX3gi9grtmugQY0u79X7eogUvfXA5sI81Mfq1cn6AgxihfN33STjJA== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helpers@^7.0.0": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.1.2.tgz#ab752e8c35ef7d39987df4e8586c63b8846234b5" + integrity sha512-Myc3pUE8eswD73aWcartxB16K6CGmHDv9KxOmD2CeOs/FaEAQodr3VYGmlvOmog60vNQ2w8QbatuahepZwrHiA== + dependencies: + "@babel/template" "^7.1.2" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.1.2" + +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.0.0", "@babel/parser@^7.1.2", "@babel/parser@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.3.tgz#2c92469bac2b7fbff810b67fca07bd138b48af77" + integrity sha512-gqmspPZOMW3MIRb9HlrnbZHXI1/KHTOroBwN1NcLL6pWxzqzEKGvRTq0W/PxS45OtQGbaFikSQpkS5zbnsQm2w== + +"@babel/plugin-proposal-async-generator-functions@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.1.0.tgz#41c1a702e10081456e23a7b74d891922dd1bb6ce" + integrity sha512-Fq803F3Jcxo20MXUSDdmZZXrPe6BWyGcWBPPNB/M7WaUYESKDeKMOGIxEzQOjGSmW/NWb6UaPZrtTB2ekhB/ew== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/plugin-syntax-async-generators" "^7.0.0" + +"@babel/plugin-proposal-class-properties@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0.tgz#a16b5c076ba6c3d87df64d2480a380e979543731" + integrity sha512-mVgsbdySh6kuzv4omXvw0Kuh+3hrUrQ883qTCf75MqfC6zctx2LXrP3Wt+bbJmB5fE5nfhf/Et2pQyrRy4j0Pg== + dependencies: + "@babel/helper-function-name" "^7.0.0" + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.0.0" + "@babel/plugin-syntax-class-properties" "^7.0.0" + +"@babel/plugin-proposal-json-strings@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz#3b4d7b5cf51e1f2e70f52351d28d44fc2970d01e" + integrity sha512-kfVdUkIAGJIVmHmtS/40i/fg/AGnw/rsZBCaapY5yjeO5RA9m165Xbw9KMOu2nqXP5dTFjEjHdfNdoVcHv133Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-json-strings" "^7.0.0" + +"@babel/plugin-proposal-object-rest-spread@7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz#9a17b547f64d0676b6c9cecd4edf74a82ab85e7e" + integrity sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz#b610d928fe551ff7117d42c8bb410eec312a6425" + integrity sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz#498b39cd72536cd7c4b26177d030226eba08cd33" + integrity sha512-tM3icA6GhC3ch2SkmSxv7J/hCWKISzwycub6eGsDrFDgukD4dZ/I+x81XgW0YslS6mzNuQ1Cbzh5osjIMgepPQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.2.0" + +"@babel/plugin-syntax-async-generators@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz#bf0891dcdbf59558359d0c626fdc9490e20bc13c" + integrity sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-class-properties@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0.tgz#e051af5d300cbfbcec4a7476e37a803489881634" + integrity sha512-cR12g0Qzn4sgkjrbrzWy2GE7m9vMl/sFkqZ3gIpAQdrvPDnLM8180i+ANDFIXfjHo9aqp0ccJlQ0QNZcFUbf9w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-dynamic-import@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0.tgz#6dfb7d8b6c3be14ce952962f658f3b7eb54c33ee" + integrity sha512-Gt9xNyRrCHCiyX/ZxDGOcBnlJl0I3IWicpZRC4CdC0P5a/I07Ya2OAMEBU+J7GmRFVmIetqEYRko6QYRuKOESw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-json-strings@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz#0d259a68090e15b383ce3710e01d5b23f3770cbd" + integrity sha512-UlSfNydC+XLj4bw7ijpldc1uZ/HB84vw+U6BTuqMdIEmz/LDe63w/GHtpQMdXWdqQZFeAI9PjnHe/vDhwirhKA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-jsx@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0.tgz#034d5e2b4e14ccaea2e4c137af7e4afb39375ffd" + integrity sha512-PdmL2AoPsCLWxhIr3kG2+F9v4WH06Q3z+NoGVpQgnUNGcagXHq5sB3OXxkSahKq9TLdNMN/AJzFYSOo8UKDMHg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz#37d8fbcaf216bd658ea1aebbeb8b75e88ebc549b" + integrity sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz#886f72008b3a8b185977f7cb70713b45e51ee475" + integrity sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-arrow-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz#a6c14875848c68a3b4b3163a486535ef25c7e749" + integrity sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-async-to-generator@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.1.0.tgz#109e036496c51dd65857e16acab3bafdf3c57811" + integrity sha512-rNmcmoQ78IrvNCIt/R9U+cixUHeYAzgusTFgIAv+wQb9HJU4szhpDD6e5GCACmj/JP5KxuCwM96bX3L9v4ZN/g== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + +"@babel/plugin-transform-block-scoped-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz#482b3f75103927e37288b3b67b65f848e2aa0d07" + integrity sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-block-scoping@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz#1745075edffd7cdaf69fab2fb6f9694424b7e9bc" + integrity sha512-GWEMCrmHQcYWISilUrk9GDqH4enf3UmhOEbNbNrlNAX1ssH3MsS1xLOS6rdjRVPgA7XXVPn87tRkdTEoA/dxEg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.10" + +"@babel/plugin-transform-classes@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.1.0.tgz#ab3f8a564361800cbc8ab1ca6f21108038432249" + integrity sha512-rNaqoD+4OCBZjM7VaskladgqnZ1LO6o2UxuWSDzljzW21pN1KXkB7BstAVweZdxQkHAujps5QMNOTWesBciKFg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.1.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz#2fbb8900cd3e8258f2a2ede909b90e7556185e31" + integrity sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.0.0": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.1.3.tgz#e69ff50ca01fac6cb72863c544e516c2b193012f" + integrity sha512-Mb9M4DGIOspH1ExHOUnn2UUXFOyVTiX84fXCd+6B5iWrQg/QMeeRmSwpZ9lnjYLSXtZwiw80ytVMr3zue0ucYw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-dotall-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz#73a24da69bc3c370251f43a3d048198546115e58" + integrity sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.1.3" + +"@babel/plugin-transform-duplicate-keys@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz#a0601e580991e7cace080e4cf919cfd58da74e86" + integrity sha512-w2vfPkMqRkdxx+C71ATLJG30PpwtTpW7DDdLqYt2acXU7YjztzeWW2Jk1T6hKqCLYCcEA5UQM/+xTAm+QCSnuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-exponentiation-operator@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.1.0.tgz#9c34c2ee7fd77e02779cfa37e403a2e1003ccc73" + integrity sha512-uZt9kD1Pp/JubkukOGQml9tqAeI8NkE98oZnHZ2qHRElmeKCodbTZgOEUtujSCSLhHSBWbzNiFSDIMC4/RBTLQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-for-of@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz#f2ba4eadb83bd17dc3c7e9b30f4707365e1c3e39" + integrity sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-function-name@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.1.0.tgz#29c5550d5c46208e7f730516d41eeddd4affadbb" + integrity sha512-VxOa1TMlFMtqPW2IDYZQaHsFrq/dDoIjgN098NowhexhZcz3UGlvPgZXuE1jEvNygyWyxRacqDpCZt+par1FNg== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-literals@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz#2aec1d29cdd24c407359c930cdd89e914ee8ff86" + integrity sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-amd@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.1.0.tgz#f9e0a7072c12e296079b5a59f408ff5b97bf86a8" + integrity sha512-wt8P+xQ85rrnGNr2x1iV3DW32W8zrB6ctuBkYBbf5/ZzJY99Ob4MFgsZDFgczNU76iy9PWsy4EuxOliDjdKw6A== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-commonjs@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.1.0.tgz#0a9d86451cbbfb29bd15186306897c67f6f9a05c" + integrity sha512-wtNwtMjn1XGwM0AXPspQgvmE6msSJP15CX2RVfpTSTNPLhKhaOjaIfBaVfj4iUZ/VrFSodcFedwtPg/NxwQlPA== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + +"@babel/plugin-transform-modules-systemjs@^7.0.0": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.1.3.tgz#2119a3e3db612fd74a19d88652efbfe9613a5db0" + integrity sha512-PvTxgjxQAq4pvVUZF3mD5gEtVDuId8NtWkJsZLEJZMZAW3TvgQl1pmydLLN1bM8huHFVVU43lf0uvjQj9FRkKw== + dependencies: + "@babel/helper-hoist-variables" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-umd@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.1.0.tgz#a29a7d85d6f28c3561c33964442257cc6a21f2a8" + integrity sha512-enrRtn5TfRhMmbRwm7F8qOj0qEYByqUvTttPEGimcBH4CJHphjyK1Vg7sdU7JjeEmgSpM890IT/efS2nMHwYig== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-new-target@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a" + integrity sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-object-super@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.1.0.tgz#b1ae194a054b826d8d4ba7ca91486d4ada0f91bb" + integrity sha512-/O02Je1CRTSk2SSJaq0xjwQ8hG4zhZGNjE8psTsSNPXyLRCODv7/PBozqT5AmQMzp7MI3ndvMhGdqp9c96tTEw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + +"@babel/plugin-transform-parameters@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.1.0.tgz#44f492f9d618c9124026e62301c296bf606a7aed" + integrity sha512-vHV7oxkEJ8IHxTfRr3hNGzV446GAb+0hgbA7o/0Jd76s+YzccdWuTU296FOCOl/xweU4t/Ya4g41yWz80RFCRw== + dependencies: + "@babel/helper-call-delegate" "^7.1.0" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0.tgz#93759e6c023782e52c2da3b75eca60d4f10533ee" + integrity sha512-BX8xKuQTO0HzINxT6j/GiCwoJB0AOMs0HmLbEnAvcte8U8rSkNa/eSCAY+l1OA4JnCVq2jw2p6U8QQryy2fTPg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0.tgz#a84bb70fea302d915ea81d9809e628266bb0bc11" + integrity sha512-pymy+AK12WO4safW1HmBpwagUQRl9cevNX+82AIAtU1pIdugqcH+nuYP03Ja6B+N4gliAaKWAegIBL/ymALPHA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0.tgz#28e00584f9598c0dd279f6280eee213fa0121c3c" + integrity sha512-OSeEpFJEH5dw/TtxTg4nijl4nHBbhqbKL94Xo/Y17WKIf2qJWeIk/QeXACF19lG1vMezkxqruwnTjVizaW7u7w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0.tgz#524379e4eca5363cd10c4446ba163f093da75f3e" + integrity sha512-0TMP21hXsSUjIQJmu/r7RiVxeFrXRcMUigbKu0BLegJK9PkYodHstaszcig7zxXfaBji2LYUdtqIkHs+hgYkJQ== + dependencies: + "@babel/helper-builder-react-jsx" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + +"@babel/plugin-transform-regenerator@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1" + integrity sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw== + dependencies: + regenerator-transform "^0.13.3" + +"@babel/plugin-transform-runtime@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.0.0.tgz#0f1443c07bac16dba8efa939e0c61d6922740062" + integrity sha512-yECRVxRu25Nsf6IY5v5XrXhcW9ZHomUQiq30VO8H7r3JYPcBJDTcxZmT+6v1O3QKKrDp1Wp40LinGbcd+jlp9A== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + resolve "^1.8.1" + +"@babel/plugin-transform-shorthand-properties@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz#85f8af592dcc07647541a0350e8c95c7bf419d15" + integrity sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-spread@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz#93583ce48dd8c85e53f3a46056c856e4af30b49b" + integrity sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-sticky-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz#30a9d64ac2ab46eec087b8530535becd90e73366" + integrity sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + +"@babel/plugin-transform-template-literals@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz#084f1952efe5b153ddae69eb8945f882c7a97c65" + integrity sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typeof-symbol@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz#4dcf1e52e943e5267b7313bff347fdbe0f81cec9" + integrity sha512-1r1X5DO78WnaAIvs5uC48t41LLckxsYklJrZjNKcevyz83sF2l4RHbw29qrCPr/6ksFsdfRpT/ZgxNWHXRnffg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-unicode-regex@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz#c6780e5b1863a76fe792d90eded9fcd5b51d68fc" + integrity sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + regexpu-core "^4.1.3" + +"@babel/preset-env@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.0.0.tgz#f450f200c14e713f98cb14d113bf0c2cfbb89ca9" + integrity sha512-Fnx1wWaWv2w2rl+VHxA9si//Da40941IQ29fKiRejVR7oN1FxSEL8+SyAX/2oKIye2gPvY/GBbJVEKQ/oi43zQ== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-json-strings" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.0.0" + "@babel/plugin-syntax-async-generators" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.0.0" + "@babel/plugin-transform-block-scoped-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-dotall-regex" "^7.0.0" + "@babel/plugin-transform-duplicate-keys" "^7.0.0" + "@babel/plugin-transform-exponentiation-operator" "^7.0.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-amd" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-modules-systemjs" "^7.0.0" + "@babel/plugin-transform-modules-umd" "^7.0.0" + "@babel/plugin-transform-new-target" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-regenerator" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + "@babel/plugin-transform-typeof-symbol" "^7.0.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + browserslist "^4.1.0" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.3.0" + +"@babel/preset-react@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" + integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + +"@babel/runtime-corejs2@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs2/-/runtime-corejs2-7.0.0.tgz#786711ee099c2c2af7875638866c1259eff30a8c" + integrity sha512-Yww0jXgolNtkhcK+Txo5JN+DjBpNmmAtD7G99HOebhEjBzjnACG09Tip9C8lSOF6PrhA56OeJWeOZduNJaKxBA== + dependencies: + core-js "^2.5.7" + regenerator-runtime "^0.12.0" + +"@babel/runtime@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0.tgz#adeb78fedfc855aa05bc041640f3f6f98e85424c" + integrity sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA== + dependencies: + regenerator-runtime "^0.12.0" + +"@babel/template@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0.tgz#c2bc9870405959c89a9c814376a2ecb247838c80" + integrity sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/types" "^7.0.0" + +"@babel/template@^7.0.0", "@babel/template@^7.1.0", "@babel/template@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.2.tgz#090484a574fef5a2d2d7726a674eceda5c5b5644" + integrity sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.1.2" + "@babel/types" "^7.1.2" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0": + version "7.1.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.4.tgz#f4f83b93d649b4b2c91121a9087fa2fa949ec2b4" + integrity sha512-my9mdrAIGdDiSVBuMjpn/oXYpva0/EZwWL3sm3Wcy/AVWO2eXnsoZruOT9jOGNRXU8KbCIu5zsKnXcAJ6PcV6Q== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.1.3" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.1.3" + "@babel/types" "^7.1.3" + debug "^3.1.0" + globals "^11.1.0" + lodash "^4.17.10" + +"@babel/types@^7.0.0", "@babel/types@^7.1.2", "@babel/types@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.3.tgz#3a767004567060c2f40fca49a304712c525ee37d" + integrity sha512-RpPOVfK+yatXyn8n4PB1NW6k9qjinrXrRR8ugBN8fD6hCy5RXI6PSbVqpOJBO9oSaY7Nom4ohj35feb0UR9hSA== + dependencies: + esutils "^2.0.2" + lodash "^4.17.10" + to-fast-properties "^2.0.0" + +"@emotion/hash@^0.6.5": + version "0.6.6" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.6.6.tgz#62266c5f0eac6941fece302abad69f2ee7e25e44" + integrity sha512-ojhgxzUHZ7am3D2jHkMzPpsBAiB005GF5YU4ea+8DNPybMk01JJUM9V9YRlF/GE95tcOm8DxQvWA2jq19bGalQ== + +"@webassemblyjs/ast@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.8.tgz#f31f480debeef957f01b623f27eabc695fa4fe8f" + integrity sha512-dOrtdtEyB8sInpl75yLPNksY4sRl0j/+t6aHyB/YA+ab9hV3Fo7FmG12FHzP+2MvWVAJtDb+6eXR5EZbZJ+uVg== + dependencies: + "@webassemblyjs/helper-module-context" "1.7.8" + "@webassemblyjs/helper-wasm-bytecode" "1.7.8" + "@webassemblyjs/wast-parser" "1.7.8" + +"@webassemblyjs/floating-point-hex-parser@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.8.tgz#1b3ed0e27e384032254e9322fc646dd3e70ef1b9" + integrity sha512-kn2zNKGsbql5i56VAgRYkpG+VazqHhQQZQycT2uXAazrAEDs23gy+Odkh5VblybjnwX2/BITkDtNmSO76hdIvQ== + +"@webassemblyjs/helper-api-error@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.8.tgz#a2b49c11f615e736f815ec927f035dcfa690d572" + integrity sha512-xUwxDXsd1dUKArJEP5wWM5zxgCSwZApSOJyP1XO7M8rNUChUDblcLQ4FpzTpWG2YeylMwMl1MlP5Ztryiz1x4g== + +"@webassemblyjs/helper-buffer@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.8.tgz#3fc66bfa09c1c60e824cf3d5887826fac062877d" + integrity sha512-WXiIMnuvuwlhWvVOm8xEXU9DnHaa3AgAU0ZPfvY8vO1cSsmYb2WbGbHnMLgs43vXnA7XAob9b56zuZaMkxpCBg== + +"@webassemblyjs/helper-code-frame@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.8.tgz#cc5a7e9522b70e7580df056dfd34020cf29645b0" + integrity sha512-TLQxyD9qGOIdX5LPQOPo0Ernd88U5rHkFb8WAjeMIeA0sPjCHeVPaGqUGGIXjUcblUkjuDAc07bruCcNHUrHDA== + dependencies: + "@webassemblyjs/wast-printer" "1.7.8" + +"@webassemblyjs/helper-fsm@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.8.tgz#fe4607430af466912797c21acafd3046080182ea" + integrity sha512-TjK0CnD8hAPkV5mbSp5aWl6SO1+H3WFcjWtixWoy8EMA99YnNzYhpc/WSYWhf7yrhpzkq5tZB0tvLK3Svr3IXA== + +"@webassemblyjs/helper-module-context@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.8.tgz#3c2e7ee93d14ff4768ba66fb1be42fdc9dc7160a" + integrity sha512-uCutAKR7Nm0VsFixcvnB4HhAyHouNbj0Dx1p7eRjFjXGGZ+N7ftTaG1ZbWCasAEbtwGj54LP8+lkBZdTCPmLGg== + +"@webassemblyjs/helper-wasm-bytecode@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.8.tgz#89bdb78cd6dd5209ae2ed2925de78d0f0e00b6f0" + integrity sha512-AdCCE3BMW6V34WYaKUmPgVHa88t2Z14P4/0LjLwuGkI0X6pf7nzp0CehzVVk51cKm2ymVXjl9dCG+gR1yhITIQ== + +"@webassemblyjs/helper-wasm-section@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.8.tgz#c68ef7d26a6fc12421b2e6e56f9bc810dfb33e87" + integrity sha512-BkBhYQuzyl4hgTGOKo87Vdw6f9nj8HhI7WYpI0MCC5qFa5ahrAPOGgyETVdnRbv+Rjukl9MxxfDmVcVC435lDg== + dependencies: + "@webassemblyjs/ast" "1.7.8" + "@webassemblyjs/helper-buffer" "1.7.8" + "@webassemblyjs/helper-wasm-bytecode" "1.7.8" + "@webassemblyjs/wasm-gen" "1.7.8" + +"@webassemblyjs/ieee754@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.8.tgz#1f37974b13cb486a9237e73ce04cac7a2f1265ed" + integrity sha512-tOarWChdG1a3y1yqCX0JMDKzrat5tQe4pV6K/TX19BcXsBLYxFQOL1DEDa5KG9syeyvCrvZ+i1+Mv1ExngvktQ== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.8.tgz#1bee83426819192db2ea1a234b84c7ebc6d34c1f" + integrity sha512-GCYeGPgUFWJiZuP4NICbcyUQNxNLJIf476Ei+K+jVuuebtLpfvwkvYT6iTUE7oZYehhkor4Zz2g7SJ/iZaPudQ== + dependencies: + "@xtuc/long" "4.2.1" + +"@webassemblyjs/utf8@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.8.tgz#2b489d5cf43e0aebb93d8e2d792aff9879c61f05" + integrity sha512-9X+f0VV+xNXW2ujfIRSXBJENGE6Qh7bNVKqu3yDjTFB3ar3nsThsGBBKdTG58aXOm2iUH6v28VIf88ymPXODHA== + +"@webassemblyjs/wasm-edit@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.8.tgz#f8bdbe7088718eca27b1c349bb7c06b8a457950c" + integrity sha512-6D3Hm2gFixrfyx9XjSON4ml1FZTugqpkIz5Awvrou8fnpyprVzcm4X8pyGRtA2Piixjl3DqmX/HB1xdWyE097A== + dependencies: + "@webassemblyjs/ast" "1.7.8" + "@webassemblyjs/helper-buffer" "1.7.8" + "@webassemblyjs/helper-wasm-bytecode" "1.7.8" + "@webassemblyjs/helper-wasm-section" "1.7.8" + "@webassemblyjs/wasm-gen" "1.7.8" + "@webassemblyjs/wasm-opt" "1.7.8" + "@webassemblyjs/wasm-parser" "1.7.8" + "@webassemblyjs/wast-printer" "1.7.8" + +"@webassemblyjs/wasm-gen@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.8.tgz#7e8abf1545eae74ac6781d545c034af3cfd0c7d5" + integrity sha512-a7O/wE6eBeVKKUYgpMK7NOHmMADD85rSXLe3CqrWRDwWff5y3cSVbzpN6Qv3z6C4hdkpq9qyij1Ga1kemOZGvQ== + dependencies: + "@webassemblyjs/ast" "1.7.8" + "@webassemblyjs/helper-wasm-bytecode" "1.7.8" + "@webassemblyjs/ieee754" "1.7.8" + "@webassemblyjs/leb128" "1.7.8" + "@webassemblyjs/utf8" "1.7.8" + +"@webassemblyjs/wasm-opt@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.8.tgz#7ada6e211914728fce02ff0ff9c344edc6d41f26" + integrity sha512-3lbQ0PT81NHCdi1sR/7+SNpZadM4qYcTSr62nFFAA7e5lFwJr14M1Gi+A/Y3PgcDWOHYjsaNGPpPU0H03N6Blg== + dependencies: + "@webassemblyjs/ast" "1.7.8" + "@webassemblyjs/helper-buffer" "1.7.8" + "@webassemblyjs/wasm-gen" "1.7.8" + "@webassemblyjs/wasm-parser" "1.7.8" + +"@webassemblyjs/wasm-parser@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.8.tgz#dac47c291fb6a3e63529aecd647592cd34afbf94" + integrity sha512-rZ/zlhp9DHR/05zh1MbAjT2t624sjrPP/OkJCjXqzm7ynH+nIdNcn9Ixc+qzPMFXhIrk0rBoQ3to6sEIvHh9jQ== + dependencies: + "@webassemblyjs/ast" "1.7.8" + "@webassemblyjs/helper-api-error" "1.7.8" + "@webassemblyjs/helper-wasm-bytecode" "1.7.8" + "@webassemblyjs/ieee754" "1.7.8" + "@webassemblyjs/leb128" "1.7.8" + "@webassemblyjs/utf8" "1.7.8" + +"@webassemblyjs/wast-parser@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.8.tgz#f8aab9a450c048c1f9537695c89faeb92fabfba5" + integrity sha512-Q/zrvtUvzWuSiJMcSp90fi6gp2nraiHXjTV2VgAluVdVapM4gy1MQn7akja2p6eSBDQpKJPJ6P4TxRkghRS5dg== + dependencies: + "@webassemblyjs/ast" "1.7.8" + "@webassemblyjs/floating-point-hex-parser" "1.7.8" + "@webassemblyjs/helper-api-error" "1.7.8" + "@webassemblyjs/helper-code-frame" "1.7.8" + "@webassemblyjs/helper-fsm" "1.7.8" + "@xtuc/long" "4.2.1" + +"@webassemblyjs/wast-printer@1.7.8": + version "1.7.8" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.8.tgz#e7e965782c1912f6a965f14a53ff43d8ad0403a5" + integrity sha512-GllIthRtwTxRDAURRNXscu7Napzmdf1jt1gpiZiK/QN4fH0lSGs3OTmvdfsMNP7tqI4B3ZtfaaWRlNIQug6Xyg== + dependencies: + "@webassemblyjs/ast" "1.7.8" + "@webassemblyjs/wast-parser" "1.7.8" + "@xtuc/long" "4.2.1" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz#5c85d662f76fa1d34575766c5dcd6615abcd30d8" + integrity sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g== abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -acorn-dynamic-import@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" +acorn-dynamic-import@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" + integrity sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg== dependencies: - acorn "^4.0.3" - -acorn@^4.0.3: - version "4.0.13" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + acorn "^5.0.0" acorn@^5.0.0: version "5.5.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.1.tgz#84e05a9ea0acbe131227da50301e62464dc9c1d8" + integrity sha512-D/KGiCpM/VOtTMDS+wfjywEth926WUrArrzYov4N4SI7t+3y8747dPpCmmAvrm/Z3ygqMHnyPxvYYO0yTdn/nQ== -ajv-keywords@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" +acorn@^5.6.2: + version "5.7.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" + integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== + +ajv-errors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz#ecf021fa108fd17dfb5e6b383f2dd233e31ffc59" + integrity sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk= + +ajv-keywords@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" + integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= ajv-keywords@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be" + integrity sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74= ajv@^4.9.1: version "4.11.8" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + integrity sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY= dependencies: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.1.5: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" +ajv@^6.0.1: + version "6.5.4" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.4.tgz#247d5274110db653706b550fcc2b797ca28cfc59" + integrity sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg== dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" + fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" ajv@^6.1.0: version "6.2.1" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.2.1.tgz#28a6abc493a2abe0fb4c8507acaedb43fa550671" + integrity sha1-KKarxJOiq+D7TIUHrK7bQ/pVBnE= dependencies: fast-deep-equal "^1.0.0" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" +ansi-colors@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.1.0.tgz#dcfaacc90ef9187de413ec3ef8d5eb981a98808f" + integrity sha512-hTv1qPdi+sVEk3jYsdjox5nQI0C9HTbjKShbCdYLKb1LOfNbb7wsF4d7OEKIZoxIHx02tSp3m94jcPW2EfMjmA== -ansi-align@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" - dependencies: - string-width "^2.0.0" +ansi-escapes@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" + integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== ansi-html@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= -ansi-styles@^3.1.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" -any-promise@^1.0.0, any-promise@^1.1.0: +any-promise@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: micromatch "^3.1.4" normalize-path "^2.1.1" @@ -116,10 +975,12 @@ anymatch@^2.0.0: aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== are-we-there-yet@~1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + integrity sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0= dependencies: delegates "^1.0.0" readable-stream "^2.0.6" @@ -127,44 +988,69 @@ are-we-there-yet@~1.1.2: arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= array-differ@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE= + +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= + +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= dependencies: array-uniq "^1.0.1" array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= asn1.js@^4.0.0: version "4.10.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== dependencies: bn.js "^4.0.0" inherits "^2.0.1" @@ -173,640 +1059,133 @@ asn1.js@^4.0.0: asn1@~0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + integrity sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y= assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= assert-plus@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ= assert@^1.1.1: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= dependencies: util "0.10.3" assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - -async@^2.1.2: - version "2.6.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" - dependencies: - lodash "^4.14.0" + integrity sha1-GdOGodntxufByF04iu28xW0zYC0= asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= atob@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz#19c7a760473774468f20b2d2d03372ad7d4cbf5d" + integrity sha1-GcenYEc3dEaPILLS0DNyrX1Mv10= + +autodll-webpack-plugin@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/autodll-webpack-plugin/-/autodll-webpack-plugin-0.4.2.tgz#36e98fbaf30c235d1d5d076330464ac80901415c" + integrity sha512-JLrV3ErBNKVkmhi0celM6PJkgYEtztFnXwsNBApjinpVHtIP3g/m2ZZSOvsAe7FoByfJzDhpOXBKFbH3k2UNjw== + dependencies: + bluebird "^3.5.0" + del "^3.0.0" + find-cache-dir "^1.0.0" + lodash "^4.17.4" + make-dir "^1.0.0" + memory-fs "^0.4.1" + read-pkg "^2.0.0" + tapable "^1.0.0" + webpack-merge "^4.1.0" + webpack-sources "^1.0.1" aws-sign2@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8= aws4@^1.2.1: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + integrity sha1-g+9cqGCysy5KDe7e6MdxudtXRx4= -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@6.26.0, babel-core@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.0" - debug "^2.6.8" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.7" - slash "^1.0.0" - source-map "^0.5.6" - -babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-builder-react-jsx@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - esutils "^2.0.2" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" +babel-core@7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-loader@7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.2.tgz#f6cbe122710f1aa2af4d881c6d5b54358ca24126" +babel-loader@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.2.tgz#2079b8ec1628284a929241da3d90f5b3de2a5ae5" + integrity sha512-Law0PGtRV1JL8Y9Wpzc0d6EE0GD7LzXWCfaeWwboUMcBWNG6gvaWTK1/+BK7a4X5EmeJiGEuDDFxUsOa8RSWCw== dependencies: find-cache-dir "^1.0.0" loader-utils "^1.0.2" mkdirp "^0.5.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - dependencies: - babel-runtime "^6.22.0" + util.promisify "^1.0.0" babel-plugin-react-require@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/babel-plugin-react-require/-/babel-plugin-react-require-3.0.0.tgz#2e4e7b4496b93a654a1c80042276de4e4eeb20e3" + integrity sha1-Lk57RJa5OmVKHIAEInbeTk7rIOM= -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - -babel-plugin-syntax-class-properties@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" - -babel-plugin-syntax-dynamic-import@6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - -babel-plugin-syntax-flow@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" - -babel-plugin-syntax-jsx@6.18.0, babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: +babel-plugin-syntax-jsx@6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - -babel-plugin-transform-async-to-generator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-class-properties@6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" - dependencies: - babel-helper-function-name "^6.24.1" - babel-plugin-syntax-class-properties "^6.8.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.23.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-plugin-transform-es2015-classes@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-flow-strip-types@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" - dependencies: - babel-plugin-syntax-flow "^6.18.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-object-rest-spread@6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - -babel-plugin-transform-react-display-name@^6.23.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx-self@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e" - dependencies: - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx-source@6.22.0, babel-plugin-transform-react-jsx-source@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6" - dependencies: - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" - dependencies: - babel-helper-builder-react-jsx "^6.24.1" - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-remove-prop-types@0.4.8: - version "0.4.8" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.8.tgz#0aff04bc1d6564ec49cf23bcffb99c11881958db" - dependencies: - babel-traverse "^6.25.0" +babel-plugin-transform-react-remove-prop-types@0.4.15: + version "0.4.15" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.15.tgz#7ba830e77276a0e788cd58ea527b5f70396e12a7" + integrity sha512-bFxxYdkZBwTjTgtZEPTLqu9g8Ajz8x8uEP/O1iVuaZIz2RuxJ2gtx0EXDJRonC++KGsgsW/4Hqvk4KViEtE2nw== -babel-plugin-transform-regenerator@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - dependencies: - regenerator-transform "^0.10.0" - -babel-plugin-transform-runtime@6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-preset-env@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.0.tgz#2de1c782a780a0a5d605d199c957596da43c44e4" - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.23.0" - babel-plugin-transform-es2015-classes "^6.23.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.23.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.23.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.23.0" - babel-plugin-transform-es2015-modules-systemjs "^6.23.0" - babel-plugin-transform-es2015-modules-umd "^6.23.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.23.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.23.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - browserslist "^2.1.2" - invariant "^2.2.2" - semver "^5.3.0" - -babel-preset-flow@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d" - dependencies: - babel-plugin-transform-flow-strip-types "^6.22.0" - -babel-preset-react@6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" - dependencies: - babel-plugin-syntax-jsx "^6.3.13" - babel-plugin-transform-react-display-name "^6.23.0" - babel-plugin-transform-react-jsx "^6.24.1" - babel-plugin-transform-react-jsx-self "^6.22.0" - babel-plugin-transform-react-jsx-source "^6.22.0" - babel-preset-flow "^6.23.0" - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@6.26.0, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= dependencies: core-js "^2.4.0" regenerator-runtime "^0.11.0" -babel-template@6.26.0, babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.24.1, babel-traverse@^6.25.0, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@6.26.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: +babel-types@6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= dependencies: babel-runtime "^6.26.0" esutils "^2.0.2" lodash "^4.17.4" to-fast-properties "^1.0.3" -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base64-js@^1.0.2: version "1.2.3" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.3.tgz#fb13668233d9614cf5fb4bce95a9ba4096cdf801" + integrity sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w== base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: cache-base "^1.0.1" class-utils "^0.3.5" @@ -819,56 +1198,58 @@ base@^0.11.1: bcrypt-pbkdf@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + integrity sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40= dependencies: tweetnacl "^0.14.3" big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== binary-extensions@^1.0.0: version "1.11.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + integrity sha1-RqoXUftqL5PuXmibsQh9SxTGwgU= block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= dependencies: inherits "~2.0.0" +bluebird@^3.5.0: + version "3.5.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a" + integrity sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg== + bluebird@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== boom@2.x.x: version "2.10.1" resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8= dependencies: hoek "2.x.x" bowser@^1.7.3: version "1.9.2" resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.9.2.tgz#d66fc868ca5f4ba895bee1363c343fe7b37d3394" - -boxen@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" - dependencies: - ansi-align "^2.0.0" - camelcase "^4.0.0" - chalk "^2.0.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^1.2.0" - widest-line "^2.0.0" + integrity sha512-fuiANC1Bqbqa/S4gmvfCt7bGBmNELMsGZj4Wg3PrP6esP66Ttoj1JSlzFlXtHyduMv07kDNmDsX6VsMWT/MLGg== brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -876,6 +1257,7 @@ brace-expansion@^1.1.7: braces@^2.3.0, braces@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.1.tgz#7086c913b4e5a08dbe37ac0ee6a2500c4ba691bb" + integrity sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ== dependencies: arr-flatten "^1.1.0" array-unique "^0.3.2" @@ -893,10 +1275,12 @@ braces@^2.3.0, braces@^2.3.1: brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.1.1" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f" + integrity sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg== dependencies: buffer-xor "^1.0.3" cipher-base "^1.0.0" @@ -908,6 +1292,7 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4: browserify-cipher@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" + integrity sha1-mYgkSHS/XtTijalWZtzWasj8Njo= dependencies: browserify-aes "^1.0.4" browserify-des "^1.0.0" @@ -916,6 +1301,7 @@ browserify-cipher@^1.0.0: browserify-des@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" + integrity sha1-2qJ3cXRwki7S/hhZQRihdUOXId0= dependencies: cipher-base "^1.0.1" des.js "^1.0.0" @@ -924,6 +1310,7 @@ browserify-des@^1.0.0: browserify-rsa@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= dependencies: bn.js "^4.1.0" randombytes "^2.0.1" @@ -931,6 +1318,7 @@ browserify-rsa@^4.0.0: browserify-sign@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= dependencies: bn.js "^4.1.1" browserify-rsa "^4.0.0" @@ -943,38 +1331,33 @@ browserify-sign@^4.0.0: browserify-zlib@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== dependencies: pako "~1.0.5" -browserslist@^2.1.2: - version "2.11.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.3.tgz#fe36167aed1bbcde4827ebfe71347a2cc70b99b2" - dependencies: - caniuse-lite "^1.0.30000792" - electron-to-chromium "^1.3.30" - -buffer-alloc-unsafe@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz#ffe1f67551dd055737de253337bfe853dfab1a6a" - -buffer-alloc@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.1.0.tgz#05514d33bf1656d3540c684f65b1202e90eca303" +browserslist@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.2.1.tgz#257a24c879d1cd4016348eee5c25de683260b21d" + integrity sha512-1oO0c7Zhejwd+LXihS89WqtKionSbz298rJZKJgfrHIZhrV8AC15gw553VcB0lcEugja7IhWD7iAlrsamfYVPA== dependencies: - buffer-alloc-unsafe "^0.1.0" - buffer-fill "^0.1.0" + caniuse-lite "^1.0.30000890" + electron-to-chromium "^1.3.79" + node-releases "^1.0.0-alpha.14" -buffer-fill@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-0.1.0.tgz#ca9470e8d4d1b977fd7543f4e2ab6a7dc95101a8" +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= buffer@^4.3.0: version "4.9.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" @@ -983,14 +1366,17 @@ buffer@^4.3.0: builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= -cacache@^10.0.1: +cacache@^10.0.4: version "10.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" + integrity sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA== dependencies: bluebird "^3.5.1" chownr "^1.0.1" @@ -1006,9 +1392,30 @@ cacache@^10.0.1: unique-filename "^1.1.0" y18n "^4.0.0" +cacache@^11.0.2: + version "11.2.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.2.0.tgz#617bdc0b02844af56310e411c0878941d5739965" + integrity sha512-IFWl6lfK6wSeYCHUXh+N1lY72UDrpyrYQJNIVQf48paDuWbv5RbAtJYf/4gUQFObTCHZwdZ5sI8Iw7nqwP6nlQ== + dependencies: + bluebird "^3.5.1" + chownr "^1.0.1" + figgy-pudding "^3.1.0" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.3" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^6.0.0" + unique-filename "^1.1.0" + y18n "^4.0.0" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== dependencies: collection-visit "^1.0.0" component-emitter "^1.2.1" @@ -1020,52 +1427,30 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - -camelcase@^4.0.0, camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - -caniuse-lite@^1.0.30000792: - version "1.0.30000813" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000813.tgz#7b25e27fdfb8d133f3c932b01f77452140fcc6c9" - -capture-stack-trace@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" +caniuse-lite@^1.0.30000890: + version "1.0.30000890" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000890.tgz#86a18ffcc65d79ec6a437e985761b8bf1c4efeaf" + integrity sha512-4NI3s4Y6ROm+SgZN5sLUG4k7nVWQnedis3c/RWkynV5G6cHSY7+a8fwFyn2yoBDE3E6VswhTNNwR3PvzGqlTkg== -case-sensitive-paths-webpack-plugin@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.1.tgz#3d29ced8c1f124bf6f53846fb3f5894731fdc909" +case-sensitive-paths-webpack-plugin@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.2.tgz#c899b52175763689224571dad778742e133f0192" + integrity sha512-oEZgAFfEvKtjSRCu6VgYkuGxwrWXMnQzyBmlLPP7r6PWQVtHxP5Z5N6XsuJvtoVax78am/r7lr46bwo3IVEBOg== caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= chain-function@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/chain-function/-/chain-function-1.0.0.tgz#0d4ab37e7e18ead0bdc47b920764118ce58733dc" + integrity sha1-DUqzfn4Y6tC9xHuSB2QRjOWHM9w= -chalk@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" - dependencies: - ansi-styles "^3.1.0" - escape-string-regexp "^1.0.5" - supports-color "^4.0.0" - -chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -1073,9 +1458,10 @@ chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65" +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4.0, chalk@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" @@ -1084,6 +1470,7 @@ chalk@^2.0.1: chokidar@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.2.tgz#4dc65139eeb2714977735b6a35d06e97b494dfd7" + integrity sha512-l32Hw3wqB0L2kGVmSbK/a+xXLDrUEsc84pSgMkmwygHvD7ubRsP/vxxHa5BtB6oix1XLLVCHyYMsckRXxThmZw== dependencies: anymatch "^2.0.0" async-each "^1.0.0" @@ -1102,10 +1489,24 @@ chokidar@^2.0.2: chownr@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + integrity sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE= + +chrome-trace-event@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48" + integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A== + dependencies: + tslib "^1.9.0" + +ci-info@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" @@ -1113,47 +1514,39 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== dependencies: arr-union "^3.1.0" define-property "^0.2.5" isobject "^3.0.0" static-extend "^0.1.1" -classnames@^2.2.0, classnames@^2.2.5: +classnames@^2.2.5: version "2.2.5" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d" + integrity sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0= -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" +cli-cursor@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" + restore-cursor "^2.0.0" co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= dependencies: map-visit "^1.0.0" object-visit "^1.0.0" @@ -1161,75 +1554,99 @@ collection-visit@^1.0.0: color-convert@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + integrity sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ== dependencies: color-name "^1.1.1" color-name@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= combined-stream@^1.0.5, combined-stream@~1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" + integrity sha1-cj599ugBrFYTETp+RFqbactjKBg= dependencies: delayed-stream "~1.0.0" commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== + +commander@~2.17.1: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= component-emitter@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= concat-stream@^1.5.0: version "1.6.1" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.1.tgz#261b8f518301f1d834e36342b9fea095d2620a26" + integrity sha512-gslSSJx03QKa59cIKqeJO9HQ/WZMotvYJCuaUULrLpjj8oG40kV2Z+gz82pVxlTkOADi4PJxQPPfhl1ELYrrXw== dependencies: inherits "^2.0.3" readable-stream "^2.2.2" typedarray "^0.0.6" -configstore@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90" +consola@^1.4.3: + version "1.4.4" + resolved "https://registry.yarnpkg.com/consola/-/consola-1.4.4.tgz#cf5eda375c0e99df8970cc8f5e98be023da24ce0" + integrity sha512-6ZCi6LpbwGml3g8C8iXIuSf9yZAWoRAXodcHxBWRVvy42uKe4z7AG4JB4v46LEmgtPXv2rIqR6wVD+sxixDD/A== dependencies: - dot-prop "^4.1.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - unique-string "^1.0.0" - write-file-atomic "^2.0.0" - xdg-basedir "^3.0.0" + chalk "^2.3.2" + figures "^2.0.0" + lodash "^4.17.5" + std-env "^1.1.0" console-browserify@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= dependencies: date-now "^0.1.4" console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= -convert-source-map@1.5.1, convert-source-map@^1.5.0: +convert-source-map@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + integrity sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU= + +convert-source-map@^1.1.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== dependencies: aproba "^1.1.1" fs-write-stream-atomic "^1.0.8" @@ -1241,35 +1658,40 @@ copy-concurrently@^1.0.0: copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= core-js@^1.0.0: version "1.2.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= -core-js@^2.4.0, core-js@^2.5.0: +core-js@^2.4.0: version "2.5.3" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e" + integrity sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4= + +core-js@^2.5.7: + version "2.5.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" + integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= create-ecdh@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" + integrity sha1-iIxyNZbN92EvZJgjPuvXo1MBc30= dependencies: bn.js "^4.1.0" elliptic "^6.0.0" -create-error-class@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - dependencies: - capture-stack-trace "^1.0.0" - create-hash@^1.1.0, create-hash@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" + integrity sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0= dependencies: cipher-base "^1.0.1" inherits "^2.0.1" @@ -1279,6 +1701,7 @@ create-hash@^1.1.0, create-hash@^1.1.2: create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: version "1.1.6" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" + integrity sha1-rLniIaThe9sHbpBlfEK5PjcmzwY= dependencies: cipher-base "^1.0.3" create-hash "^1.1.0" @@ -1287,9 +1710,10 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn@5.1.0, cross-spawn@^5.0.1: +cross-spawn@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= dependencies: lru-cache "^4.0.1" shebang-command "^1.2.0" @@ -1298,12 +1722,14 @@ cross-spawn@5.1.0, cross-spawn@^5.0.1: cryptiles@2.x.x: version "2.0.5" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g= dependencies: boom "2.x.x" crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== dependencies: browserify-cipher "^1.0.0" browserify-sign "^4.0.0" @@ -1317,57 +1743,58 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - css-in-js-utils@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-2.0.0.tgz#5af1dd70f4b06b331f48d22a3d86e0786c0b9435" + integrity sha512-yuWmPMD9FLi50Xf3k8W8oO3WM1eVnxEGCldCLyfusQ+CgivFk0s23yst4ooW6tfxMuSa03S6uUEga9UhX6GRrA== dependencies: hyphenate-style-name "^1.0.2" cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" - -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - dependencies: - es5-ext "^0.10.9" + integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= dependencies: assert-plus "^1.0.0" date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -decamelize@^1.0.0, decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" +debug@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= deep-extend@~0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + integrity sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8= define-properties@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + integrity sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ= dependencies: foreach "^2.0.5" object-keys "^1.0.8" @@ -1375,25 +1802,29 @@ define-properties@^1.1.2: define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= dependencies: is-descriptor "^1.0.0" define-property@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: is-descriptor "^1.0.2" isobject "^3.0.1" -del@3.0.0: +del@3.0.0, del@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= dependencies: globby "^6.1.0" is-path-cwd "^1.0.0" @@ -1405,6 +1836,7 @@ del@3.0.0: del@^2.2.0: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + integrity sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag= dependencies: globby "^5.0.0" is-path-cwd "^1.0.0" @@ -1417,22 +1849,27 @@ del@^2.2.0: delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= depd@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + integrity sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k= depd@~1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= des.js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= dependencies: inherits "^2.0.1" minimalistic-assert "^1.0.0" @@ -1440,20 +1877,17 @@ des.js@^1.0.0: destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - dependencies: - repeating "^2.0.0" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= diffie-hellman@^5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" + integrity sha1-tYNXOScM/ias9jIJn97SoH8gnl4= dependencies: bn.js "^4.1.0" miller-rabin "^4.0.0" @@ -1462,32 +1896,22 @@ diffie-hellman@^5.0.0: dom-helpers@^3.2.0, dom-helpers@^3.2.1: version "3.3.1" resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.3.1.tgz#fc1a4e15ffdf60ddde03a480a9c0fece821dd4a6" - -dom-walk@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" + integrity sha512-2Sm+JaYn74OiTM2wHvxJOo3roiq/h25Yi69Fqk269cNUwIXsCvATB6CRSFC9Am/20G2b28hGv/+7NiWydIrPvg== domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - -dot-prop@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" - dependencies: - is-obj "^1.0.0" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== downshift@^1.16.0: version "1.29.1" resolved "https://registry.yarnpkg.com/downshift/-/downshift-1.29.1.tgz#949e493195c4919cfa52ad38011d5631d6395ac3" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha512-qVeLECUUxfjsBYq+0al7zRcwubkWmuO81Efm08HMvRmJZsUohbURiJhKY5bYL7YGRxKsMB+cp0qY8oS2MJEpHg== duplexify@^3.4.2, duplexify@^3.5.3: version "3.5.4" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.4.tgz#4bb46c1796eabebeec4ca9a2e66b808cb7a3d8b4" + integrity sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA== dependencies: end-of-stream "^1.0.0" inherits "^2.0.1" @@ -1497,20 +1921,24 @@ duplexify@^3.4.2, duplexify@^3.5.3: ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + integrity sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU= dependencies: jsbn "~0.1.0" ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.30: - version "1.3.36" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.36.tgz#0eabf71a9ebea9013fb1cc35a390e068624f27e8" +electron-to-chromium@^1.3.79: + version "1.3.79" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.79.tgz#774718f06284a4bf8f578ac67e74508fe659f13a" + integrity sha512-LQdY3j4PxuUl6xfxiFruTSlCniTrTrzAd8/HfsLEMi0PUpaQ0Iy+Pr4N4VllDYjs0Hyu2lkTbvzqlG+PX9NsNw== elliptic@^6.0.0: version "6.4.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" + integrity sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8= dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -1523,191 +1951,163 @@ elliptic@^6.0.0: emitter-mixin@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/emitter-mixin/-/emitter-mixin-0.0.3.tgz#5948cb286f2e48edc3b251a7cfc1f7883396d65c" + integrity sha1-WUjLKG8uSO3DslGnz8H3iDOW1lw= emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= encodeurl@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= encoding@^0.1.11: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= dependencies: iconv-lite "~0.4.13" end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== dependencies: once "^1.4.0" -enhanced-resolve@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" +enhanced-resolve@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" + integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== dependencies: graceful-fs "^4.1.2" memory-fs "^0.4.0" - object-assign "^4.0.1" - tapable "^0.2.7" + tapable "^1.0.0" errno@^0.1.2, errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== dependencies: prr "~1.0.1" error-ex@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + integrity sha1-+FWobOYa3E6GIcPNoh56dhLDqNw= dependencies: is-arrayish "^0.2.1" error-stack-parser@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.1.tgz#a3202b8fb03114aa9b40a0e3669e48b2b65a010a" + integrity sha1-oyArj7AxFKqbQKDjZp5IsrZaAQo= dependencies: stackframe "^1.0.3" -es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.39" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.39.tgz#fca21b67559277ca4ac1a1ed7048b107b6f76d87" - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - -es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-map@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" +es-abstract@^1.5.1: + version "1.12.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" + integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA== dependencies: - d "1" - es5-ext "~0.10.14" + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" -es6-weak-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" +es-to-primitive@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== dependencies: - d "1" - es5-ext "^0.10.14" - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" +eslint-scope@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" + integrity sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA== dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" esrecurse "^4.1.0" estraverse "^4.1.1" esrecurse@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== dependencies: estraverse "^4.1.0" estraverse@^4.1.0, estraverse@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= -esutils@^2.0.2: +esutils@^2.0.0, esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= etag@1.8.1, etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - dependencies: - d "1" - es5-ext "~0.10.14" +event-source-polyfill@0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/event-source-polyfill/-/event-source-polyfill-0.0.12.tgz#e539cd67fdef2760a16aa5262fa98134df52e3af" + integrity sha1-5TnNZ/3vJ2ChaqUmL6mBNN9S468= events@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= evergreen-ui@latest: - version "2.1.0" - resolved "https://registry.yarnpkg.com/evergreen-ui/-/evergreen-ui-2.1.0.tgz#bae791dc38ed7300839b2006d83604c4c6258e92" + version "3.2.7" + resolved "https://registry.yarnpkg.com/evergreen-ui/-/evergreen-ui-3.2.7.tgz#5bfe3914f31eb78470dd5ee9b9685c2c0b0882a5" + integrity sha512-RE99GoTzTiXmrv8KTzB90ZLDMC+XiADSz5ZgE/UHzhnV+SdwSdNgMcddufgZ5zRHQVSjqYMuilXYLqUhSS47Eg== dependencies: arrify "^1.0.1" dom-helpers "^3.2.1" downshift "^1.16.0" fuzzaldrin-plus "^0.6.0" glamor "^2.20.40" + lodash.debounce "^4.0.8" lodash.mapvalues "^4.6.0" object-values "^1.0.0" prop-types "^15.0.0" react-scrollbar-size "^2.0.2" react-tiny-virtual-list "^2.1.4" react-transition-group "^2.2.1" - ui-box "^1.0.5" + ui-box "^1.1.0" evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== dependencies: md5.js "^1.3.4" safe-buffer "^5.1.1" -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= dependencies: debug "^2.3.3" define-property "^0.2.5" @@ -1720,12 +2120,14 @@ expand-brackets@^2.1.4: extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= dependencies: assign-symbols "^1.0.0" is-extendable "^1.0.1" @@ -1733,10 +2135,12 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: extend@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + integrity sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ= extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: array-unique "^0.3.2" define-property "^1.0.0" @@ -1750,26 +2154,32 @@ extglob@^2.0.4: extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= extsprintf@^1.2.0: version "1.4.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= fast-deep-equal@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= fbjs@^0.8.12, fbjs@^0.8.16: version "0.8.16" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db" + integrity sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s= dependencies: core-js "^1.0.0" isomorphic-fetch "^2.1.1" @@ -1779,13 +2189,27 @@ fbjs@^0.8.12, fbjs@^0.8.16: setimmediate "^1.0.5" ua-parser-js "^0.7.9" -filesize@^3.2.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.0.tgz#22d079615624bb6fd3c04026120628a41b3f4efa" +figgy-pudding@^3.1.0, figgy-pudding@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" + integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +filesize@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" + integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= dependencies: extend-shallow "^2.0.1" is-number "^3.0.0" @@ -1795,20 +2219,39 @@ fill-range@^4.0.0: find-cache-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= dependencies: commondir "^1.0.1" make-dir "^1.0.0" pkg-dir "^2.0.0" -find-up@2.1.0, find-up@^2.0.0, find-up@^2.1.0: +find-cache-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d" + integrity sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA== + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^3.0.0" + +find-up@2.1.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= dependencies: locate-path "^2.0.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + flush-write-stream@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.2.tgz#c81b90d8746766f1a609a46809946c45dd8ae417" + integrity sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc= dependencies: inherits "^2.0.1" readable-stream "^2.0.4" @@ -1816,22 +2259,22 @@ flush-write-stream@^1.0.0: for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= foreach@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - -foreachasync@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/foreachasync/-/foreachasync-3.0.0.tgz#5502987dc8714be3392097f32e0071c9dee07cf6" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= form-data@~2.1.1: version "2.1.4" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + integrity sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE= dependencies: asynckit "^0.4.0" combined-stream "^1.0.5" @@ -1840,24 +2283,28 @@ form-data@~2.1.1: fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= dependencies: map-cache "^0.2.2" fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -friendly-errors-webpack-plugin@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.6.1.tgz#e32781c4722f546a06a9b5d7a7cfa28520375d70" +friendly-errors-webpack-plugin@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz#efc86cbb816224565861a1be7a9d84d0aafea136" + integrity sha512-K27M3VK30wVoOarP651zDmb93R9zF28usW4ocaK3mfQeIEI5BPht/EzZs5E8QLLwbLRJQMwscAjDxYPb1FuNiw== dependencies: chalk "^1.1.3" error-stack-parser "^2.0.0" - string-length "^1.0.1" + string-width "^2.0.0" from2@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= dependencies: inherits "^2.0.1" readable-stream "^2.0.0" @@ -1865,6 +2312,7 @@ from2@^2.1.0: fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= dependencies: graceful-fs "^4.1.2" iferr "^0.1.5" @@ -1874,10 +2322,12 @@ fs-write-stream-atomic@^1.0.8: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" + integrity sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q== dependencies: nan "^2.3.0" node-pre-gyp "^0.6.39" @@ -1885,6 +2335,7 @@ fsevents@^1.0.0: fstream-ignore@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + integrity sha1-nDHa40dnAY/h0kmyTa2mfQktoQU= dependencies: fstream "^1.0.0" inherits "2" @@ -1893,6 +2344,7 @@ fstream-ignore@^1.0.5: fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE= dependencies: graceful-fs "^4.1.2" inherits "~2.0.0" @@ -1902,14 +2354,17 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: function-bind@^1.0.2, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== fuzzaldrin-plus@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/fuzzaldrin-plus/-/fuzzaldrin-plus-0.6.0.tgz#832f6489fbe876769459599c914a670ec22947ee" + integrity sha1-gy9kifvodnaUWVmckUpnDsIpR+4= gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= dependencies: aproba "^1.0.3" console-control-strings "^1.0.0" @@ -1920,27 +2375,22 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -get-caller-file@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= dependencies: assert-plus "^1.0.0" glamor@^2.20.0, glamor@^2.20.40: version "2.20.40" resolved "https://registry.yarnpkg.com/glamor/-/glamor-2.20.40.tgz#f606660357b7cf18dface731ad1a2cfa93817f05" + integrity sha512-DNXCd+c14N9QF8aAKrfl4xakPk5FdcFwmH7sD0qnC0Pr7xoZ5W9yovhUrY/dJc3psfGGXC58vqQyRtuskyUJxA== dependencies: fbjs "^0.8.12" inline-style-prefixer "^3.0.6" @@ -1951,17 +2401,15 @@ glamor@^2.20.0, glamor@^2.20.40: glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= dependencies: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-promise@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-3.3.0.tgz#d1eb3625c4e6dcbb9b96eeae4425d5a3b135fed2" - glob@7.1.2, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -1970,36 +2418,15 @@ glob@7.1.2, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^6.0.1: - version "6.0.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-dirs@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - dependencies: - ini "^1.3.4" - -global@^4.3.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" - dependencies: - min-document "^2.19.0" - process "~0.5.1" - -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" +globals@^11.1.0: + version "11.8.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.8.0.tgz#c1ef45ee9bed6badf0663c5cb90e8d1adec1321d" + integrity sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA== globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + integrity sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0= dependencies: array-union "^1.0.1" arrify "^1.0.0" @@ -2011,6 +2438,7 @@ globby@^5.0.0: globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= dependencies: array-union "^1.0.1" glob "^7.0.3" @@ -2018,33 +2446,20 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" -got@^6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" - dependencies: - create-error-class "^3.0.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" - graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= har-schema@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + integrity sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4= har-validator@~4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + integrity sha1-M0gdDxu/9gDdID11gSpqX7oALio= dependencies: ajv "^4.9.1" har-schema "^1.0.5" @@ -2052,28 +2467,29 @@ har-validator@~4.2.1: has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= dependencies: ansi-regex "^2.0.0" -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= has-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= dependencies: get-value "^2.0.3" has-values "^0.1.4" @@ -2082,6 +2498,7 @@ has-value@^0.3.1: has-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= dependencies: get-value "^2.0.6" has-values "^1.0.0" @@ -2090,10 +2507,12 @@ has-value@^1.0.0: has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= has-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= dependencies: is-number "^3.0.0" kind-of "^4.0.0" @@ -2101,18 +2520,28 @@ has-values@^1.0.0: has@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + integrity sha1-hGFzP1OLCDfJNh45qauelwTcLyg= dependencies: function-bind "^1.0.2" +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + hash-base@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" + integrity sha1-ZuodhW206KVHDK32/OI65SRO8uE= dependencies: inherits "^2.0.1" hash-base@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" @@ -2120,6 +2549,7 @@ hash-base@^3.0.0: hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.3" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== dependencies: inherits "^2.0.3" minimalistic-assert "^1.0.0" @@ -2127,6 +2557,7 @@ hash.js@^1.0.0, hash.js@^1.0.3: hawk@3.1.3, hawk@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ= dependencies: boom "2.x.x" cryptiles "2.x.x" @@ -2136,6 +2567,7 @@ hawk@3.1.3, hawk@~3.1.3: hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= dependencies: hash.js "^1.0.3" minimalistic-assert "^1.0.0" @@ -2144,37 +2576,32 @@ hmac-drbg@^1.0.0: hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0= -hoist-non-react-statics@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz#343db84c6018c650778898240135a1420ee22ce0" - -hoist-non-react-statics@^2.3.1: - version "2.5.0" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz#d2ca2dfc19c5a91c5a6615ce8e564ef0347e2a40" - -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" +hoist-non-react-statics@2.5.5: + version "2.5.5" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" + integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== hosted-git-info@^2.1.4: version "2.5.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" + integrity sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg== html-entities@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= htmlescape@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" + integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E= http-errors@1.6.2, http-errors@~1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" + integrity sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY= dependencies: depd "1.1.1" inherits "2.0.3" @@ -2184,6 +2611,7 @@ http-errors@1.6.2, http-errors@~1.6.2: http-signature@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8= dependencies: assert-plus "^0.2.0" jsprim "^1.2.2" @@ -2192,42 +2620,47 @@ http-signature@~1.1.0: http-status@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/http-status/-/http-status-1.0.1.tgz#dc43001a8bfc50ac87d485a892f7578964bc94a2" + integrity sha1-3EMAGov8UKyH1IWokvdXiWS8lKI= https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= hyphenate-style-name@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz#31160a36930adaf1fc04c6074f7eb41465d4ec4b" + integrity sha1-MRYKNpMK2vH8BMYHT360FGXU7Es= iconv-lite@~0.4.13: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + integrity sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ== ieee754@^1.1.4: version "1.1.8" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" + integrity sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q= iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" wrappy "1" @@ -2235,90 +2668,114 @@ inflight@^1.0.4: inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= -ini@^1.3.4, ini@~1.3.0: +ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== inline-style-prefixer@^3.0.6: version "3.0.8" resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz#8551b8e5b4d573244e66a34b04f7d32076a2b534" + integrity sha1-hVG45bTVcyROZqNLBPfTIHaitTQ= dependencies: bowser "^1.7.3" css-in-js-utils "^2.0.0" -inline-style-prefixer@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-4.0.0.tgz#30a03df1b346ba6b1fb8a812bc3c9dabef48022d" +inline-style-prefixer@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-4.0.2.tgz#d390957d26f281255fe101da863158ac6eb60911" + integrity sha512-N8nVhwfYga9MiV9jWlwfdj1UDIaZlBFu4cJSJkIr7tZX7sHpHhGR5su1qdpW+7KPL8ISTvCIkcaFi/JdBknvPg== dependencies: bowser "^1.7.3" css-in-js-utils "^2.0.0" -interpret@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" - invariant@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.3.tgz#1a827dfde7dcbd7c323f0ca826be8fa7c5e9d688" + integrity sha512-7Z5PPegwDTyjbaeCnV0efcyS6vdKAU51kpEmS7QFib3P4822l8ICYyMn7qvJnc+WzLoDsuI9gPMKbJ8pCu8XtA== dependencies: loose-envify "^1.0.0" -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= dependencies: kind-of "^3.0.2" is-accessor-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== dependencies: kind-of "^6.0.0" is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= dependencies: binary-extensions "^1.0.0" is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-builtin-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= dependencies: builtin-modules "^1.0.0" +is-callable@^1.1.3, is-callable@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== + +is-ci@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" + integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== + dependencies: + ci-info "^1.5.0" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= dependencies: kind-of "^3.0.2" is-data-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: kind-of "^6.0.0" +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: is-accessor-descriptor "^0.1.6" is-data-descriptor "^0.1.4" @@ -2327,6 +2784,7 @@ is-descriptor@^0.1.0: is-descriptor@^1.0.0, is-descriptor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: is-accessor-descriptor "^1.0.0" is-data-descriptor "^1.0.0" @@ -2335,139 +2793,146 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= is-extendable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: is-plain-object "^2.0.4" is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - dependencies: - number-is-nan "^1.0.0" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= dependencies: is-extglob "^2.1.0" is-glob@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" - dependencies: - global-dirs "^0.1.0" - is-path-inside "^1.0.0" - -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= dependencies: kind-of "^3.0.2" is-number@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== is-odd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" + integrity sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ== dependencies: is-number "^4.0.0" is-path-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= is-path-in-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" + integrity sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw= dependencies: is-path-inside "^1.0.0" is-path-inside@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= dependencies: path-is-inside "^1.0.1" is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - -is-retry-allowed@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= + dependencies: + has "^1.0.1" -is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: +is-stream@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + dependencies: + has-symbols "^1.0.0" is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= isomorphic-fetch@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= dependencies: node-fetch "^1.0.1" whatwg-fetch ">=0.10.0" @@ -2475,56 +2940,84 @@ isomorphic-fetch@^2.1.1: isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +js-levenshtein@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.4.tgz#3a56e3cbf589ca0081eb22cd9ba0b1290a16d26e" + integrity sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow== -js-tokens@^3.0.0, js-tokens@^3.0.2: +js-tokens@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" +jsesc@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + integrity sha1-5CGiqOINawgZ3yiQj3glJrlt0f4= jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-loader@0.5.7, json-loader@^0.5.4: - version "0.5.7" - resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" +json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= json-stable-stringify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= dependencies: jsonify "~0.0.0" json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@^0.5.0, json5@^0.5.1: +json5@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= dependencies: assert-plus "1.0.0" extsprintf "1.3.0" @@ -2534,52 +3027,51 @@ jsprim@^1.2.2: junk@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/junk/-/junk-1.0.3.tgz#87be63488649cbdca6f53ab39bec9ccd2347f592" + integrity sha1-h75jSIZJy9ym9Tqzm+yczSNH9ZI= kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= dependencies: is-buffer "^1.1.5" kind-of@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== -latest-version@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" +launch-editor@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.2.1.tgz#871b5a3ee39d6680fcc26d37930b6eeda89db0ca" + integrity sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw== dependencies: - package-json "^4.0.0" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + chalk "^2.3.0" + shell-quote "^1.6.1" lazy-cache@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" + integrity sha1-uRkKT5EzVGlIQIWfio9whNiCImQ= dependencies: set-getter "^0.1.0" -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - load-json-file@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= dependencies: graceful-fs "^4.1.2" parse-json "^2.2.0" @@ -2589,10 +3081,12 @@ load-json-file@^2.0.0: loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" + integrity sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI= loader-utils@1.1.0, loader-utils@^1.0.2, loader-utils@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0= dependencies: big.js "^3.1.3" emojis-list "^2.0.0" @@ -2601,35 +3095,67 @@ loader-utils@1.1.0, loader-utils@^1.0.2, loader-utils@^1.1.0: locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= dependencies: p-locate "^2.0.0" path-exists "^3.0.0" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + lodash.mapvalues@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" + integrity sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw= -lodash@^4.14.0, lodash@^4.17.4, lodash@^4.5.1: +lodash@^4.17.10, lodash@^4.17.5: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +lodash@^4.17.4: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" + integrity sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw== -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" +log-update@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" + integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= + dependencies: + ansi-escapes "^3.0.0" + cli-cursor "^2.0.0" + wrap-ansi "^3.0.1" loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + integrity sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg= dependencies: js-tokens "^3.0.0" -lowercase-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" - lru-cache@^4.0.1, lru-cache@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" + integrity sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" + integrity sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA== dependencies: pseudomap "^1.0.2" yallist "^2.1.2" @@ -2637,50 +3163,44 @@ lru-cache@^4.0.1, lru-cache@^4.1.1: make-dir@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b" + integrity sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw== dependencies: pify "^3.0.0" map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= dependencies: object-visit "^1.0.0" maximatch@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/maximatch/-/maximatch-0.1.0.tgz#86cd8d6b04c9f307c05a6b9419906d0360fb13a2" + integrity sha1-hs2NawTJ8wfAWmuUGZBtA2D7E6I= dependencies: array-differ "^1.0.0" array-union "^1.0.1" arrify "^1.0.0" minimatch "^3.0.0" -md5-file@3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-3.2.3.tgz#f9bceb941eca2214a4c0727f5e700314e770f06f" - dependencies: - buffer-alloc "^1.1.0" - md5.js@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" + integrity sha1-6b296UogpawYsENA/Fdk1bCdkB0= dependencies: hash-base "^3.0.0" inherits "^2.0.1" -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - dependencies: - mimic-fn "^1.0.0" - -memory-fs@^0.4.0, memory-fs@~0.4.1: +memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= dependencies: errno "^0.1.3" readable-stream "^2.0.1" @@ -2688,6 +3208,7 @@ memory-fs@^0.4.0, memory-fs@~0.4.1: micromatch@^3.1.4: version "3.1.9" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.9.tgz#15dc93175ae39e52e93087847096effc73efcf89" + integrity sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g== dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" @@ -2703,9 +3224,29 @@ micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +micromatch@^3.1.8: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== dependencies: bn.js "^4.0.0" brorand "^1.0.1" @@ -2713,56 +3254,61 @@ miller-rabin@^4.0.0: mime-db@~1.33.0: version "1.33.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== mime-types@^2.1.12, mime-types@~2.1.7: version "2.1.18" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== dependencies: mime-db "~1.33.0" mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== -mime@^1.3.4: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" +mime@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" + integrity sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg== mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - dependencies: - dom-walk "^0.1.0" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== minimalistic-assert@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" + integrity sha1-cCvi3aazf0g2vLP121ZkG2Sh09M= minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= minimist@1.2.0, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= mississippi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" + integrity sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw== dependencies: concat-stream "^1.5.0" duplexify "^3.4.2" @@ -2775,9 +3321,26 @@ mississippi@^2.0.0: stream-each "^1.1.0" through2 "^2.0.0" +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + mixin-deep@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== dependencies: for-in "^1.0.2" is-extendable "^1.0.1" @@ -2785,23 +3348,27 @@ mixin-deep@^1.2.0: mkdirp-then@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mkdirp-then/-/mkdirp-then-1.2.0.tgz#a492c879ca4d873f5ee45008f8f55fd0150de3c5" + integrity sha1-pJLIecpNhz9e5FAI+PVf0BUN48U= dependencies: any-promise "^1.1.0" mkdirp "^0.5.0" -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" -moment@^2.11.2: - version "2.21.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.21.0.tgz#2a114b51d2a6ec9e6d83cf803f838a878d8a023a" +moment@^2.22.1: + version "2.22.2" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" + integrity sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y= move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= dependencies: aproba "^1.1.1" copy-concurrently "^1.0.0" @@ -2813,34 +3380,27 @@ move-concurrently@^1.0.1: ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@2.1.1: +ms@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - -mv@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2" - dependencies: - mkdirp "~0.5.1" - ncp "~2.0.0" - rimraf "~2.4.0" - -mz@2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== nan@^2.3.0: version "2.9.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.9.2.tgz#f564d75f5f8f36a6d9456cca7a6c4fe488ab7866" + integrity sha512-ltW65co7f3PQWBDbqVvaU1WtFJUsNW7sWWm4HINhbMQIyVyzIeyZ8toX5TC5eeooE6piZoaEh4cZkueSKG3KYw== + +nanoid@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-1.2.1.tgz#922bf6c10e35f7b208993768dad643577c907adf" + integrity sha512-S1QSG+TQtsqr2/ujHZcNT0OxygffUaUT755qTc/SPKfQ0VJBlOO6qb1425UYoHXPvCZ3pWgMVCuy1t7+AoCxnQ== nanomatch@^1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" + integrity sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA== dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" @@ -2855,79 +3415,74 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -ncp@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" - neo-async@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.0.tgz#76b1c823130cca26acfbaccc8fbaf0a2fa33b18f" - -next@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/next/-/next-5.0.0.tgz#9f88159f9e67f02cf27de2045cb968281e0b2ff2" - dependencies: - "@zeit/check-updates" "1.1.0" - "@zeit/source-map-support" "0.6.2" + integrity sha512-nJmSswG4As/MkRq7QZFuH/sf/yuv8ODdMZrY4Bedjp77a5MK4A6s7YbBB64c9u79EBUOfXUXBvArmvzTD0X+6g== + +next@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/next/-/next-7.0.2.tgz#5ff6b3f0e6cf03ce539d5779a55dc1f8fb1759d7" + integrity sha512-DOPKKk+2rAEvXS/JMaZL5+jd2WUJI5BEv8xXiR4ijqIuvAL0dI/cT8H6bhFCqbYIgFNuefp+NSVh2kvxpELyeg== + dependencies: + "@babel/core" "7.0.0" + "@babel/plugin-proposal-class-properties" "7.0.0" + "@babel/plugin-proposal-object-rest-spread" "7.0.0" + "@babel/plugin-syntax-dynamic-import" "7.0.0" + "@babel/plugin-transform-runtime" "7.0.0" + "@babel/preset-env" "7.0.0" + "@babel/preset-react" "7.0.0" + "@babel/runtime" "7.0.0" + "@babel/runtime-corejs2" "7.0.0" + "@babel/template" "7.0.0" ansi-html "0.0.7" - babel-core "6.26.0" - babel-loader "7.1.2" + autodll-webpack-plugin "0.4.2" + babel-core "7.0.0-bridge.0" + babel-loader "8.0.2" babel-plugin-react-require "3.0.0" - babel-plugin-syntax-dynamic-import "6.18.0" - babel-plugin-transform-class-properties "6.24.1" - babel-plugin-transform-object-rest-spread "6.26.0" - babel-plugin-transform-react-jsx-source "6.22.0" - babel-plugin-transform-react-remove-prop-types "0.4.8" - babel-plugin-transform-runtime "6.23.0" - babel-preset-env "1.6.0" - babel-preset-react "6.24.1" - babel-runtime "6.26.0" - babel-template "6.26.0" - case-sensitive-paths-webpack-plugin "2.1.1" + babel-plugin-transform-react-remove-prop-types "0.4.15" + case-sensitive-paths-webpack-plugin "2.1.2" cross-spawn "5.1.0" del "3.0.0" etag "1.8.1" + event-source-polyfill "0.0.12" find-up "2.1.0" fresh "0.5.2" - friendly-errors-webpack-plugin "1.6.1" + friendly-errors-webpack-plugin "1.7.0" glob "7.1.2" - glob-promise "3.3.0" - hoist-non-react-statics "2.3.1" + hoist-non-react-statics "2.5.5" htmlescape "1.1.1" http-errors "1.6.2" http-status "1.0.1" - json-loader "0.5.7" + launch-editor "2.2.1" loader-utils "1.1.0" - md5-file "3.2.3" minimist "1.2.0" mkdirp-then "1.2.0" - mv "2.1.1" - mz "2.7.0" + nanoid "1.2.1" path-to-regexp "2.1.0" - pkg-up "2.0.0" - prop-types "15.6.0" - prop-types-exact "1.1.1" - react-hot-loader "4.0.0-beta.18" + prop-types "15.6.2" + prop-types-exact "1.2.0" + react-error-overlay "4.0.0" recursive-copy "2.0.6" resolve "1.5.0" send "0.16.1" + source-map "0.5.7" strip-ansi "3.0.1" - styled-jsx "2.2.3" - touch "3.1.0" - uglifyjs-webpack-plugin "1.1.6" + styled-jsx "3.1.0" + terser-webpack-plugin "1.0.2" unfetch "3.0.0" url "0.11.0" - uuid "3.1.0" - walk "2.3.9" - webpack "3.10.0" - webpack-dev-middleware "1.12.0" - webpack-hot-middleware "2.21.0" - write-file-webpack-plugin "4.2.0" - xss-filters "1.2.7" + webpack "4.20.2" + webpack-dev-middleware "3.4.0" + webpack-hot-middleware "2.22.3" + webpack-sources "1.2.0" + webpackbar "2.6.3" + write-file-webpack-plugin "4.3.2" node-fetch@^1.0.1: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== dependencies: encoding "^0.1.11" is-stream "^1.0.1" @@ -2935,6 +3490,7 @@ node-fetch@^1.0.1: node-libs-browser@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" + integrity sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg== dependencies: assert "^1.1.1" browserify-zlib "^0.2.0" @@ -2963,6 +3519,7 @@ node-libs-browser@^2.0.0: node-pre-gyp@^0.6.39: version "0.6.39" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" + integrity sha512-OsJV74qxnvz/AMGgcfZoDaeDXKD3oY3QVIbBmwszTFkRisTSXbMQyn4UWzUMOtA5SVhrBZOTp0wcoSBgfMfMmQ== dependencies: detect-libc "^1.0.2" hawk "3.1.3" @@ -2976,22 +3533,25 @@ node-pre-gyp@^0.6.39: tar "^2.2.1" tar-pack "^3.4.0" +node-releases@^1.0.0-alpha.14: + version "1.0.0-alpha.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.0.0-alpha.14.tgz#da9e2780add4bbb59ad890af9e2018a1d9c0034b" + integrity sha512-G8nnF9cP9QPP/jUmYWw/uUUhumHmkm+X/EarCugYFjYm2uXRMFeOD6CVT3RLdoyCvDUNy51nirGfUItKWs/S1g== + dependencies: + semver "^5.3.0" + nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= dependencies: abbrev "1" osenv "^0.1.4" -nopt@~1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - dependencies: - abbrev "1" - normalize-package-data@^2.3.2: version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw== dependencies: hosted-git-info "^2.1.4" is-builtin-module "^1.0.0" @@ -3001,18 +3561,14 @@ normalize-package-data@^2.3.2: normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - dependencies: - path-key "^2.0.0" - npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== dependencies: are-we-there-yet "~1.1.2" console-control-strings "~1.1.0" @@ -3022,18 +3578,22 @@ npmlog@^4.0.2: number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= oauth-sign@~0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM= object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= dependencies: copy-descriptor "^0.1.0" define-property "^0.2.5" @@ -3042,111 +3602,141 @@ object-copy@^0.1.0: object-keys@^1.0.11, object-keys@^1.0.8: version "1.0.11" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + integrity sha1-xUYBd4rVYPEULODgG8yotW0TQm0= object-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/object-values/-/object-values-1.0.0.tgz#72af839630119e5b98c3b02bb8c27e3237158105" + integrity sha1-cq+DljARnluYw7AruMJ+MjcVgQU= object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= dependencies: isobject "^3.0.0" -object.assign@^4.0.4: +object.assign@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== dependencies: define-properties "^1.1.2" function-bind "^1.1.1" has-symbols "^1.0.0" object-keys "^1.0.11" +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= dependencies: ee-first "1.1.1" once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: +os-tmpdir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= osenv@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== dependencies: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - p-limit@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" + integrity sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng== dependencies: p-try "^1.0.0" +p-limit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" + integrity sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A== + dependencies: + p-try "^2.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: - p-limit "^1.1.0" + p-limit "^2.0.0" p-map@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= -package-json@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" - dependencies: - got "^6.7.1" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" +p-try@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" + integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== pako@~1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + integrity sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg== parallel-transform@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= dependencies: cyclist "~0.2.2" inherits "^2.0.3" @@ -3155,6 +3745,7 @@ parallel-transform@^1.1.0: parse-asn1@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" + integrity sha1-N8T5t+06tlx0gXtfJICTf7+XxxI= dependencies: asn1.js "^4.0.0" browserify-aes "^1.0.0" @@ -3165,54 +3756,61 @@ parse-asn1@^5.0.0: parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= dependencies: error-ex "^1.2.0" pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= path-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= path-is-inside@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - -path-key@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + integrity sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME= path-to-regexp@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.1.0.tgz#7e30f9f5b134bd6a28ffc2e3ef1e47075ac5259b" + integrity sha512-dZY7QPCPp5r9cnNuQ955mOv4ZFVDXY/yvqeV7Y1W2PJA3PEFcuow9xKFfJxbBj1pIjOAP+M2B4/7xubmykLrXw== path-type@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= dependencies: pify "^2.0.0" pbkdf2@^3.0.3: version "3.0.14" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" + integrity sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -3223,89 +3821,102 @@ pbkdf2@^3.0.3: performance-now@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + integrity sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU= pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= dependencies: find-up "^2.1.0" -pkg-up@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== dependencies: - find-up "^2.1.0" + find-up "^3.0.0" posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" +pretty-time@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" + integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== -private@^0.1.6, private@^0.1.7: +private@^0.1.6: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - -process@~0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= promise@^7.0.1, promise@^7.1.1: version "7.3.1" resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== dependencies: asap "~2.0.3" -prop-types-exact@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.1.1.tgz#c2620207e4f77f9762fa1835b0387a464bd08978" +prop-types-exact@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869" + integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA== dependencies: - has "^1.0.1" - object.assign "^4.0.4" + has "^1.0.3" + object.assign "^4.1.0" + reflect.ownkeys "^0.2.0" -prop-types@15.6.0: - version "15.6.0" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856" +prop-types@15.6.2, prop-types@^15.6.2: + version "15.6.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" + integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ== dependencies: - fbjs "^0.8.16" loose-envify "^1.3.1" object-assign "^4.1.1" prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0: version "15.6.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca" + integrity sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ== dependencies: fbjs "^0.8.16" loose-envify "^1.3.1" @@ -3314,14 +3925,17 @@ prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.5.8, prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= public-encrypt@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" + integrity sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY= dependencies: bn.js "^4.1.0" browserify-rsa "^4.0.0" @@ -3332,6 +3946,15 @@ public-encrypt@^4.0.0: pump@^2.0.0, pump@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -3339,6 +3962,7 @@ pump@^2.0.0, pump@^2.0.1: pumpify@^1.3.3: version "1.4.0" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.4.0.tgz#80b7c5df7e24153d03f0e7ac8a05a5d068bd07fb" + integrity sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA== dependencies: duplexify "^3.5.3" inherits "^2.0.3" @@ -3347,32 +3971,44 @@ pumpify@^1.3.3: punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== qs@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + integrity sha1-E+JtKK1rD/qpExLNO/cI7TUecjM= querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= querystring@0.2.0, querystring@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" + integrity sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A== dependencies: safe-buffer "^5.1.0" randomfill@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== dependencies: randombytes "^2.0.5" safe-buffer "^5.1.0" @@ -3380,67 +4016,64 @@ randomfill@^1.0.3: range-parser@^1.0.3, range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= -rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: +rc@^1.1.7: version "1.2.5" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.5.tgz#275cd687f6e3b36cc756baa26dfee80a790301fd" + integrity sha1-J1zWh/bjs2zHVrqibf7oCnkDAf0= dependencies: deep-extend "~0.4.0" ini "~1.3.0" minimist "^1.2.0" strip-json-comments "~2.0.1" -react-dom@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.2.0.tgz#69003178601c0ca19b709b33a83369fe6124c044" +react-dom@^16.5.2: + version "16.5.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.5.2.tgz#b69ee47aa20bab5327b2b9d7c1fe2a30f2cfa9d7" + integrity sha512-RC8LDw8feuZOHVgzEf7f+cxBr/DnKdqp56VU0lAs1f4UfKc4cU8wU4fTq/mgnvynLQo8OtlPC19NUFh/zjZPuA== dependencies: - fbjs "^0.8.16" loose-envify "^1.1.0" object-assign "^4.1.1" - prop-types "^15.6.0" + prop-types "^15.6.2" + schedule "^0.5.0" + +react-error-overlay@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-4.0.0.tgz#d198408a85b4070937a98667f500c832f86bd5d4" + integrity sha512-FlsPxavEyMuR6TjVbSSywovXSEyOg6ZDj5+Z8nbsRl9EkOzAhEIcS+GLoQDC5fz/t9suhUXWmUrOBrgeUvrMxw== react-event-listener@^0.5.1: version "0.5.3" resolved "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.5.3.tgz#a8b492596ad601865314fcc2c18cb87b6ce3876e" + integrity sha512-fTGYvhe7eTsqq0m664Km0rxKQcqLIGZWZINmy1LU0fu312tay8Mt3Twq2P5Xj1dfDVvvzT1Ql3/FDkiMPJ1MOg== dependencies: babel-runtime "^6.26.0" fbjs "^0.8.16" prop-types "^15.6.0" warning "^3.0.0" -react-hot-loader@4.0.0-beta.18: - version "4.0.0-beta.18" - resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.0.0-beta.18.tgz#5a3d1b5bd813633380b88c0c660019dbf638975d" - dependencies: - fast-levenshtein "^2.0.6" - global "^4.3.0" - hoist-non-react-statics "^2.3.1" - react-stand-in "^4.0.0-beta.18" - react-scrollbar-size@^2.0.2: version "2.1.0" resolved "https://registry.yarnpkg.com/react-scrollbar-size/-/react-scrollbar-size-2.1.0.tgz#105e797135cab92b1f9e16f00071db7f29f80754" + integrity sha512-9dDUJvk7S48r0TRKjlKJ9e/LkLLYgc9LdQR6W21I8ZqtSrEsedPOoMji4nU3DHy7fx2l8YMScJS/N7qiloYzXQ== dependencies: babel-runtime "^6.26.0" prop-types "^15.6.0" react-event-listener "^0.5.1" stifle "^1.0.2" -react-stand-in@^4.0.0-beta.18: - version "4.0.0-beta.21" - resolved "https://registry.yarnpkg.com/react-stand-in/-/react-stand-in-4.0.0-beta.21.tgz#fb694e465cb20fab7f36d3284f82b68bbd7a657e" - dependencies: - shallowequal "^1.0.2" - react-tiny-virtual-list@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/react-tiny-virtual-list/-/react-tiny-virtual-list-2.1.4.tgz#a574c4dfd8ccf462e3a335f665cffbfd08ce6e7d" + integrity sha512-9JvkWliho5SGHlv/uz3MuObUkg60SPvw3Ottvi/n4nl7qzBvxtb9oI8kJqI9sfZYYGy7xQLbTP0vGhqtnhA04Q== dependencies: prop-types "^15.5.7" react-transition-group@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.2.1.tgz#e9fb677b79e6455fd391b03823afe84849df4a10" + integrity sha512-q54UBM22bs/CekG8r3+vi9TugSqh0t7qcEVycaRc9M0p0aCEu+h6rp/RFiW7fHfgd1IKpd9oILFTl5QK+FpiPA== dependencies: chain-function "^1.0.0" classnames "^2.2.5" @@ -3449,25 +4082,20 @@ react-transition-group@^2.2.1: prop-types "^15.5.8" warning "^3.0.0" -react@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-16.2.0.tgz#a31bd2dab89bff65d42134fa187f24d054c273ba" +react@^16.5.2: + version "16.5.2" + resolved "https://registry.yarnpkg.com/react/-/react-16.5.2.tgz#19f6b444ed139baa45609eee6dc3d318b3895d42" + integrity sha512-FDCSVd3DjVTmbEAjUNX6FgfAmQ+ypJfHUsqUJOYNCBUp1h8lqmtC+0mXJ+JjsWx4KAVTkk1vKd1hLQPvEviSuw== dependencies: - fbjs "^0.8.16" loose-envify "^1.1.0" object-assign "^4.1.1" - prop-types "^15.6.0" - -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" + prop-types "^15.6.2" + schedule "^0.5.0" read-pkg@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= dependencies: load-json-file "^2.0.0" normalize-package-data "^2.3.2" @@ -3476,6 +4104,7 @@ read-pkg@^2.0.0: "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3: version "2.3.5" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d" + integrity sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -3488,6 +4117,7 @@ read-pkg@^2.0.0: readdirp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + integrity sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg= dependencies: graceful-fs "^4.1.2" minimatch "^3.0.2" @@ -3497,6 +4127,7 @@ readdirp@^2.0.0: recursive-copy@2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/recursive-copy/-/recursive-copy-2.0.6.tgz#d590f9eb5f165b96a1b80bc8f9cbcb5c6f9c89e9" + integrity sha1-1ZD5618WW5ahuAvI+cvLXG+ciek= dependencies: del "^2.2.0" emitter-mixin "0.0.3" @@ -3509,81 +4140,91 @@ recursive-copy@2.0.6: promise "^7.0.1" slash "^1.0.0" -regenerate@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" +reflect.ownkeys@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" + integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= + +regenerate-unicode-properties@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" + integrity sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.12.0: + version "0.12.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" + integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" +regenerator-transform@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" + integrity sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA== dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" private "^0.1.6" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== dependencies: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -registry-auth-token@^3.0.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" - dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" - -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" +regexpu-core@^4.1.3, regexpu-core@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz#a3744fa03806cffe146dea4421a3e73bdcc47b1d" + integrity sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw== dependencies: - rc "^1.0.1" + regenerate "^1.4.0" + regenerate-unicode-properties "^7.0.0" + regjsgen "^0.4.0" + regjsparser "^0.3.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.0.2" -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" +regjsgen@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.4.0.tgz#c1eb4c89a209263f8717c782591523913ede2561" + integrity sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA== -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" +regjsparser@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.3.0.tgz#3c326da7fcfd69fa0d332575a41c8c0cdf588c96" + integrity sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA== dependencies: jsesc "~0.5.0" remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo= -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= request@2.81.0: version "2.81.0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + integrity sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA= dependencies: aws-sign2 "~0.6.0" aws4 "^1.2.1" @@ -3608,49 +4249,49 @@ request@2.81.0: tunnel-agent "^0.6.0" uuid "^3.0.0" -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= resolve@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" + integrity sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw== + dependencies: + path-parse "^1.0.5" + +resolve@^1.3.2, resolve@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" + integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== dependencies: path-parse "^1.0.5" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - dependencies: - align-text "^0.1.1" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== dependencies: glob "^7.0.5" -rimraf@~2.4.0: - version "2.4.5" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" - dependencies: - glob "^6.0.1" - ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" + integrity sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc= dependencies: hash-base "^2.0.0" inherits "^2.0.1" @@ -3658,39 +4299,60 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= dependencies: aproba "^1.1.1" safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= dependencies: ret "~0.1.10" -schema-utils@^0.4.2: - version "0.4.5" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e" +schedule@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/schedule/-/schedule-0.5.0.tgz#c128fffa0b402488b08b55ae74bb9df55cc29cc8" + integrity sha512-HUcJicG5Ou8xfR//c2rPT0lPIRR09vVvN81T9fqfVgBmhERUbDEQoYKjpBxbueJnCPpSu2ujXzOnRQt6x9o/jw== + dependencies: + object-assign "^4.1.1" + +schema-utils@^0.4.4, schema-utils@^0.4.5: + version "0.4.7" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" + integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== dependencies: ajv "^6.1.0" ajv-keywords "^3.1.0" -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== dependencies: - semver "^5.0.3" + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== + +semver@^5.4.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== send@0.16.1: version "0.16.1" resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3" + integrity sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A== dependencies: debug "2.6.9" depd "~1.1.1" @@ -3709,24 +4371,29 @@ send@0.16.1: serialize-javascript@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.4.0.tgz#7c958514db6ac2443a8abc062dc9f7886a7f6005" + integrity sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU= -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= set-getter@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376" + integrity sha1-12nBgsnVpR9AkUXy+6guXoboA3Y= dependencies: to-object-path "^0.3.0" set-immediate-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= set-value@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" @@ -3736,6 +4403,7 @@ set-value@^0.4.3: set-value@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" @@ -3745,43 +4413,64 @@ set-value@^2.0.0: setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= setprototypeof@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + integrity sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ= sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.10" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.10.tgz#b1fde5cd7d11a5626638a07c604ab909cfa31f9b" + integrity sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA== dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" -shallowequal@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.0.2.tgz#1561dbdefb8c01408100319085764da3fcf83f8f" - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= dependencies: shebang-regex "^1.0.0" shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shell-quote@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== + dependencies: + is-fullwidth-code-point "^2.0.0" snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== dependencies: define-property "^1.0.0" isobject "^3.0.0" @@ -3790,12 +4479,14 @@ snapdragon-node@^2.0.1: snapdragon-util@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== dependencies: kind-of "^3.2.0" snapdragon@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.1.tgz#e12b5487faded3e3dea0ac91e9400bf75b401370" + integrity sha1-4StUh/re0+PeoKyR6UAL91tAE3A= dependencies: base "^0.11.1" debug "^2.2.0" @@ -3809,16 +4500,19 @@ snapdragon@^0.8.1: sntp@1.x.x: version "1.0.9" resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg= dependencies: hoek "2.x.x" source-list-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" + integrity sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A== source-map-resolve@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a" + integrity sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A== dependencies: atob "^2.0.0" decode-uri-component "^0.2.0" @@ -3826,27 +4520,38 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" +source-map-support@~0.5.6: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== dependencies: - source-map "^0.5.6" + buffer-from "^1.0.0" + source-map "^0.6.0" source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - -source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: +source-map@0.5.7, source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== spdx-correct@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" + integrity sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" @@ -3854,10 +4559,12 @@ spdx-correct@^3.0.0: spdx-exceptions@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" + integrity sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg== spdx-expression-parse@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" @@ -3865,16 +4572,19 @@ spdx-expression-parse@^3.0.0: spdx-license-ids@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" + integrity sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== dependencies: extend-shallow "^3.0.0" sshpk@^1.7.0: version "1.13.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" + integrity sha1-US322mKHFEMW3EwY/hzx2UBzm+M= dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -3889,16 +4599,26 @@ sshpk@^1.7.0: ssri@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.2.4.tgz#9985e14041e65fc397af96542be35724ac11da52" + integrity sha512-UnEAgMZa15973iH7cUi0AHjJn1ACDIkaMyZILoqwN6yzt+4P81I8tBc5Hl+qwi5auMplZtPQsHrPBR5vJLcQtQ== dependencies: safe-buffer "^5.1.1" +ssri@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + stackframe@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b" + integrity sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw== static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= dependencies: define-property "^0.2.5" object-copy "^0.1.0" @@ -3906,18 +4626,29 @@ static-extend@^0.1.1: "statuses@>= 1.3.1 < 2": version "1.4.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== statuses@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4= + +std-env@^1.1.0, std-env@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-1.3.1.tgz#4e1758412439e9ece1d437b1b098551911aa44ee" + integrity sha512-KI2F2pPJpd3lHjng+QLezu0eq+QDtXcv1um016mhOPAJFHKL+09ykK5PUBWta2pZDC8BVV0VPya08A15bUXSLQ== + dependencies: + is-ci "^1.1.0" stifle@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/stifle/-/stifle-1.0.4.tgz#8b3bcdf52419b0a9c79e35adadce50123c1d8e99" + integrity sha1-izvN9SQZsKnHnjWtrc5QEjwdjpk= stream-browserify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds= dependencies: inherits "~2.0.1" readable-stream "^2.0.2" @@ -3925,6 +4656,7 @@ stream-browserify@^2.0.1: stream-each@^1.1.0: version "1.2.2" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd" + integrity sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA== dependencies: end-of-stream "^1.1.0" stream-shift "^1.0.0" @@ -3932,6 +4664,7 @@ stream-each@^1.1.0: stream-http@^2.7.2: version "2.8.0" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.0.tgz#fd86546dac9b1c91aff8fc5d287b98fafb41bc10" + integrity sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw== dependencies: builtin-status-codes "^3.0.0" inherits "^2.0.1" @@ -3942,20 +4675,17 @@ stream-http@^2.7.2: stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= string-hash@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" - -string-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac" - dependencies: - strip-ansi "^3.0.0" + integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" @@ -3964,6 +4694,7 @@ string-width@^1.0.1, string-width@^1.0.2: string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" @@ -3971,86 +4702,103 @@ string-width@^2.0.0, string-width@^2.1.1: string_decoder@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.0.tgz#384f322ee8a848e500effde99901bba849c5d403" + integrity sha512-8zQpRF6juocE69ae7CSPmYEGJe4VCXwP6S6dxUWI7i53Gwv54/ec41fiUA+X7BPGGv7fRSQJjBQVa0gomGaOgg== dependencies: safe-buffer "~5.1.0" string_decoder@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + integrity sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ== dependencies: safe-buffer "~5.1.0" stringstream@~0.0.4: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + integrity sha1-TkhM1N5aC7vuGORjB3EKioFiGHg= strip-ansi@3.0.1, strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= dependencies: ansi-regex "^2.0.0" strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= dependencies: ansi-regex "^3.0.0" strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -styled-jsx@2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-2.2.3.tgz#9fe3df55c852388019c3bf4c026bcbf8b3e003de" +styled-jsx@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-3.1.0.tgz#c295e4170298b5bb858f848c4b73e423a73a68f3" + integrity sha512-drcLtuMC9wKhxZ5C7PyGxy9ADWfw7svB8zemWu+zpG8x4n/hih2xQU2U+SG6HF3TjV3tOjRrNIQOV8vUvffifA== dependencies: babel-plugin-syntax-jsx "6.18.0" babel-types "6.26.0" convert-source-map "1.5.1" - source-map "0.6.1" + loader-utils "1.1.0" + source-map "0.7.3" string-hash "1.1.3" - stylis "3.4.5" - stylis-rule-sheet "0.0.7" + stylis "3.5.3" + stylis-rule-sheet "0.0.10" -stylis-rule-sheet@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.7.tgz#5c51dc879141a61821c2094ba91d2cbcf2469c6c" +stylis-rule-sheet@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430" + integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw== -stylis@3.4.5: - version "3.4.5" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.4.5.tgz#d7b9595fc18e7b9c8775eca8270a9a1d3e59806e" +stylis@3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.3.tgz#99fdc46afba6af4deff570825994181a5e6ce546" + integrity sha512-TxU0aAscJghF9I3V9q601xcK3Uw1JbXvpsBGj/HULqexKOKlOEzzlIpLFRbKkCK990ccuxfXUqmPbIIo7Fq/cQ== supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - -supports-color@^4.0.0, supports-color@^4.2.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" - dependencies: - has-flag "^2.0.0" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= supports-color@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0" + integrity sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg== dependencies: has-flag "^3.0.0" -tapable@^0.2.7: - version "0.2.8" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" +table@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" + integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg== + dependencies: + ajv "^6.0.1" + ajv-keywords "^3.0.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + +tapable@^1.0.0, tapable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.0.tgz#0d076a172e3d9ba088fd2272b2668fb8d194b78c" + integrity sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA== tar-pack@^3.4.0: version "3.4.1" resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" + integrity sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg== dependencies: debug "^2.2.0" fstream "^1.0.10" @@ -4064,32 +4812,39 @@ tar-pack@^3.4.0: tar@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE= dependencies: block-stream "*" fstream "^1.0.2" inherits "2" -term-size@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - dependencies: - execa "^0.7.0" - -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" +terser-webpack-plugin@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.0.2.tgz#b62dfdc4e59b0b5093665a765b234645b598d1a5" + integrity sha512-gJyt10fRIVj4dwOylFltjrjtcQzvGGlTF4afmiXJ8X5iul5l5lDDym353KOisKjXh2oRBdwQyv+9hkc0Ar+d9g== dependencies: - thenify ">= 3.1.0 < 4" + cacache "^11.0.2" + find-cache-dir "^2.0.0" + schema-utils "^1.0.0" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + terser "^3.8.1" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" -"thenify@>= 3.1.0 < 4": - version "3.3.0" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" +terser@^3.8.1: + version "3.10.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-3.10.0.tgz#6ae15dafecbd02c9788d5f36d27fca32196b533a" + integrity sha512-hNh2WR3YxtKoY7BNSb3+CJ9Xv9bbUuOU9uriIf2F1tiAYNA4rNy2wWuSDV8iKcag27q65KPJ/sPpMWEh6qttgw== dependencies: - any-promise "^1.0.0" + commander "~2.17.1" + source-map "~0.6.1" + source-map-support "~0.5.6" through2@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4= dependencies: readable-stream "^2.1.5" xtend "~4.0.1" @@ -4097,150 +4852,168 @@ through2@^2.0.0: through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - -time-stamp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357" - -timed-out@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= timers-browserify@^2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.6.tgz#241e76927d9ca05f4d959819022f5b3664b64bae" + integrity sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw== dependencies: setimmediate "^1.0.4" to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= dependencies: kind-of "^3.0.2" to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= dependencies: is-number "^3.0.0" repeat-string "^1.6.1" -to-regex@^3.0.1: +to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== dependencies: define-property "^2.0.2" extend-shallow "^3.0.2" regex-not "^1.0.2" safe-regex "^1.1.0" -touch@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" - dependencies: - nopt "~1.0.10" - tough-cookie@~2.3.0: version "2.3.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + integrity sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA== dependencies: punycode "^1.4.1" trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= + +tslib@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= dependencies: safe-buffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= ua-parser-js@^0.7.9: version "0.7.17" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" + integrity sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g== uglify-es@^3.3.4: version "3.3.9" resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" + integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== dependencies: commander "~2.13.0" source-map "~0.6.1" -uglify-js@^2.8.29: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - -uglifyjs-webpack-plugin@1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.6.tgz#f4ba8449edcf17835c18ba6ae99b9d610857fb19" +uglifyjs-webpack-plugin@^1.2.4: + version "1.3.0" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz#75f548160858163a08643e086d5fefe18a5d67de" + integrity sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw== dependencies: - cacache "^10.0.1" + cacache "^10.0.4" find-cache-dir "^1.0.0" - schema-utils "^0.4.2" + schema-utils "^0.4.5" serialize-javascript "^1.4.0" source-map "^0.6.1" uglify-es "^3.3.4" webpack-sources "^1.1.0" worker-farm "^1.5.2" -uglifyjs-webpack-plugin@^0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" - dependencies: - source-map "^0.5.6" - uglify-js "^2.8.29" - webpack-sources "^1.0.1" - -ui-box@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/ui-box/-/ui-box-1.0.6.tgz#e5940553c06368a0331058235217177647d19b24" +ui-box@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ui-box/-/ui-box-1.4.0.tgz#c146158bb750eef006e78780296fc0a2eff3004b" + integrity sha512-l1rhH+6pRPG5jdHd9qAbKMo0nW9//WDJtqY6WZYk2uiCbfPEbK1oTq6Ly7UXGi887psr8gAsSYfJyyDArYnUxQ== dependencies: - classnames "^2.2.0" + "@emotion/hash" "^0.6.5" glamor "^2.20.0" - inline-style-prefixer "^4.0.0" - prop-types "^15.5.10" + inline-style-prefixer "^4.0.2" + prop-types "^15.6.0" uid-number@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= unfetch@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-3.0.0.tgz#8d1e0513a4ecd0e5ff2d41a6ba77771aae8b6482" + integrity sha1-jR4FE6Ts0OX/LUGmund3Gq6LZII= + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4" + integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" + integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg== union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= dependencies: arr-union "^3.1.0" get-value "^2.0.6" @@ -4250,63 +5023,46 @@ union-value@^1.0.0: unique-filename@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" + integrity sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM= dependencies: unique-slug "^2.0.0" unique-slug@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" + integrity sha1-22Z258fMBimHj/GWCXx4hVrp9Ks= dependencies: imurmurhash "^0.1.4" -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - dependencies: - crypto-random-string "^1.0.0" - unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= dependencies: has-value "^0.3.1" isobject "^3.0.0" -unzip-response@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" - upath@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/upath/-/upath-1.0.4.tgz#ee2321ba0a786c50973db043a50b7bcba822361d" + integrity sha512-d4SJySNBXDaQp+DPrziv3xGS6w3d2Xt69FijJr86zMPBy23JEloMCEOUBBzuN7xCtjLCnmB9tI/z7SBCahHBOw== -update-notifier@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.3.0.tgz#4e8827a6bb915140ab093559d7014e3ebb837451" - dependencies: - boxen "^1.2.1" - chalk "^2.0.1" - configstore "^3.0.0" - import-lazy "^2.1.0" - is-installed-globally "^0.1.0" - is-npm "^1.0.0" - latest-version "^3.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - dependencies: - prepend-http "^1.0.1" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= url@0.11.0, url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= dependencies: punycode "1.3.2" querystring "0.2.0" @@ -4314,6 +5070,7 @@ url@0.11.0, url@^0.11.0: use@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/use/-/use-2.0.2.tgz#ae28a0d72f93bf22422a18a2e379993112dec8e8" + integrity sha1-riig1y+TvyJCKhii43mZMRLeyOg= dependencies: define-property "^0.2.5" isobject "^3.0.0" @@ -4322,24 +5079,37 @@ use@^2.0.0: util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" util@0.10.3, util@^0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= dependencies: inherits "2.0.1" -uuid@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" - uuid@^3.0.0: version "3.2.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" + integrity sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA== + +uuid@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== validate-npm-package-license@^3.0.1: version "3.0.3" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" + integrity sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g== dependencies: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" @@ -4347,6 +5117,7 @@ validate-npm-package-license@^3.0.1: verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" @@ -4355,206 +5126,194 @@ verror@1.10.0: vm-browserify@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= dependencies: indexof "0.0.1" -walk@2.3.9: - version "2.3.9" - resolved "https://registry.yarnpkg.com/walk/-/walk-2.3.9.tgz#31b4db6678f2ae01c39ea9fb8725a9031e558a7b" - dependencies: - foreachasync "^3.0.0" - warning@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" + integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w= dependencies: loose-envify "^1.0.0" -watchpack@^1.4.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.5.0.tgz#231e783af830a22f8966f65c4c4bacc814072eed" +watchpack@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" + integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== dependencies: chokidar "^2.0.2" graceful-fs "^4.1.2" neo-async "^2.5.0" -webpack-dev-middleware@1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz#d34efefb2edda7e1d3b5dbe07289513219651709" +webpack-dev-middleware@3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz#1132fecc9026fd90f0ecedac5cbff75d1fb45890" + integrity sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA== dependencies: memory-fs "~0.4.1" - mime "^1.3.4" - path-is-absolute "^1.0.0" + mime "^2.3.1" range-parser "^1.0.3" - time-stamp "^2.0.0" + webpack-log "^2.0.0" -webpack-hot-middleware@2.21.0: - version "2.21.0" - resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.21.0.tgz#7b3c113a7a4b301c91e0749573c7aab28b414b52" +webpack-hot-middleware@2.22.3: + version "2.22.3" + resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.22.3.tgz#ae6025d57d656085c5b716b44e0bc0f796787776" + integrity sha512-mrG3bJGX4jgWbrpY0ghIpPgCmNhZziFMBJBmZfpIe6K/P1rWPkdkbGihbCUIufgQ8ruX4txE5/CKSeFNzDcYOw== dependencies: ansi-html "0.0.7" html-entities "^1.2.0" querystring "^0.2.0" strip-ansi "^3.0.0" +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-merge@^4.1.0: + version "4.1.4" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.4.tgz#0fde38eabf2d5fd85251c24a5a8c48f8a3f4eb7b" + integrity sha512-TmSe1HZKeOPey3oy1Ov2iS3guIZjWvMT2BBJDzzT5jScHTjVC3mpjJofgueEzaEd6ibhxRDD6MIblDr8tzh8iQ== + dependencies: + lodash "^4.17.5" + +webpack-sources@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.2.0.tgz#18181e0d013fce096faf6f8e6d41eeffffdceac2" + integrity sha512-9BZwxR85dNsjWz3blyxdOhTgtnQvv3OEs5xofI0wPYTwu5kaWxS08UuD1oI7WLBLpRO+ylf0ofnXLXWmGb2WMw== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + webpack-sources@^1.0.1, webpack-sources@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" + integrity sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw== dependencies: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.10.0.tgz#5291b875078cf2abf42bdd23afe3f8f96c17d725" +webpack-sources@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" + integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== dependencies: - acorn "^5.0.0" - acorn-dynamic-import "^2.0.0" - ajv "^5.1.5" - ajv-keywords "^2.0.0" - async "^2.1.2" - enhanced-resolve "^3.4.0" - escope "^3.6.0" - interpret "^1.0.0" - json-loader "^0.5.4" - json5 "^0.5.1" + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@4.20.2: + version "4.20.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.20.2.tgz#89f6486b6bb276a91b0823453d377501fc625b5a" + integrity sha512-75WFUMblcWYcocjSLlXCb71QuGyH7egdBZu50FtBGl2Nso8CK3Ej+J7bTZz2FPFq5l6fzCisD9modB7t30ikuA== + dependencies: + "@webassemblyjs/ast" "1.7.8" + "@webassemblyjs/helper-module-context" "1.7.8" + "@webassemblyjs/wasm-edit" "1.7.8" + "@webassemblyjs/wasm-parser" "1.7.8" + acorn "^5.6.2" + acorn-dynamic-import "^3.0.0" + ajv "^6.1.0" + ajv-keywords "^3.1.0" + chrome-trace-event "^1.0.0" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.0" + json-parse-better-errors "^1.0.2" loader-runner "^2.3.0" loader-utils "^1.1.0" memory-fs "~0.4.1" + micromatch "^3.1.8" mkdirp "~0.5.0" + neo-async "^2.5.0" node-libs-browser "^2.0.0" - source-map "^0.5.3" - supports-color "^4.2.1" - tapable "^0.2.7" - uglifyjs-webpack-plugin "^0.4.6" - watchpack "^1.4.0" - webpack-sources "^1.0.1" - yargs "^8.0.2" + schema-utils "^0.4.4" + tapable "^1.1.0" + uglifyjs-webpack-plugin "^1.2.4" + watchpack "^1.5.0" + webpack-sources "^1.3.0" + +webpackbar@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-2.6.3.tgz#4f2d0078375acfe95c0e55227771a2ed98ecc5c9" + integrity sha512-UlTm7Yz4meJV0THhZMrgRTE9v/vZ0xfUoJ/eOig98TvzsqNiW+FLSv5WaZeML3uJUPrMQ6K5jo1FJJFXNCc8+g== + dependencies: + chalk "^2.4.1" + consola "^1.4.3" + figures "^2.0.0" + loader-utils "^1.1.0" + lodash "^4.17.10" + log-update "^2.3.0" + pretty-time "^1.1.0" + schema-utils "^1.0.0" + std-env "^1.3.1" + table "^4.0.3" whatwg-fetch@>=0.10.0: version "2.0.3" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ= which@^1.2.9: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + integrity sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg== dependencies: isexe "^2.0.0" wide-align@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + integrity sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w== dependencies: string-width "^1.0.2" -widest-line@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273" - dependencies: - string-width "^2.1.1" - -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - worker-farm@^1.5.2: version "1.5.4" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.4.tgz#4debbe46b40edefcc717ebde74a90b1ae1e909a1" + integrity sha512-ITyClEvcfv0ozqJl1vmWFWhvI+OIrkbInYqkEPE50wFPXj8J9Gd3FYf8+CkZJXJJsQBYe+2DvmoK9Zhx5w8W+w== dependencies: errno "~0.1.7" xtend "~4.0.1" -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" +wrap-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" + integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" + string-width "^2.1.1" + strip-ansi "^4.0.0" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write-file-webpack-plugin@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/write-file-webpack-plugin/-/write-file-webpack-plugin-4.2.0.tgz#7bd18547eaa0ea0b23992fb1e0322e5431d339ef" +write-file-webpack-plugin@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/write-file-webpack-plugin/-/write-file-webpack-plugin-4.3.2.tgz#7b07b3be009be1da668edf46cfb8a357b404b912" + integrity sha512-xYMlbV2vPXa1MDQ0FYQk/45ELHgLph+vAdxjxWNOVLAZFVpkNadoQralTc1Wiw0wS1lrJhNOMSK6KMC3YdCOLw== dependencies: - chalk "^1.1.1" - debug "^2.6.8" - filesize "^3.2.1" - lodash "^4.5.1" + chalk "^2.4.0" + debug "^3.1.0" + filesize "^3.6.1" + lodash "^4.17.5" mkdirp "^0.5.1" - moment "^2.11.2" - -xdg-basedir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" - -xss-filters@1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/xss-filters/-/xss-filters-1.2.7.tgz#59fa1de201f36f2f3470dcac5f58ccc2830b0a9a" + moment "^2.22.1" xtend@^4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - -yargs-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" - dependencies: - camelcase "^4.1.0" - -yargs@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" - dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.0" - -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= diff --git a/package.json b/package.json index 0ef514769..f3d303956 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "evergreen-ui", - "version": "3.2.7", + "version": "4.0.0-45", "description": "🌲 React UI Kit by Segment 🌲", "contributors": [ "Jeroen Ransijn (https://jssr.design/)", @@ -24,14 +24,12 @@ "scripts": { "test": "xo && ava", "prepublishOnly": "rm -rf esm commonjs && yarn run build", - "precommit": "lint-staged", - "dev": "(export EG_PORT=6006 ; if [ $PORT ] ; then start-storybook -p $PORT ; else start-storybook -p $EG_PORT ; fi)", + "dev": "start-storybook -p 6006", "create-package": "./tools/create-package.js", "create-package:components": "./tools/create-package-components.js", - "create-docs-template": "./tools/create-docs-template.js", "build-storybook": "build-storybook -s .storybook/static -o .out", - "build-commonjs": "BABEL_ENV=commonjs babel src --out-dir commonjs --ignore stories,test,docs --source-maps inline", - "build-esm": "BABEL_ENV=esm babel src --out-dir esm --ignore stories,test,docs --source-maps inline", + "build-commonjs": "BABEL_ENV=commonjs babel src --out-dir commonjs --ignore '**/stories','**/test' --source-maps inline", + "build-esm": "BABEL_ENV=esm babel src --out-dir esm --ignore '**/stories','**/test' --source-maps inline", "build": "concurrently --names 'commonjs,esm' 'yarn run build-commonjs' 'yarn run build-esm'", "clean": "git clean -Xdf", "release": "np --no-publish", @@ -41,60 +39,67 @@ "node": ">=8" }, "dependencies": { + "@babel/runtime": "^7.1.2", + "@blueprintjs/icons": "^3.2.0", "arrify": "^1.0.1", + "classnames": "^2.2.6", "dom-helpers": "^3.2.1", - "downshift": "^1.16.0", + "downshift": "^1.31.16", "fuzzaldrin-plus": "^0.6.0", "glamor": "^2.20.40", "lodash.debounce": "^4.0.8", "lodash.mapvalues": "^4.6.0", - "object-values": "^1.0.0", - "prop-types": "^15.0.0", + "prop-types": "^15.6.2", "react-scrollbar-size": "^2.0.2", "react-tiny-virtual-list": "^2.1.4", - "react-transition-group": "^2.2.1", - "ui-box": "^1.1.0" + "react-transition-group": "^2.5.0", + "tinycolor2": "^1.4.1", + "ui-box": "^1.4.0" }, "peerDependencies": { - "react": "^16.0.0", - "react-dom": "^16.0.0" + "react": "^16.3.0", + "react-dom": "^16.3.0" }, "devDependencies": { + "@babel/cli": "^7.1.2", + "@babel/core": "^7.1.2", + "@babel/plugin-proposal-class-properties": "^7.1.0", + "@babel/plugin-transform-runtime": "^7.1.0", + "@babel/preset-env": "^7.1.0", + "@babel/preset-react": "^7.0.0", + "@babel/register": "^7.0.0", "@reactions/component": "^2.0.2", - "@storybook/addon-actions": "^3.2.17", - "@storybook/addon-links": "^3.2.17", - "@storybook/addon-options": "^3.2.17", - "@storybook/addons": "^3.2.17", - "@storybook/react": "^3.2.17", - "ava": "^0.24.0", - "babel-cli": "^6.26.0", - "babel-core": "^6.26.0", - "babel-eslint": "^8.0.3", - "babel-preset-env": "^1.6.1", - "babel-preset-react": "^6.24.1", - "babel-preset-stage-0": "^6.24.1", - "babel-register": "^6.26.0", - "concurrently": "^4.0.0", - "enzyme": "^3.2.0", - "enzyme-adapter-react-16": "^1.1.1", - "eslint-config-prettier": "^2.9.0", - "eslint-config-xo-react": "^0.14.0", - "eslint-plugin-react": "^7.5.1", - "execa": "^0.8.0", - "file-loader": "^1.1.5", - "fs-extra": "^4.0.3", - "husky": "^0.14.3", - "lint-staged": "^7.2.2", - "prettier": "^1.9.1", - "react": "^16.2.0", - "react-chromatic": "^0.7.10", - "react-dom": "^16.2.0", - "react-test-renderer": "^16.2.0", - "sinon": "^4.4.2", - "size-limit": "^0.14.0", + "@storybook/addon-actions": "^3.4.11", + "@storybook/addon-links": "^3.4.11", + "@storybook/addon-options": "^3.4.11", + "@storybook/addons": "^3.4.11", + "@storybook/react": "^3.4.11", + "ava": "1.0.0-rc.1", + "babel-core": "7.0.0-bridge.0", + "babel-eslint": "^10.0.1", + "babel-plugin-add-react-displayname": "^0.0.5", + "concurrently": "^4.0.1", + "enzyme": "^3.7.0", + "enzyme-adapter-react-16": "^1.6.0", + "eslint-config-prettier": "^3.1.0", + "eslint-config-xo-react": "^0.17.0", + "eslint-plugin-react": "^7.11.1", + "execa": "^1.0.0", + "faker": "^4.1.0", + "file-loader": "^2.0.0", + "fs-extra": "^7.0.0", + "husky": "^1.1.2", + "lint-staged": "^7.3.0", + "prettier": "^1.14.3", + "react": "^16.5.2", + "react-chromatic": "^0.8.4", + "react-dom": "^16.5.2", + "react-test-renderer": "^16.5.2", + "sinon": "^7.0.0", + "size-limit": "^0.20.1", "starwars-names": "^1.6.0", - "url-loader": "^0.6.2", - "xo": "^0.18.2" + "url-loader": "^1.1.2", + "xo": "^0.23.0" }, "xo": { "parser": "babel-eslint", @@ -130,9 +135,17 @@ "react/jsx-no-bind": [ "off" ], + "react/jsx-sort-props": [ + "off" + ], "unicorn/filename-case": [ "off" ] + }, + "settings": { + "react": { + "version": "^16.3.0" + } } }, "prettier": { @@ -155,15 +168,19 @@ "**/test/**/*.js" ], "require": [ - "babel-register", + "@babel/register", "./tools/test-setup" - ], - "babel": "inherit" + ] }, "size-limit": [ { "path": "commonjs/index.js", - "limit": "70 KB" + "limit": "200 KB" + } + ], + "husky": { + "hooks": { + "pre-commit": "lint-staged" } - ] + } } diff --git a/src/alert/docs/examples/alert-card-with-children.example b/src/alert/docs/examples/alert-card-with-children.example deleted file mode 100644 index f8b7b966d..000000000 --- a/src/alert/docs/examples/alert-card-with-children.example +++ /dev/null @@ -1,46 +0,0 @@ - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. - - diff --git a/src/alert/docs/examples/alert-card.example b/src/alert/docs/examples/alert-card.example deleted file mode 100644 index 3fa61357f..000000000 --- a/src/alert/docs/examples/alert-card.example +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - diff --git a/src/alert/docs/examples/alert-default-with-children.example b/src/alert/docs/examples/alert-default-with-children.example deleted file mode 100644 index 2876c33a2..000000000 --- a/src/alert/docs/examples/alert-default-with-children.example +++ /dev/null @@ -1,41 +0,0 @@ - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. - - diff --git a/src/alert/docs/examples/alert-default.example b/src/alert/docs/examples/alert-default.example deleted file mode 100644 index 4a9c533c0..000000000 --- a/src/alert/docs/examples/alert-default.example +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - diff --git a/src/alert/docs/examples/inline-alert.example b/src/alert/docs/examples/inline-alert.example deleted file mode 100644 index fd95c7b7a..000000000 --- a/src/alert/docs/examples/inline-alert.example +++ /dev/null @@ -1,14 +0,0 @@ - - - Hooray! You did it. Your Source is now sending data. - - - Changes will affect all Warehouses. - - - We weren’t able to save your changes. - - - There are over 200 integrations available. - - diff --git a/src/alert/docs/index.js b/src/alert/docs/index.js deleted file mode 100644 index 54a518555..000000000 --- a/src/alert/docs/index.js +++ /dev/null @@ -1,116 +0,0 @@ -import React from 'react' -import Box from 'ui-box' -import Alert from '../src/Alert' -import InlineAlert from '../src/InlineAlert' -import { Button } from '../../buttons' -import { Paragraph } from '../../typography' - -/* eslint-disable import/no-unresolved, import/no-webpack-loader-syntax */ -import sourceAlert from '!raw-loader!../src/Alert' -import sourceInlineAlert from '!raw-loader!../src/InlineAlert' -/* eslint-enable import/no-unresolved, import/no-webpack-loader-syntax */ - -/** - * Code examples - */ -import exampleAlertDefault from './examples/alert-default.example' -import exampleAlertCard from './examples/alert-card.example' -import exampleInlineAlert from './examples/inline-alert.example' - -const title = 'Alert' -const subTitle = 'A component to give feedback about an action or state.' - -const designGuidelines = ( -
-

- The Alert component is used to give feedback to the user - about an action or state. There a couple of different types of alerts. -

-

Types of Alerts

-
    -
  • default
  • -
  • success
  • -
  • info
  • -
  • danger
  • -
  • warning
  • -
-
-) - -const appearanceOptions = null - -const scope = { - Box, - Alert, - InlineAlert, - Paragraph, - Button -} - -const components = [ - { - name: 'Alert', - source: sourceAlert, - description: ( -

- The Alert component can have a title and children. There - are props to configure the icon and the border on the left. -

- ), - examples: [ - { - title: 'Default Alert', - description: ( -

- The default behavior of the alert present itself in a box with a - border. It is useful inside of a card or pane. -

- ), - codeText: exampleAlertDefault, - scope - }, - { - title: 'Alert Card Appearance', - description: ( -

- The card appearance is useful if the alert is presented outside of a - card or pane. This appearance is quite heavy and should be avoided. -

- ), - codeText: exampleAlertCard, - scope - } - ] - }, - { - name: 'InlineAlert', - source: sourceInlineAlert, - description: ( -

- The InlineAlert is useful when not showing a title and - space is limited. In most cases you should use this component instead of - the more bulky Alert. -

- ), - examples: [ - { - title: 'Inline Alert', - description: ( -

- Always pass a type property. -

- ), - codeText: exampleInlineAlert, - scope - } - ] - } -] - -export default { - title, - subTitle, - designGuidelines, - appearanceOptions, - components -} diff --git a/src/alert/index.js b/src/alert/index.js index 14d29f2f4..a52845db3 100644 --- a/src/alert/index.js +++ b/src/alert/index.js @@ -1,2 +1,2 @@ -export Alert from './src/Alert' -export InlineAlert from './src/InlineAlert' +export { default as Alert } from './src/Alert' +export { default as InlineAlert } from './src/InlineAlert' diff --git a/src/alert/src/Alert.js b/src/alert/src/Alert.js index 981109283..15df14d73 100644 --- a/src/alert/src/Alert.js +++ b/src/alert/src/Alert.js @@ -1,74 +1,13 @@ import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import { spacing, dimensions, position, layout } from 'ui-box' -import { colors } from '../../colors' +import { withTheme } from '../../theme' import { Pane } from '../../layers' -import { Text } from '../../typography' +import { Heading, Paragraph } from '../../typography' import { IconButton } from '../../buttons' -import { - CheckCircleIcon, - DangerIcon, - QuestionIcon, - WarningIcon -} from '../../icons' - -const getColorForType = type => { - switch (type) { - case 'success': - return colors.green['500'] - case 'question': - default: - return colors.blue['500'] - case 'danger': - return colors.red['500'] - case 'warning': - return colors.yellow['500'] - } -} - -const getIconForType = type => { - const iconProps = { - size: 22, - iconSize: 14, - color: getColorForType(type) - } - - switch (type) { - case 'success': - return - case 'question': - default: - return - case 'danger': - return - case 'warning': - return - } -} +import { Icon } from '../../icon' -const getStyle = ({ type }) => ({ - '&:before': { - content: '""', - width: 3, - height: '100%', - position: 'absolute', - top: 0, - left: 0, - backgroundColor: getColorForType(type) - } -}) - -const AlertAppearances = { - default: { - boxShadow: `inset 0 0 0 1px ${colors.neutral['20A']}` - }, - card: { - elevation: 1, - borderRadius: 3 - } -} - -export default class Alert extends PureComponent { +class Alert extends PureComponent { static propTypes = { /** * Composes some Box APIs. @@ -84,15 +23,10 @@ export default class Alert extends PureComponent { children: PropTypes.oneOfType([PropTypes.string, PropTypes.node]), /** - * The type of the alert. + * The intent of the alert. */ - type: PropTypes.oneOf([ - 'default', - 'success', - 'warning', - 'danger', - 'question' - ]), + intent: PropTypes.oneOf(['none', 'success', 'warning', 'danger']) + .isRequired, /** * The title of the alert. @@ -122,21 +56,34 @@ export default class Alert extends PureComponent { /** * The appearance of the alert. */ - appearance: PropTypes.oneOf(['default', 'card']) + appearance: PropTypes.oneOf(['default', 'card']), + + /** + * Theme provided by ThemeProvider. + */ + theme: PropTypes.object.isRequired } static defaultProps = { - type: 'default', + intent: 'none', hasTrim: true, hasIcon: true, isRemoveable: false, appearance: 'default' } + getIconForIntent = intent => { + const { theme } = this.props + + return + } + render() { const { + theme, + title, - type, + intent, hasTrim, hasIcon, children, @@ -146,15 +93,18 @@ export default class Alert extends PureComponent { ...props } = this.props - let style = {} - if (hasTrim && type !== 'default') { - style = getStyle({ type }) - } - - const appearanceProps = AlertAppearances[appearance] + /** + * Note that Alert return a className and additional properties. + */ + const { className, ...themeProps } = theme.getAlertProps({ + appearance, + intent, + hasTrim + }) return ( - {hasIcon && - type !== 'default' && ( - {getIconForType(type)} - )} + {hasIcon && ( + + {this.getIconForIntent(intent)} + + )} - {title} - + {typeof children === 'string' ? ( - + {children} - + ) : ( children )} {isRemoveable && ( - + )} @@ -204,3 +166,5 @@ export default class Alert extends PureComponent { ) } } + +export default withTheme(Alert) diff --git a/src/alert/src/InlineAlert.js b/src/alert/src/InlineAlert.js index d76913c22..cfb16fa10 100644 --- a/src/alert/src/InlineAlert.js +++ b/src/alert/src/InlineAlert.js @@ -1,51 +1,12 @@ import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import { spacing, dimensions, position, layout } from 'ui-box' -import { colors } from '../../colors' +import { withTheme } from '../../theme' import { Pane } from '../../layers' import { Text } from '../../typography' -import { - CheckCircleIcon, - DangerIcon, - QuestionIcon, - WarningIcon -} from '../../icons' +import { Icon } from '../../icon' -const getColorForType = type => { - switch (type) { - case 'success': - return colors.green['500'] - case 'question': - default: - return colors.blue['500'] - case 'danger': - return colors.red['500'] - case 'warning': - return colors.yellow['500'] - } -} - -const getIconForType = type => { - const iconProps = { - size: 22, - iconSize: 14, - color: getColorForType(type) - } - - switch (type) { - case 'success': - return - case 'question': - default: - return - case 'danger': - return - case 'warning': - return - } -} - -export default class InlineAlert extends PureComponent { +class InlineAlert extends PureComponent { static propTypes = { /** * Composes some Box APIs. @@ -61,15 +22,10 @@ export default class InlineAlert extends PureComponent { children: PropTypes.oneOfType([PropTypes.string, PropTypes.node]), /** - * The type of the alert. This should always be set explicitly. + * The intent of the alert. This should always be set explicitly. */ - type: PropTypes.oneOf([ - 'default', - 'success', - 'warning', - 'danger', - 'question' - ]), + intent: PropTypes.oneOf(['none', 'success', 'warning', 'danger']) + .isRequired, /** * When true, show a icon on the left matching the type. @@ -80,26 +36,36 @@ export default class InlineAlert extends PureComponent { /** * The size of the Text. */ - size: PropTypes.number + size: PropTypes.number, + + /** + * Theme provided by ThemeProvider. + */ + theme: PropTypes.object.isRequired } static defaultProps = { - type: 'default', + intent: 'none', hasIcon: true, size: 400 } + getIconForIntent = intent => { + const { theme } = this.props + + return + } + render() { - const { children, type, hasIcon, size, ...props } = this.props + const { theme, children, intent, hasIcon, size, ...props } = this.props return ( - {hasIcon && - type !== 'default' && ( - - {getIconForType(type)} - - )} + {hasIcon && ( + + {this.getIconForIntent(intent)} + + )} {children} @@ -107,3 +73,5 @@ export default class InlineAlert extends PureComponent { ) } } + +export default withTheme(InlineAlert) diff --git a/src/alert/stories/index.stories.js b/src/alert/stories/index.stories.js index a193f2226..e6acaf3f5 100644 --- a/src/alert/stories/index.stories.js +++ b/src/alert/stories/index.stories.js @@ -1,7 +1,7 @@ import { storiesOf } from '@storybook/react' import React from 'react' import Box from 'ui-box' -import { InlineAlert, Alert } from '../../alert' +import { InlineAlert, Alert } from '..' import { Heading } from '../../typography' storiesOf('alert', module) @@ -23,27 +23,21 @@ storiesOf('alert', module) - ))} @@ -62,7 +56,7 @@ storiesOf('alert', module) Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do @@ -71,7 +65,7 @@ storiesOf('alert', module) Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do @@ -80,21 +74,12 @@ storiesOf('alert', module) Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. - ))} @@ -111,16 +96,16 @@ storiesOf('alert', module) InlineAlert component - + Hooray! You did it. Your Source is now sending data. - + Changes will affect all Warehouses. - + We weren’t able to save your changes. - + There are over 200 integrations available. diff --git a/src/alert/test/index.js b/src/alert/test/index.js index 15e4edbe2..b1e42ef40 100644 --- a/src/alert/test/index.js +++ b/src/alert/test/index.js @@ -2,7 +2,6 @@ import React from 'react' import test from 'ava' import render from 'react-test-renderer' import { shallow } from 'enzyme' -import { CheckCircleIcon } from '../../icons' import Alert from '../src/Alert' test('basic snapshot', t => { @@ -13,12 +12,12 @@ test('basic snapshot', t => { test('outputs title', t => { const component = shallow() - t.true(component.contains('Test title')) + t.true(component.html().includes('Test title')) }) test('outputs children', t => { const component = shallow(Test content) - t.true(component.contains('Test content')) + t.true(component.html().includes('Test content')) }) test('type snapshot', t => { @@ -39,18 +38,6 @@ test('hasTrim=false snapshot', t => { t.snapshot(tree) }) -test('outputs icon (hasIcon=true)', t => { - const component = shallow() - t.true(component.containsMatchingElement()) -}) - -test('does not output icon (hasIcon=false)', t => { - const component = shallow( - - ) - t.false(component.containsMatchingElement()) -}) - test('appearance snapshot', t => { const component = const tree = render.create(component).toJSON() diff --git a/src/alert/test/snapshots/index.js.md b/src/alert/test/snapshots/index.js.md index 6d15bcea0..be8d7c898 100644 --- a/src/alert/test/snapshots/index.js.md +++ b/src/alert/test/snapshots/index.js.md @@ -9,9 +9,31 @@ Generated by [AVA](https://ava.li). > Snapshot 1
+
+ + + info-sign + + + +
@@ -19,7 +41,7 @@ Generated by [AVA](https://ava.li). className="📦flx_1 📦box-szg_border-box css-nil" >

Test title

@@ -32,9 +54,31 @@ Generated by [AVA](https://ava.li). > Snapshot 1
+
+ + + info-sign + + + +
@@ -42,7 +86,7 @@ Generated by [AVA](https://ava.li). className="📦flx_1 📦box-szg_border-box css-nil" >

A simple general message

@@ -55,9 +99,31 @@ Generated by [AVA](https://ava.li). > Snapshot 1
+
+ + + info-sign + + + +
@@ -65,7 +131,7 @@ Generated by [AVA](https://ava.li). className="📦flx_1 📦box-szg_border-box css-nil" >

Test title

@@ -78,9 +144,31 @@ Generated by [AVA](https://ava.li). > Snapshot 1
+
+ + + info-sign + + + +
@@ -88,7 +176,7 @@ Generated by [AVA](https://ava.li). className="📦flx_1 📦box-szg_border-box css-nil" >

Test title

@@ -101,33 +189,31 @@ Generated by [AVA](https://ava.li). > Snapshot 1
- - - - - - - + + info-sign + + +

Test title

diff --git a/src/alert/test/snapshots/index.js.snap b/src/alert/test/snapshots/index.js.snap index 71c3a90558bb998ed3f3ad666676163eafbd78a9..3ca4bc6eee6a7cc2b226321ada31aaf52eca174f 100644 GIT binary patch literal 1482 zcmV;*1vUCXRzV7StSw=t>4!e| zQ?f^w<2l@yPp+4F0qD+YybD%uiPpA;P-DyUyvUca{%-HT3Ga z?H^LJwziIt%Ld)Ixi0ut*Rda8Xy|=!3pHyyZy}_`y`pE&s_20wkA3ZWTo}8bnzbkI zAmo!h>sMS5o@{^WWLyw;pI%JO+L!Mp#7R&fl-5%(pXQmA(iW3dMw58KpbkobhetpR zyad*P4IqM>o;pQ2UFU6}o_gw89$6!y9kq&HZyllY33U*91Em|y`Ef5YahN4M+9tMT`*? zjcbp~hGbSG(@~|J>EPnBC`xKURcB#UN;f!7Qg}m7XPb$7O5vi4)RFx<16X)2b zT+z&DL`e#3vq6RxG*zyw87;FhqlYH$UpuDfPicZ`TxCczfz_Ka+E&mH2EktN7ie@5 z@}SE~sGg1$CDb`_GX%uTKnIvL-ek{aO(scXvQ4SYWwQ7MO2vHX z#bt|p{zrogoAC#qTw#%J7IGgZd%fpnlH+#2jk1bwW(C6s2^INKU- z3AKje!E`9jrrEBdk*lM!qCDF+{(7sD(vq4K#YuPEm5H_@8(DwYFYuEu`?e)MT~4GF z$rqDUN#hk?Leh0UCQa{Fa%>~HH<0zlide;{YT&+-#-Eia(;kZ(T*&V?FBO%+RUjX( z7#gFe1dj1D{^o)%qI`mjgu{Ag_I)EHm88Z6f=$8Dm2Tgwo3~0rz*^7-)`QnT6q?vn zihVz_?EA;KeVrBi7DpJJDJ#Mw@@h=dvd?iN#Ci`1f(L90`ZL6T4o1Q8QUtxA>;!Gh zsi5~^w1Z$690xyuJ7LEs0B=*!uOt3VumkKWMbKv~LEq&r7eTL{5kYU9JwXql>rwEF zZ9)Hr7H5EHQ_ww#@12IA4xR}Wb{OGai*A0l@1bRVVDSo}+ zC^x?@nNz>Mg3-Fc7SIO$pU!O<(Y7hg7Qv7@$0=a;@4+p&#yh` zx)*$G+pqi4;t*hM`gJAZxoP;d8!?-~AlO^+YsIfN{n}TGUyoRRy=cd;=O;VMvf+r< z77Ue>Z6laN(7MnHE{wu&jKXiO+0X$ zM#1;s6gch7nt3Hi*)()N;&*~Q;L}nJeaSL(ux$R@tjvg^x6PiRzeCq2z@N4aeI6|? k0o|sd-$nfHX&8DGF~`C0;B3Xv|6fD@3&fyv?*k?P0J`DjD*ylh literal 1264 zcmV4mXnK*Y|(_ zyZ7Gz|9kKEPcE+@gktD!@$$O^mrh*x@ZpbEcYXh@gOU5X6hTOT@rzTJx&6+;rRA^Z zFTeFM_Pq80LRSSo_v&q_H)`MfbnNyw-#dvt@7^JV_Qj68w)jl`{O(7;i|*A|9>kva zu2F=}E*?K}MSr5Q{})5goxZpWd)|9@A|#oLD9cBo%c^%+CkMG)5ia(HZ>&csK{R09e|9N-3PmG0CSAZ$>44XnoEVRY@dl zN4LZ#Db)jh7FN>$Gl1u%@PH%X0e{&+!1uc`1hrA_7UMs5E z$w@vZnl4_Ws*-LTtURd{454Nc39rj60==Yv9GP$kw{?{yNMfSlD+)E?o7twhp0CX% z-lM|}CV&H80-OLm*Qv}UZ>#6)G6(A`j6BZTQvByPo8pzElb+R5?W+DCmkc$M#+8a*jv1t4G*4>-YKfu3{4v|UW&$=yen&_$BJn&)1stF zj>ZZWF-4K9I<*9KJm>T*7XW^RxDdg0HfGO1J;ZP)+Y=|4=lkcBDOP5nvZ zZD#)xY{fF*N5Id3Yk;vhLXQD-z;VE0+}9j07XrH+3*Y7CxWCKsVByW1jQO1beb#Yc zTlTp01a9mxs0rzN-3T5ET#c7aT6v^YZ4#f56S9(lci_fY#mosKWER{U9|5ug7kjHk z_LQyZ&Ewc>JCswWOoOw`wa(&kD_sQwBE7!8Y)u#e@_Jgx8}`V%&T+yy-?E>ak`sGU z;~CjawBAl}x1Fm05zi)GOWbytsKZU!EthkWJ)3R&2joYsk6_VOF z`E=SymM3c6=Z)_3#x3!@aVLC(xM#c18@EW^?~1xB>aM7}qMqNHs84qw>OXu@D@J+B zN*4c5s?I_Tsb4?@VqV>wQE5UC--tU0F09UqF2@c)RO7J?Y_BP-Y;LO%4!ODME a3EZC$Q-A}2!`({YG4wC-(IC967ytnDA8Ahj diff --git a/src/autocomplete/docs/examples/allOptions.example b/src/autocomplete/docs/examples/allOptions.example deleted file mode 100644 index 7ac2b71b5..000000000 --- a/src/autocomplete/docs/examples/allOptions.example +++ /dev/null @@ -1,32 +0,0 @@ - console.log(changedItem)} - items={items} -> - {({ - key, - getInputProps, - getButtonProps, - getRef, - inputValue, - openMenu, - toggleMenu - }) => ( - getRef(ref)} - display="flex" - > - - - - )} - diff --git a/src/autocomplete/docs/examples/default-basic.example b/src/autocomplete/docs/examples/default-basic.example deleted file mode 100644 index ebcf6c9f2..000000000 --- a/src/autocomplete/docs/examples/default-basic.example +++ /dev/null @@ -1,17 +0,0 @@ - console.log(changedItem)} - items={items} -> - {(props) => { - const { getInputProps, getRef, inputValue } = props - return ( - - ) - }} - diff --git a/src/autocomplete/docs/examples/default-with-children-prop.example b/src/autocomplete/docs/examples/default-with-children-prop.example deleted file mode 100644 index 361f6c5a5..000000000 --- a/src/autocomplete/docs/examples/default-with-children-prop.example +++ /dev/null @@ -1,16 +0,0 @@ - console.log(changedItem)} - items={items} - children={(props) => { - const { getInputProps, getRef, inputValue } = props - return ( - - ) - }} -/> diff --git a/src/autocomplete/docs/examples/filterDisabled-basic.example b/src/autocomplete/docs/examples/filterDisabled-basic.example deleted file mode 100644 index ea5547af4..000000000 --- a/src/autocomplete/docs/examples/filterDisabled-basic.example +++ /dev/null @@ -1,18 +0,0 @@ - console.log(changedItem)} - items={items} -> - {({ getInputProps, openMenu, getRef, inputValue }) => ( - getRef(ref)} - {...getInputProps({ - onFocus: () => { - openMenu() - } - })} - /> - )} - diff --git a/src/autocomplete/docs/examples/onFocus-basic.example b/src/autocomplete/docs/examples/onFocus-basic.example deleted file mode 100644 index 9a289f1fa..000000000 --- a/src/autocomplete/docs/examples/onFocus-basic.example +++ /dev/null @@ -1,17 +0,0 @@ - console.log(changedItem)} - items={items} -> - {({ getInputProps, getRef, openMenu, inputValue }) => ( - getRef(ref)} - {...getInputProps({ - onFocus: () => { - openMenu() - } - })} - /> - )} - diff --git a/src/autocomplete/docs/examples/withButton-basic.example b/src/autocomplete/docs/examples/withButton-basic.example deleted file mode 100644 index cfb798911..000000000 --- a/src/autocomplete/docs/examples/withButton-basic.example +++ /dev/null @@ -1,23 +0,0 @@ - console.log(changedItem)} - items={items} -> - {({ - getInputProps, - getButtonProps, - getRef, - inputValue, - toggleMenu - }) => ( - getRef(ref)} display="inline-block"> - - - - )} - diff --git a/src/autocomplete/docs/examples/withTitle-basic.example b/src/autocomplete/docs/examples/withTitle-basic.example deleted file mode 100644 index 1d0f490d6..000000000 --- a/src/autocomplete/docs/examples/withTitle-basic.example +++ /dev/null @@ -1,18 +0,0 @@ - console.log(changedItem)} - items={items} -> - {({ getInputProps, getRef, openMenu, inputValue }) => ( - getRef(ref)} - {...getInputProps({ - onFocus: () => { - openMenu() - } - })} - /> - )} - diff --git a/src/autocomplete/docs/index.js b/src/autocomplete/docs/index.js deleted file mode 100644 index 3331de52d..000000000 --- a/src/autocomplete/docs/index.js +++ /dev/null @@ -1,160 +0,0 @@ -import React from 'react' -import Box from 'ui-box' -import starWarsNames from 'starwars-names' -import Autocomplete from '../src/Autocomplete' -import { TextInput } from '../../text-input' -import { Button } from '../../buttons' - -// Import main component as 'raw' text to be parsed with an AST to get get propTypes information -/* eslint-disable import/no-unresolved, import/no-webpack-loader-syntax */ -import autocompleteSource from '!raw-loader!../src/Autocomplete' -/* eslint-enable import/no-unresolved, import/no-webpack-loader-syntax */ - -/** - * Code examples - */ -import exampleDefaultBasic from './examples/default-basic.example' -import exampleDefaultWithProp from './examples/default-with-children-prop.example' -import exampleonFocusBasic from './examples/onFocus-basic.example' -import examplefilterDisabledBasic from './examples/filterDisabled-basic.example' -import examplewithTitleBasic from './examples/withTitle-basic.example' -import exampleWithButtonBasic from './examples/withButton-basic.example' -import exampleWithManyOptions from './examples/allOptions.example' - -// Generate a big list of items -const items = starWarsNames.all.sort((a, b) => { - const nameA = a.toUpperCase() - const nameB = b.toUpperCase() - if (nameA < nameB) { - return -1 - } - if (nameA > nameB) { - return 1 - } - return 0 -}) - -const title = 'Autocomplete' -const subTitle = 'A component to filter through a list of options' - -const implementationDetails = ( -
-

- The Autocomplete components renders a filterable list of - options in a Popover — it does not render the text input — If you need a - combination with a text input and trigger button, take a look at the - Combobox component. This component is mainly used to create type aheads -

- -

The Autocomplete Component Combines a Set of External Libraries

-
    -
  • - Uses Downshift for autocomplete -
  • -
  • - Uses react-tiny-virtual-list for performant list rendering -
  • -
  • - Uses fuzzaldrin-plus for fuzzy filtering -
  • -
-
-) - -const description = ( -

- The Autocomplete component. -

-) -const appearanceOptions = null - -const scope = { - Box, - Button, - Autocomplete, - items, - TextInput -} - -const components = [ - { - name: 'Autocomplete', - source: autocompleteSource, - description, - examples: [ - { - title: 'Default Example', - description:

The default behavior of the Autocomplete.

, - codeText: exampleDefaultBasic, - scope - }, - { - title: 'Default Example (Using children prop)', - description: ( -

- The default behavior of the Autocomplete using a children as a prop. -

- ), - codeText: exampleDefaultWithProp, - scope - }, - { - title: 'Basic onFocus Example', - description: ( -

- Autocomplete with an onFocus behaviour -

- ), - codeText: exampleonFocusBasic, - scope - }, - { - title: 'Basic onFilter Disabled', - description: ( -

- Autocomplete without an onFilter (And with an{' '} - onFocus behavior) -

- ), - codeText: examplefilterDisabledBasic, - scope - }, - { - title: 'Basic results with title', - description:

Autocomplete with a fixed title on the results

, - codeText: examplewithTitleBasic, - scope - }, - { - title: 'Basic results with an external trigger', - description: ( -

- Autocomplete with button that will trigger the opening of the - selectable options -

- ), - codeText: exampleWithButtonBasic, - scope - }, - { - title: 'Fully Featured Example', - description: ( -

- Full Width (w/ Flex) example with options title, onFocus, filtering, - and button to trigger the autocomplete -

- ), - codeText: exampleWithManyOptions, - scope - } - ] - } -] - -export default { - title, - subTitle, - implementationDetails, - appearanceOptions, - components -} diff --git a/src/autocomplete/index.js b/src/autocomplete/index.js index 079ccfdd9..28b779f9b 100644 --- a/src/autocomplete/index.js +++ b/src/autocomplete/index.js @@ -1,2 +1,2 @@ -export Autocomplete from './src/Autocomplete' -export AutocompleteItem from './src/AutocompleteItem' +export { default as Autocomplete } from './src/Autocomplete' +export { default as AutocompleteItem } from './src/AutocompleteItem' diff --git a/src/autocomplete/src/Autocomplete.js b/src/autocomplete/src/Autocomplete.js index 19693b69d..d5dc09f4e 100644 --- a/src/autocomplete/src/Autocomplete.js +++ b/src/autocomplete/src/Autocomplete.js @@ -4,8 +4,8 @@ import fuzzaldrin from 'fuzzaldrin-plus' import Downshift from 'downshift' import VirtualList from 'react-tiny-virtual-list' import { Popover } from '../../popover' -import { Position } from '../../positioner' -import { Text } from '../../typography' +import { Position } from '../../constants' +import { Heading } from '../../typography' import { Pane } from '../../layers' import AutocompleteItem from './AutocompleteItem' @@ -140,10 +140,8 @@ export default class Autocomplete extends PureComponent { return ( {title && ( - - - {title} - + + {title} )} {items.length > 0 && ( diff --git a/src/autocomplete/stories/index.stories.js b/src/autocomplete/stories/index.stories.js index d875506dd..e3f531304 100644 --- a/src/autocomplete/stories/index.stories.js +++ b/src/autocomplete/stories/index.stories.js @@ -2,7 +2,7 @@ import { storiesOf } from '@storybook/react' import React from 'react' import Box from 'ui-box' import starWarsNames from 'starwars-names' -import { Autocomplete } from '../../autocomplete' +import { Autocomplete } from '..' import { TextInput } from '../../text-input' import { Button } from '../../buttons' diff --git a/src/avatar/index.js b/src/avatar/index.js index a5a2cf047..2ee4af07f 100644 --- a/src/avatar/index.js +++ b/src/avatar/index.js @@ -1 +1 @@ -export Avatar from './src/Avatar' +export { default as Avatar } from './src/Avatar' // eslint-disable-line import/prefer-default-export diff --git a/src/avatar/src/Avatar.js b/src/avatar/src/Avatar.js index 8c112269d..0ff905df8 100644 --- a/src/avatar/src/Avatar.js +++ b/src/avatar/src/Avatar.js @@ -3,13 +3,10 @@ import PropTypes from 'prop-types' import Box from 'ui-box' import { Image } from '../../image' import { Text } from '../../typography' -import { FillAppearances } from '../../shared-styles' -import { colors } from '../../colors' +import { withTheme } from '../../theme' import globalGetInitials from './utils/getInitials' import globalHash from './utils/hash' -const keysFillAppearances = Object.keys(FillAppearances.default) - const initialsProps = { top: 0, position: 'absolute', @@ -19,88 +16,127 @@ const initialsProps = { lineHeight: 1 } -const getInitialsFontSize = (size, heightLimitOneCharacter) => { - if (size <= heightLimitOneCharacter) { - return Math.ceil(size / 2.2) - } - return Math.ceil(size / 2.6) -} - -export default class Avatar extends PureComponent { +class Avatar extends PureComponent { static propTypes = { - ...Image.propTypes, + /** + * The src attribute of the image. + * When it's not available, render initials instead. + */ + src: PropTypes.string, + + /** + * The size of the avatar. + */ size: PropTypes.number, + + /** + * The name used for the initials and title attribute. + */ name: PropTypes.string, - // Hash value defaults to name + + /** + * The value used for the hash function. + * The name is used as the hashValue by default. + * When dealing with anonymous users you should use the id instead. + */ hashValue: PropTypes.string, - hash: PropTypes.func, + + /** + * When true, render a solid avatar. + */ isSolid: PropTypes.bool, - appearance: PropTypes.oneOf(keysFillAppearances), + + /** + * The color used for the avatar. + * When the value is `automatic`, use the hash function to determine the color. + */ + color: PropTypes.string.isRequired, + + /** + * Function to get the initials based on the name. + */ getInitials: PropTypes.func, - // In some cases Gravatar returns transparent pngs - // we still want to see the initials + + /** + * When true, force show the initials. + * This is useful in some cases when using Gravatar and transparent pngs. + */ forceShowInitials: PropTypes.bool, - heightLimitOneCharacter: PropTypes.number + + /** + * When the size is smaller than this number, use a single initial for the avatar. + */ + sizeLimitOneCharacter: PropTypes.number, + + /** + * Theme provided by ThemeProvider. + */ + theme: PropTypes.object.isRequired } static defaultProps = { + color: 'automatic', size: 24, - hash: globalHash, isSolid: false, getInitials: globalGetInitials, forceShowInitials: false, - heightLimitOneCharacter: 20 + sizeLimitOneCharacter: 20 } constructor(props, context) { super(props, context) - this.state = { - imageHasFailedLoading: false - } + this.state = { imageHasFailedLoading: false } } handleError = () => { - this.setState({ - imageHasFailedLoading: true - }) + this.setState({ imageHasFailedLoading: true }) + } + + getColorProps = () => { + const { + isSolid, + theme, + color, + hashValue: propsHashValue, + name + } = this.props + + if (color === 'automatic') { + const hashValue = globalHash(propsHashValue || name) + return theme.getAvatarProps({ isSolid, color, hashValue }) + } + + return theme.getAvatarProps({ isSolid, color }) } render() { const { + theme, + src, size, name, - hash, isSolid, hashValue: propsHashValue, getInitials, - useAutoColor, - appearance: propsAppearance, + color: propsColor, forceShowInitials, - heightLimitOneCharacter, + sizeLimitOneCharacter, ...props } = this.props + const { imageHasFailedLoading } = this.state const imageUnavailable = !src || imageHasFailedLoading - const initialsFontSize = `${getInitialsFontSize( + const initialsFontSize = `${theme.getAvatarInitialsFontSize( size, - heightLimitOneCharacter + sizeLimitOneCharacter )}px` let initials = getInitials(name) - if (size <= heightLimitOneCharacter) { + if (size <= sizeLimitOneCharacter) { initials = initials.substring(0, 1) } - - const hashValue = hash(propsHashValue || name) - let appearanceKey = propsAppearance - if (appearanceKey === undefined) { - appearanceKey = - keysFillAppearances[hashValue % keysFillAppearances.length] - } - - const appearance = - FillAppearances[isSolid ? 'solid' : 'default'][appearanceKey] + const colorProps = this.getColorProps() return ( {(imageUnavailable || forceShowInitials) && ( @@ -123,7 +158,7 @@ export default class Avatar extends PureComponent { lineHeight={initialsFontSize} width={size} height={size} - color={appearance.color} + color={colorProps.color} > {initials} @@ -140,3 +175,5 @@ export default class Avatar extends PureComponent { ) } } + +export default withTheme(Avatar) diff --git a/src/avatar/stories/index.stories.js b/src/avatar/stories/index.stories.js index fcfb5645e..d83c4a2a0 100644 --- a/src/avatar/stories/index.stories.js +++ b/src/avatar/stories/index.stories.js @@ -1,8 +1,7 @@ import { storiesOf } from '@storybook/react' import React from 'react' import Box from 'ui-box' -import { Avatar } from '../../avatar' -import { FillAppearances } from '../../shared-styles' +import { Avatar } from '..' import { Heading, Paragraph } from '../../typography' const names = [ @@ -17,6 +16,16 @@ const names = [ ] const anonymousIds = [1591, 13184, 1055, 4199, 4824, 11394, 1965, 13023] +const colors = [ + 'neutral', + 'blue', + 'red', + 'orange', + 'yellow', + 'green', + 'teal', + 'purple' +] const StoryHeader = props => @@ -92,7 +101,8 @@ storiesOf('avatar', module).add('Avatar', () => ( Avatar sizes - Use 8px grid: 16, 24, 32, 40, 96, 128.
+ Use 8px grid: 16, 24, 32, 40, 96, 128. +
Use solid colors for avatars under 24px.
@@ -105,17 +115,13 @@ storiesOf('avatar', module).add('Avatar', () => (
- Manual default appearances - - {Object.keys(FillAppearances.default) - .map(a => a) - .join(', ')} - + Manual default colors + {colors.join(', ')} - {Object.keys(FillAppearances.default).map((appearance, index) => ( + {colors.map((color, index) => ( ( - Manual Solid appearances + Manual Solid Colors - Pass the isSolid prop.
- {Object.keys(FillAppearances.default) - .map(a => a) - .join(', ')} + Pass the isSolid prop. +
+ {colors.join(', ')}
- {Object.keys(FillAppearances.default).map((appearance, index) => ( + {colors.map((color, index) => ( ))}
- - - Manually set colors - - Use color and backgroundColor to manually style your avatar. - - - -
)) diff --git a/src/badges/index.js b/src/badges/index.js index fbeb6dd90..0e05a88e9 100644 --- a/src/badges/index.js +++ b/src/badges/index.js @@ -1,3 +1,2 @@ -export Badge from './src/Badge' -export { FillAppearances as BadgeAppearances } from '../shared-styles' -export Pill from './src/Pill' +export { default as Badge } from './src/Badge' +export { default as Pill } from './src/Pill' diff --git a/src/badges/src/Badge.js b/src/badges/src/Badge.js index e2a1b558e..503bc9647 100644 --- a/src/badges/src/Badge.js +++ b/src/badges/src/Badge.js @@ -1,19 +1,26 @@ import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import { Strong } from '../../typography' -import { FillAppearances } from '../../shared-styles' +import { withTheme } from '../../theme' -export default class Badge extends PureComponent { +class Badge extends PureComponent { static propTypes = { ...Strong.propTypes, - appearance: PropTypes.oneOf(Object.keys(FillAppearances.default)).isRequired - } - static defaultProps = { - appearance: 'neutral', - isSolid: false + /** + * The color used for the badge. + * When the value is `automatic`, use the hash function to determine the color. + */ + color: PropTypes.string.isRequired, + + /** + * Theme provided by ThemeProvider. + */ + theme: PropTypes.object.isRequired } + static defaultProps = { color: 'neutral', isSolid: false } + static styles = { display: 'inline-block', boxSizing: 'border-box', @@ -29,11 +36,23 @@ export default class Badge extends PureComponent { } render() { - const { appearance, isSolid, ...props } = this.props - const opacity = isSolid ? 'solid' : 'default' - const appearanceStyle = FillAppearances[opacity][appearance] + const { theme, color: propsColor, isSolid, ...props } = this.props + + const { color, backgroundColor } = theme.getBadgeProps({ + isSolid, + color: propsColor + }) + return ( - + ) } } + +export default withTheme(Badge) diff --git a/src/badges/stories/index.stories.js b/src/badges/stories/index.stories.js index 93ad9272b..9c774f67f 100644 --- a/src/badges/stories/index.stories.js +++ b/src/badges/stories/index.stories.js @@ -1,7 +1,8 @@ import { storiesOf } from '@storybook/react' import React from 'react' import Box from 'ui-box' -import { Badge, Pill, BadgeAppearances } from '../../badges' +import { Badge, Pill } from '..' +import { ThemeConsumer } from '../../theme' const wrapperStyles = { display: 'flex' @@ -14,30 +15,38 @@ const baseStyles = { storiesOf('badges', module) .add('Badge', () => ( - - {Object.keys(BadgeAppearances.default).map(appearance => ( - - - {appearance} - - - {appearance} - + + {theme => ( + + {theme.badgeColors.map(color => ( + + + {color} + + + {color} + + + ))} - ))} - + )} + )) .add('Pill', () => ( - - {Object.keys(BadgeAppearances.default).map(appearance => ( - - - {appearance} - - - {appearance} - + + {theme => ( + + {theme.badgeColors.map(color => ( + + + {color} + + + {color} + + + ))} - ))} - + )} + )) diff --git a/src/buttons/docs/LoadingManager.js b/src/buttons/docs/LoadingManager.js deleted file mode 100644 index bff3feccf..000000000 --- a/src/buttons/docs/LoadingManager.js +++ /dev/null @@ -1,31 +0,0 @@ -import React from 'react' -import PropTypes from 'prop-types' - -export default class LoadingManager extends React.PureComponent { - static propTypes = { - children: PropTypes.func - } - - state = { - isLoading: false - } - - setLoading = () => { - this.setState({ - isLoading: true - }) - - window.setTimeout(() => { - this.setState({ - isLoading: false - }) - }, 2000) - } - - render() { - return this.props.children({ - isLoading: this.state.isLoading, - setLoading: this.setLoading - }) - } -} diff --git a/src/buttons/docs/examples/arrow.example b/src/buttons/docs/examples/arrow.example deleted file mode 100644 index eb1537767..000000000 --- a/src/buttons/docs/examples/arrow.example +++ /dev/null @@ -1,10 +0,0 @@ -
- {['top', 'right', 'bottom', 'left'].map(aim => ( - - ))} -
diff --git a/src/buttons/docs/examples/back-button.example b/src/buttons/docs/examples/back-button.example deleted file mode 100644 index 1a9fc7534..000000000 --- a/src/buttons/docs/examples/back-button.example +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/buttons/docs/examples/basic-with-icons.example b/src/buttons/docs/examples/basic-with-icons.example deleted file mode 100644 index 4e73fb7ca..000000000 --- a/src/buttons/docs/examples/basic-with-icons.example +++ /dev/null @@ -1,9 +0,0 @@ -
- - - -
diff --git a/src/buttons/docs/examples/basic.example b/src/buttons/docs/examples/basic.example deleted file mode 100644 index 4234a1906..000000000 --- a/src/buttons/docs/examples/basic.example +++ /dev/null @@ -1,8 +0,0 @@ -
- - - - - - -
diff --git a/src/buttons/docs/examples/icon-button-basic.example b/src/buttons/docs/examples/icon-button-basic.example deleted file mode 100644 index 6a3a1a276..000000000 --- a/src/buttons/docs/examples/icon-button-basic.example +++ /dev/null @@ -1,6 +0,0 @@ -
- - - - -
diff --git a/src/buttons/docs/examples/loading.example b/src/buttons/docs/examples/loading.example deleted file mode 100644 index 3baf22423..000000000 --- a/src/buttons/docs/examples/loading.example +++ /dev/null @@ -1,13 +0,0 @@ - - {({ isLoading, setLoading }) => { - return ( - - ) - }} - diff --git a/src/buttons/docs/examples/triangle.example b/src/buttons/docs/examples/triangle.example deleted file mode 100644 index 791aec14a..000000000 --- a/src/buttons/docs/examples/triangle.example +++ /dev/null @@ -1,10 +0,0 @@ -
- {['top', 'right', 'bottom', 'left'].map(aim => ( - - ))} -
diff --git a/src/buttons/docs/index.js b/src/buttons/docs/index.js deleted file mode 100644 index 3aab1e7a6..000000000 --- a/src/buttons/docs/index.js +++ /dev/null @@ -1,214 +0,0 @@ -import React from 'react' -import LoadingManager from './LoadingManager' -import { BackButton, IconButton, Button } from '..' -/* eslint-disable import/no-unresolved, import/no-webpack-loader-syntax */ -import sourceBackButton from '!raw-loader!../src/BackButton' -import sourceIconButton from '!raw-loader!../src/IconButton' -import sourceButton from '!raw-loader!../src/Button' -/* eslint-enable import/no-unresolved, import/no-webpack-loader-syntax */ - -/** - * Code examples - */ -import basicExample from './examples/basic.example' -import loadingExample from './examples/loading.example' -import basicWithIconsExample from './examples/basic-with-icons.example' -import backButtonExample from './examples/back-button.example' -import triangleExample from './examples/triangle.example' -import arrowExample from './examples/arrow.example' -import iconButtonBasicExample from './examples/icon-button-basic.example' - -const title = 'Buttons' -const subTitle = 'A set of buttons with multiple appearances.' - -const designGuidelines = ( -
-

- By default buttons and controls have a height of 32px. It is - possible to change this to any height and the text style and spacing will - adjust. You should however keep things on the 8px or in some - cases the 4px grid. You should only need the following - recommended heights. -

-

Recommended heights

-
    -
  • - 24px -
  • -
  • - 32px — default height -
  • -
  • - 36px -
  • -
  • - 40px -
  • -
-
-) - -const appearanceOptions = [ - { - title: 'Default', - component: , - description: ( -

- Default buttons provide a light weight button style, while still - maintaining a high level of affordability. They are used to indicate - secondary actions and are used to reduce visual noise when there are - many actions on the page. -

- ) - }, - { - title: 'Green', - component: , - description: ( -

- Green buttons stand out on purpose. They are used to indicate primary - actions that create a new entity or initiate a creation flow. -

- ) - }, - { - title: 'Blue', - component: , - description: ( -

- Blue buttons stand out on purpose. They are used to indicate primary - actions used within a setup flow or preview window. -

- ) - }, - { - title: 'Red', - component: , - description: ( -

- Red buttons stand out on purpose. They are used to indicate primary - deletion actions in dialogs or settings. -

- ) - }, - { - title: 'Ghost Blue', - component: , - description: ( -

- Ghost blue text buttons are light weight. They are used to signify - secondary actions and work well next to solid buttons. -

- ) - }, - { - title: 'Ghost', - component: , - description: ( -

- Ghost buttons are light weight. They are used to signify secondary - actions and work well for icons such as in a dialog close button. -

- ) - } -] - -const components = [ - { - name: 'Button', - source: sourceButton, - description: ( -

- The base Button component can have multiple appearances. - See the design guidelines above to understand when to use each - appearance. Buttons can also hold a icon before or after the text. Avoid - using an icon after the text except for a triangle down. -

- ), - examples: [ - { - title: 'All button appearances', - codeText: basicExample, - scope: { Button } - }, - { - title: 'Loading button', - codeText: loadingExample, - scope: { Button, LoadingManager } - }, - { - title: 'Buttons with an icon', - codeText: basicWithIconsExample, - scope: { Button } - } - ] - }, - - { - name: 'BackButton', - source: sourceBackButton, - description: ( -

- The BackButton is a specialized component used for the back - button inside of the top bar navigation, or inside of a setup flow. -

- ), - examples: [ - { - title: 'Back button example', - description: ( -

- Back is the default text. You want to overwrite this if you can. -

- ), - codeText: backButtonExample, - scope: { BackButton } - } - ] - }, - { - name: 'IconButton', - source: sourceIconButton, - description: ( -

- The IconButton component has access to all icons available - in evergreen-ui. You can use the iconAim prop - to determine where to aim the icon. This is only useful for the{' '} - triangle and arrow icon. -

- ), - examples: [ - { - title: 'Functional icons', - description: ( -

- Although IconButton supports all icons, you should only - ever use the following. -

- ), - codeText: iconButtonBasicExample, - scope: { IconButton } - }, - { - title: 'Triangle icon buttons', - description:

Currently there is not a clear use case for this.

, - codeText: triangleExample, - scope: { IconButton } - }, - { - title: 'Arrow icon buttons', - description:

Currently there is not a clear use case for this.

, - codeText: arrowExample, - scope: { IconButton } - } - ] - } -] - -export default { - title, - subTitle, - designGuidelines, - appearanceOptions, - components -} diff --git a/src/buttons/index.js b/src/buttons/index.js index 229f868b2..ed8a6fd6a 100644 --- a/src/buttons/index.js +++ b/src/buttons/index.js @@ -1,4 +1,4 @@ -export BackButton from './src/BackButton' -export Button from './src/Button' -export ButtonAppearances from './src/styles/ButtonAppearances' -export IconButton from './src/IconButton' +export { default as BackButton } from './src/BackButton' +export { default as Button } from './src/Button' +export { default as IconButton } from './src/IconButton' +export { default as TextDropdownButton } from './src/TextDropdownButton' diff --git a/src/buttons/src/BackButton.js b/src/buttons/src/BackButton.js index f91570b5a..6d50ccdf0 100644 --- a/src/buttons/src/BackButton.js +++ b/src/buttons/src/BackButton.js @@ -11,22 +11,14 @@ export default class BackButton extends PureComponent { static defaultProps = { /** - * Sets the arrow icon before the text. - */ - iconBefore: 'arrow', - - /** - * Aims the arrow to the left. + * Composes the Button component as the base. */ - iconBeforeAim: 'left', + ...Button.defaultProps, - /** - * Default text is `Back`. Overwrite to something more specific if possible. - */ children: 'Back' } render() { - return ) } } + +export default withTheme(IconButton) diff --git a/src/buttons/src/TextDropdownButton.js b/src/buttons/src/TextDropdownButton.js new file mode 100644 index 000000000..49c8a512e --- /dev/null +++ b/src/buttons/src/TextDropdownButton.js @@ -0,0 +1,138 @@ +import React, { PureComponent } from 'react' +import PropTypes from 'prop-types' +import { dimensions, spacing, position, layout } from 'ui-box' +import { Text } from '../../typography' +import { Icon } from '../../icon' +import { Spinner } from '../../spinner' +import { withTheme } from '../../theme' + +class TextDropdownButton extends PureComponent { + static propTypes = { + /** + * Composes the dimensions spec from the Box primitivie. + */ + ...dimensions.propTypes, + + /** + * Composes the spacing spec from the Box primitivie. + */ + ...spacing.propTypes, + + /** + * Composes the position spec from the Box primitivie. + */ + ...position.propTypes, + + /** + * Composes the layout spec from the Box primitivie. + */ + ...layout.propTypes, + + /** + * Forcefully set the active state of a button. + * Useful in conjuction with a Popover. + */ + isActive: PropTypes.bool, + + /** + * When true, the button is disabled. + * isLoading also sets the button to disabled. + */ + disabled: PropTypes.bool, + + /** + * Name of a Blueprint UI icon, or an icon element, to render. + * This prop is required because it determines the content of the component, but it can + * be explicitly set to falsy values to render nothing. + * + * - If `null` or `undefined` or `false`, this component will render nothing. + * - If given an `IconName` (a string literal union of all icon names), + * that icon will be rendered as an `` with `` tags. + * - If given a `JSX.Element`, that element will be rendered and _all other props on this component are ignored._ + * This type is supported to simplify usage of this component in other Blueprint components. + * As a consumer, you should never use `}` directly; simply render `` instead. + */ + icon: PropTypes.string.isRequired, + + /** + * Theme provided by ThemeProvider. + */ + theme: PropTypes.object.isRequired, + + /** + * Class name passed to the button. + * Only use if you know what you are doing. + */ + className: PropTypes.string + } + + static defaultProps = { + isActive: false, + icon: 'caret-down' + } + + static styles = { + position: 'relative', + fontFamily: 'ui', + fontWeight: 500, + display: 'inline-flex', + alignItems: 'center', + flexWrap: 'nowrap' + } + + render() { + const { + theme, + className, + + intent, + height, + isActive, + children, + disabled, + appearance, + isLoading, + + // Paddings + paddingRight, + paddingLeft, + paddingTop, + paddingBottom, + + // Icons + icon, + + ...props + } = this.props + + const themedClassName = theme.getTextDropdownButtonClassName() + + return ( + + {isLoading && ( + + )} + {children} + + + ) + } +} + +export default withTheme(TextDropdownButton) diff --git a/src/buttons/src/styles/ButtonAppearances.js b/src/buttons/src/styles/ButtonAppearances.js deleted file mode 100644 index 530b32ee2..000000000 --- a/src/buttons/src/styles/ButtonAppearances.js +++ /dev/null @@ -1,193 +0,0 @@ -import { colors } from '../../../colors' -import { TextColors } from '../../../typography' - -const baseStyle = { - WebkitFontSmoothing: 'antialiased', - boxSizing: 'border-box', - verticalAlign: 'middle', - textDecoration: 'none', - transition: 'box-shadow 80ms ease-in-out', - WebkitAppearance: 'none', - border: 'none', - outline: 'none', - cursor: 'pointer', - '&::-moz-focus-inner ': { - border: 0 - }, - '[disabled], [data-disabled]': { - cursor: 'not-allowed', - opacity: 0.8, - backgroundImage: 'none', - backgroundColor: colors.neutral['10A'], - boxShadow: 'none', - color: colors.neutral['300A'] - } -} - -const hoverState = '&:not([disabled]):not([data-disabled]):hover' -const focusState = '&:not([disabled]):not([data-disabled]):focus' -const activeState = - '&:not([disabled]):not([data-disabled]):active, &:not([disabled]):not([data-disabled])[aria-expanded="true"], &:not([disabled]):not([data-disabled])[data-active]' - -const ButtonAppearances = { - default: { - ...baseStyle, - backgroundColor: 'white', - color: TextColors.default, - backgroundImage: `linear-gradient(to top, ${colors.neutral['5A']}, ${ - colors.white['5A'] - })`, - boxShadow: `inset 0 0 0 1px ${colors.neutral['20A']}, inset 0 -1px 1px 0 ${ - colors.neutral['10A'] - }`, - [hoverState]: { - backgroundImage: `linear-gradient(to top, ${colors.neutral['7A']}, ${ - colors.neutral['3A'] - } )`, - boxShadow: `inset 0 0 0 1px ${ - colors.neutral['40A'] - }, inset 0 -1px 1px 0 ${colors.neutral['15A']}` - }, - [focusState]: { - zIndex: 2, - boxShadow: `0 0 0 3px ${colors.blue['20A']}, inset 0 0 0 1px ${ - colors.neutral['70A'] - }, inset 0 -1px 1px 0 ${colors.neutral['10A']}` - }, - [activeState]: { - color: colors.blue['1000'], - backgroundImage: 'none', - backgroundColor: colors.blue['10A'], - boxShadow: `inset 0 0 0 1px ${ - colors.neutral['20A'] - }, inset 0 -1px 1px 0 ${colors.neutral['10A']}` - // BoxShadow: `inset 0 0 0 1px ${colors.blue['80A']}`, - } - }, - blue: { - ...baseStyle, - backgroundColor: colors.blue['500'], - color: 'white', - backgroundImage: `linear-gradient(to top, ${colors.blue['600']}, ${ - colors.blue['400'] - })`, - boxShadow: `inset 0 0 0 1px ${colors.neutral['30A']}, inset 0 -1px 1px 0 ${ - colors.neutral['30A'] - }`, - [hoverState]: { - backgroundImage: `linear-gradient(to top, ${colors.blue['700']}, ${ - colors.blue['500'] - })` - }, - [focusState]: { - zIndex: 2, - boxShadow: `0 0 0 3px ${colors.blue['50A']}, inset 0 0 0 1px ${ - colors.neutral['30A'] - }, inset 0 -1px 1px 0 ${colors.neutral['30A']}` - }, - [activeState]: { - boxShadow: `inset 0 0 0 1px ${ - colors.neutral['30A'] - }, inset 0 -1px 1px 0 ${colors.neutral['30A']}`, - backgroundImage: `linear-gradient(to top, ${colors.blue['800']}, ${ - colors.blue['900'] - })` - } - }, - green: { - ...baseStyle, - backgroundColor: colors.green['500'], - color: 'white', - backgroundImage: `linear-gradient(to top, ${colors.green['600']}, ${ - colors.green['500'] - })`, - boxShadow: `inset 0 0 0 1px ${colors.neutral['30A']}, inset 0 -1px 1px 0 ${ - colors.neutral['30A'] - }`, - [hoverState]: { - backgroundImage: `linear-gradient(to top, ${colors.green['700']}, ${ - colors.green['600'] - })` - }, - [focusState]: { - zIndex: 2, - boxShadow: `0 0 0 3px ${colors.green['100A']}, inset 0 0 0 1px ${ - colors.neutral['30A'] - }, inset 0 -1px 1px 0 ${colors.neutral['30A']}` - }, - [activeState]: { - boxShadow: `inset 0 0 0 1px ${ - colors.neutral['30A'] - }, inset 0 -1px 1px 0 ${colors.neutral['30A']}`, - backgroundImage: `linear-gradient(to top, ${colors.green['800']}, ${ - colors.green['900'] - })` - } - }, - red: { - ...baseStyle, - backgroundColor: colors.green['500'], - color: 'white', - backgroundImage: `linear-gradient(to top, ${colors.red['600']}, ${ - colors.red['500'] - })`, - boxShadow: `inset 0 0 0 1px ${colors.neutral['30A']}, inset 0 -1px 1px 0 ${ - colors.neutral['30A'] - }`, - [hoverState]: { - backgroundImage: `linear-gradient(to top, ${colors.red['700']}, ${ - colors.red['600'] - })` - }, - [focusState]: { - zIndex: 2, - boxShadow: `0 0 0 3px ${colors.red['100A']}, inset 0 0 0 1px ${ - colors.neutral['30A'] - }, inset 0 -1px 1px 0 ${colors.neutral['30A']}` - }, - [activeState]: { - boxShadow: `inset 0 0 0 1px ${ - colors.neutral['30A'] - }, inset 0 -1px 1px 0 ${colors.neutral['30A']}`, - backgroundImage: `linear-gradient(to top, ${colors.red['800']}, ${ - colors.red['900'] - })` - } - }, - ghost: { - ...baseStyle, - backgroundColor: 'transparent', - color: TextColors.default, - [hoverState]: { - backgroundColor: colors.neutral['7A'] - }, - [focusState]: { - zIndex: 2, - boxShadow: `0 0 0 3px ${colors.blue['50A']}` - }, - [activeState]: { - color: colors.blue['1000'], - boxShadow: 'none', - backgroundColor: colors.blue['10A'] - } - }, - ghostBlue: { - ...baseStyle, - color: colors.blue['500'], - backgroundColor: 'transparent', - [hoverState]: { - backgroundColor: colors.neutral['7A'] - }, - [focusState]: { - zIndex: 2, - boxShadow: `0 0 0 3px ${colors.blue['50A']}` - }, - [activeState]: { - color: colors.blue['1000'], - boxShadow: 'none', - backgroundColor: colors.blue['10A'] - } - } -} - -export default ButtonAppearances diff --git a/src/buttons/stories/index.stories.js b/src/buttons/stories/index.stories.js index a8de87ee6..8ee0ed376 100644 --- a/src/buttons/stories/index.stories.js +++ b/src/buttons/stories/index.stories.js @@ -1,229 +1,434 @@ import { storiesOf } from '@storybook/react' import React from 'react' -import PropTypes from 'prop-types' import Box from 'ui-box' -import { - IconButton, - Button, - BackButton, - ButtonAppearances -} from '../../buttons' +import Component from '@reactions/component' +import { IconButton, Button, BackButton, TextDropdownButton } from '..' import { Heading } from '../../typography' -import { IconMap } from '../../icons' -import LoadingManager from '../docs/LoadingManager' +import { Pane } from '../../layers' +import { SegmentedControl } from '../../segmented-control' -const baseStyles = { - margin: 16 -} const buttonsStory = storiesOf('buttons', module) -buttonsStory.add('Button', () => ( +buttonsStory.add('Common', () => ( - Button based - {Object.keys(ButtonAppearances).map(appearance => ( - -
- - - - - - - -
-
- ))} - - Link based - {Object.keys(ButtonAppearances).map(appearance => ( - -
- - - - - - - -
-
- ))} + + {({ state, setState }) => ( + + setState({ value: Number(value) })} + /> + + + + + Back + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + )} +
)) -buttonsStory.add('Button presets', () => ( +buttonsStory.add('Button types', () => ( - - Overview + + {({ state, setState }) => ( + + setState({ value: Number(value) })} + /> + Default Appearance + + + + + + + Primary Appearance + + + + + + + Minimal Appearance + + + + + + + + )} + )) -buttonsStory.add('Button + icons', () => ( +buttonsStory.add('TextDropdownButton', () => ( - Button with icons + Table Header + +)) - {['default', 'ghost', 'ghostBlue'].map(appearance => ( - - - - - +buttonsStory.add('IconButton', () => ( + + + Height 32 + + + + + + - ))} + + + + + + + + + + Height 24 + + + + + + + + + + + + + + + + + + + + + + + + + + +)) + +buttonsStory.add('Button presets', () => ( + + Back )) buttonsStory.add('Button isLoading', () => ( - {Object.keys(ButtonAppearances).map(appearance => { - return ( - - {({ isLoading, setLoading }) => { - return ( - - ) + + {({ state, setState }) => ( + + )} + )) -function IconButtonIcon({ appearance, height, iconKey }) { - const iconProps = { - appearance, - height, - icon: iconKey, - marginRight: 8 - } - - if (['triangle', 'arrow'].indexOf(iconKey) > -1) { - return ['top', 'right', 'bottom', 'left'].map(aim => ( - - )) - } - return -} -IconButtonIcon.propTypes = { - appearance: PropTypes.string.isRequired, - height: PropTypes.number.isRequired, - iconKey: PropTypes.string.isRequired -} - -buttonsStory.add('IconButton', () => ( +buttonsStory.add('Button margin top', () => ( - {Object.keys(ButtonAppearances).map(appearance => ( - - {[32, 28, 24].map(height => ( - - - {appearance} {height} - - {Object.keys(IconMap).map(iconKey => ( - - ))} - - ))} - - ))} + )) diff --git a/src/checkbox/index.js b/src/checkbox/index.js index 3f0f3e6f8..24e2d60b2 100644 --- a/src/checkbox/index.js +++ b/src/checkbox/index.js @@ -1 +1 @@ -export Checkbox from './src/Checkbox' +export { default as Checkbox } from './src/Checkbox' // eslint-disable-line import/prefer-default-export diff --git a/src/checkbox/src/Checkbox.js b/src/checkbox/src/Checkbox.js index 2fccb1f43..699dc7ba8 100644 --- a/src/checkbox/src/Checkbox.js +++ b/src/checkbox/src/Checkbox.js @@ -1,8 +1,8 @@ import React, { PureComponent } from 'react' import PropTypes from 'prop-types' -import Box from 'ui-box' +import Box, { spacing, position, layout, dimensions } from 'ui-box' import { Text } from '../../typography' -import { CheckboxAppearances } from '../../shared-styles' +import { withTheme } from '../../theme' const CheckIcon = ({ fill = 'currentColor', ...props }) => ( @@ -18,27 +18,105 @@ CheckIcon.propTypes = { fill: PropTypes.string } -export default class Checkbox extends PureComponent { +const MinusIcon = ({ fill = 'currentColor', ...props }) => ( + + + +) + +MinusIcon.propTypes = { + fill: PropTypes.string +} + +class Checkbox extends PureComponent { static propTypes = { - ...Box.propTypes, + /** + * Composes some Box APIs. + */ + ...spacing.propTypes, + ...position.propTypes, + ...layout.propTypes, + ...dimensions.propTypes, + + /** + * The id attribute of the checkbox. + */ id: PropTypes.string, + + /** + * The id attribute of the radio. + */ name: PropTypes.string, + + /** + * Label of the checkbox. + */ label: PropTypes.node, + + /** + * The value attribute of the radio. + */ value: PropTypes.string, + + /** + * The checked attribute of the radio. + */ checked: PropTypes.bool, + + /** + * State in addition to "checked" and "unchecked". + * When true, the radio displays a "minus" icon. + */ + indeterminate: PropTypes.bool, + + /** + * Function called when state changes. + */ onChange: PropTypes.func, + + /** + * When true, the radio is disabled. + */ disabled: PropTypes.bool, + + /** + * When true, the aria-invalid attribute is true. + * Used for accessibility. + */ isInvalid: PropTypes.bool, - appearance: PropTypes.oneOf(Object.keys(CheckboxAppearances)) + + /** + * The appearance of the checkbox. + * The default theme only comes with a default style. + */ + appearance: PropTypes.string, + + /** + * Theme provided by ThemeProvider. + */ + theme: PropTypes.object.isRequired } static defaultProps = { - appearance: 'default', - onChange: () => {} + checked: false, + indeterminate: false, + onChange: () => {}, + appearance: 'default' + } + + setIndeterminate = el => { + if (!el) return + el.indeterminate = this.props.indeterminate } render() { const { + theme, + id, name, label, @@ -48,29 +126,33 @@ export default class Checkbox extends PureComponent { checked, onChange, value, + indeterminate, ...props } = this.props - const appearanceStyle = CheckboxAppearances[appearance] + + const themedClassName = theme.getCheckboxClassName(appearance) return ( - + {indeterminate ? : } {label && ( {label} @@ -96,3 +178,5 @@ export default class Checkbox extends PureComponent { ) } } + +export default withTheme(Checkbox) diff --git a/src/checkbox/stories/index.stories.js b/src/checkbox/stories/index.stories.js index f55b58b31..18e920d70 100644 --- a/src/checkbox/stories/index.stories.js +++ b/src/checkbox/stories/index.stories.js @@ -1,7 +1,7 @@ import { storiesOf } from '@storybook/react' import React from 'react' import Box from 'ui-box' -import { Checkbox } from '../../checkbox' +import { Checkbox } from '..' storiesOf('checkbox', module).add('Checkbox', () => ( @@ -9,5 +9,7 @@ storiesOf('checkbox', module).add('Checkbox', () => ( + + )) diff --git a/src/colors/docs/index.js b/src/colors/docs/index.js deleted file mode 100644 index 703621528..000000000 --- a/src/colors/docs/index.js +++ /dev/null @@ -1,218 +0,0 @@ -import React from 'react' -import Box from 'ui-box' -import colors from '../src/colors' - -const title = 'Colors' -const subTitle = 'The Evergreen color system.' - -const designGuidelines = ( -
-

- The color system in Evergreen is based on a custom palette generator tool. - There are currently a lot of tints and shades in each color group, in the - short future we will simplify the raw color system. -

-

Loosely Based On Material Design

-

- The color system is based on some of the concepts of{' '} - - Material Design - , meaning that 500 is the base color, everything below 500 is lighter - (tints), and everything above 500 is darker (shades). -

-

Base Colors

-

- In the color system the 500 number represents the base - system. Below you can see all of the base colors for each color scale. -

- - {Object.keys(colors).map(groupKey => { - const color = colors[groupKey]['500'] - return ( - - - - - {capitalizeFirstLetter(groupKey)} 500 - - {color} - - - - colors.{groupKey} - {`['500']`} - - - - ) - })} - -

Tints

-

- In the color system all colors under 500 are tints of the - base color. -

-

Opaque and Transparent Tints

-

- For each tint there are two variations, one opaque and one transparent. - Below is an example for the neutral 100A and 100 color. The A{' '} - is appended to signify Alpha, which is unlike Material Design - conventions. -

-
    -
  • - Transparent: colors.neutral{`['100A']`} is{' '} - rgba(67,90,111,0.477) -
  • -
  • - Opaque: colors.neutral{`['100']`} is #9cb1c3 -
  • -
-

- The benefit of having both a transparent version and a opaque version is - that you can explicitly pick one. In most cases the transparent color is - more useful because it will blend itself with whatever is behind it. This - is useful for layering background colors. The opaque color is useful if - you explicitly need exactly that color — often you wouldn’t need this. -

-

Planned Improvements

-

- As you might be able to tell there are a ton of colors and the transparent - and opaque tints don’t always match a 100%. Going forward we are going to - drastically reduce the amount of colors in the color scale for our colors. -

- - {Object.keys(colors).map(groupKey => { - return ( - -

{capitalizeFirstLetter(groupKey)} Tints

- {Object.keys(colors[groupKey]) - // Trickery to make the white show up. - .filter(number => !Number(number)) - .map(number => Number(number.replace('A', ''))) - .filter(number => Number(number) < 500) - .map(number => { - return ( - - {groupKey !== 'white' && ( - - - - - {capitalizeFirstLetter(groupKey)} {number} - - {colors[groupKey][number]} - - - )} - - - - - {capitalizeFirstLetter(groupKey)} {number}A - - - {colors[groupKey][`${number}A`].split(',').join(', ')} - - - - ) - })} - - ) - })} -
- -

Shades

-

- In the color system all colors above 500 are shades of the - base color. -

- - {Object.keys(colors) - .filter(groupKey => groupKey !== 'white') - .map(groupKey => { - return ( - -

{capitalizeFirstLetter(groupKey)} Shades

- {Object.keys(colors[groupKey]) - .filter(number => Number(number) > 500) - .map(number => { - return ( - - - - - {capitalizeFirstLetter(groupKey)} {number} - - {colors[groupKey][number]} - - - ) - })} - - ) - })} -
-
-) - -function capitalizeFirstLetter(string) { - return string.charAt(0).toUpperCase() + string.slice(1) -} - -const appearanceOptions = null - -const components = null - -export default { - title, - subTitle, - designGuidelines, - appearanceOptions, - components -} diff --git a/src/colors/index.js b/src/colors/index.js deleted file mode 100644 index 31b8de118..000000000 --- a/src/colors/index.js +++ /dev/null @@ -1 +0,0 @@ -export colors from './src/colors' diff --git a/src/colors/src/colors.css b/src/colors/src/colors.css deleted file mode 100644 index f6f17bc39..000000000 --- a/src/colors/src/colors.css +++ /dev/null @@ -1,419 +0,0 @@ -:root { - - /** neutral */ - - --neutral-3: #fafbfc; - --neutral-5: #f7f8fa; - --neutral-7: #f3f6f8; - --neutral-10: #eff2f5; - --neutral-15: #e7ecf1; - --neutral-20: #e1e7ed; - --neutral-30: #d5dee6; - --neutral-40: #cad5df; - --neutral-50: #c1ced9; - --neutral-60: #b8c7d4; - --neutral-70: #b0c1d0; - --neutral-80: #a9bbcb; - --neutral-90: #a2b6c7; - --neutral-100: #9cb1c3; - --neutral-125: #8ea6bb; - --neutral-150: #829cb4; - --neutral-175: #7894ad; - --neutral-200: #6e8ca8; - --neutral-300: #56748f; - --neutral-400: #496279; - --neutral-500: #435a6f; - --neutral-600: #37536c; - --neutral-700: #2c4b68; - --neutral-800: #1f4160; - --neutral-900: #153656; - --neutral-1000: #092744; - --neutral-3A: rgba(67,90,111,0.025); - --neutral-5A: rgba(67,90,111,0.041); - --neutral-7A: rgba(67,90,111,0.057); - --neutral-10A: rgba(67,90,111,0.079); - --neutral-15A: rgba(67,90,111,0.114); - --neutral-20A: rgba(67,90,111,0.146); - --neutral-30A: rgba(67,90,111,0.204); - --neutral-40A: rgba(67,90,111,0.255); - --neutral-50A: rgba(67,90,111,0.301); - --neutral-60A: rgba(67,90,111,0.342); - --neutral-70A: rgba(67,90,111,0.38); - --neutral-80A: rgba(67,90,111,0.415); - --neutral-90A: rgba(67,90,111,0.447); - --neutral-100A: rgba(67,90,111,0.477); - --neutral-125A: rgba(67,90,111,0.544); - --neutral-150A: rgba(67,90,111,0.602); - --neutral-175A: rgba(67,90,111,0.653); - --neutral-200A: rgba(67,90,111,0.699); - --neutral-300A: rgba(67,90,111,0.845); - --neutral-400A: rgba(67,90,111,0.954); - - /** red */ - - --red-3: #fffbfa; - --red-5: #fff9f7; - --red-7: #fef6f3; - --red-10: #fef3ef; - --red-15: #feede8; - --red-20: #fde8e1; - --red-30: #fddfd5; - --red-40: #fcd7ca; - --red-50: #fbd0c1; - --red-60: #fbcab9; - --red-70: #fac4b1; - --red-80: #fabeaa; - --red-90: #fab9a3; - --red-100: #f9b59d; - --red-125: #f8aa8f; - --red-150: #f8a183; - --red-175: #f79978; - --red-200: #f7926f; - --red-300: #f57b51; - --red-400: #f46a3a; - --red-500: #f36331; - --red-600: #f4541d; - --red-700: #f4450a; - --red-800: #dd3c06; - --red-900: #c63403; - --red-1000: #a32800; - --red-3A: rgba(243,99,49,0.025); - --red-5A: rgba(243,99,49,0.041); - --red-7A: rgba(243,99,49,0.057); - --red-10A: rgba(243,99,49,0.079); - --red-15A: rgba(243,99,49,0.114); - --red-20A: rgba(243,99,49,0.146); - --red-30A: rgba(243,99,49,0.204); - --red-40A: rgba(243,99,49,0.255); - --red-50A: rgba(243,99,49,0.301); - --red-60A: rgba(243,99,49,0.342); - --red-70A: rgba(243,99,49,0.38); - --red-80A: rgba(243,99,49,0.415); - --red-90A: rgba(243,99,49,0.447); - --red-100A: rgba(243,99,49,0.477); - --red-125A: rgba(243,99,49,0.544); - --red-150A: rgba(243,99,49,0.602); - --red-175A: rgba(243,99,49,0.653); - --red-200A: rgba(243,99,49,0.699); - --red-300A: rgba(243,99,49,0.845); - --red-400A: rgba(243,99,49,0.954); - - /** green */ - - --green-3: #fafdfc; - --green-5: #f7fcfa; - --green-7: #f5fbf8; - --green-10: #f0f9f5; - --green-15: #eaf7f1; - --green-20: #e4f5ed; - --green-30: #d9f1e5; - --green-40: #d0eddf; - --green-50: #c8ead9; - --green-60: #c0e7d4; - --green-70: #b9e4cf; - --green-80: #b3e2cb; - --green-90: #addfc7; - --green-100: #a7ddc3; - --green-125: #9bd8ba; - --green-150: #90d4b3; - --green-175: #87d1ad; - --green-200: #7ecda7; - --green-300: #64c395; - --green-400: #4fbb87; - --green-500: #47b881; - --green-600: #3faf77; - --green-700: #37a56d; - --green-800: #2d9760; - --green-900: #248953; - --green-1000: #197140; - --green-3A: rgba(71,184,129,0.025); - --green-5A: rgba(71,184,129,0.041); - --green-7A: rgba(71,184,129,0.057); - --green-10A: rgba(71,184,129,0.079); - --green-15A: rgba(71,184,129,0.114); - --green-20A: rgba(71,184,129,0.146); - --green-30A: rgba(71,184,129,0.204); - --green-40A: rgba(71,184,129,0.255); - --green-50A: rgba(71,184,129,0.301); - --green-60A: rgba(71,184,129,0.342); - --green-70A: rgba(71,184,129,0.38); - --green-80A: rgba(71,184,129,0.415); - --green-90A: rgba(71,184,129,0.447); - --green-100A: rgba(71,184,129,0.477); - --green-125A: rgba(71,184,129,0.544); - --green-150A: rgba(71,184,129,0.602); - --green-175A: rgba(71,184,129,0.653); - --green-200A: rgba(71,184,129,0.699); - --green-300A: rgba(71,184,129,0.845); - --green-400A: rgba(71,184,129,0.954); - - /** blue */ - - --blue-3: #f8fbff; - --blue-5: #f3f9ff; - --blue-7: #eef7ff; - --blue-10: #e7f3ff; - --blue-15: #ddeeff; - --blue-20: #d3eaff; - --blue-30: #c2e1ff; - --blue-40: #b3daff; - --blue-50: #a5d3ff; - --blue-60: #99cdff; - --blue-70: #8ec8fe; - --blue-80: #83c3fe; - --blue-90: #7abefe; - --blue-100: #71b9fe; - --blue-125: #5db0fe; - --blue-150: #4ba7fe; - --blue-175: #3ca0fe; - --blue-200: #2e99fe; - --blue-300: #0384fe; - --blue-400: #0173df; - --blue-500: #016cd1; - --blue-600: #0165c7; - --blue-700: #015ebd; - --blue-800: #0055b0; - --blue-900: #004ca3; - --blue-1000: #00408f; - --blue-3A: rgba(1,108,209,0.025); - --blue-5A: rgba(1,108,209,0.041); - --blue-7A: rgba(1,108,209,0.057); - --blue-10A: rgba(1,108,209,0.079); - --blue-15A: rgba(1,108,209,0.114); - --blue-20A: rgba(1,108,209,0.146); - --blue-30A: rgba(1,108,209,0.204); - --blue-40A: rgba(1,108,209,0.255); - --blue-50A: rgba(1,108,209,0.301); - --blue-60A: rgba(1,108,209,0.342); - --blue-70A: rgba(1,108,209,0.38); - --blue-80A: rgba(1,108,209,0.415); - --blue-90A: rgba(1,108,209,0.447); - --blue-100A: rgba(1,108,209,0.477); - --blue-125A: rgba(1,108,209,0.544); - --blue-150A: rgba(1,108,209,0.602); - --blue-175A: rgba(1,108,209,0.653); - --blue-200A: rgba(1,108,209,0.699); - --blue-300A: rgba(1,108,209,0.845); - --blue-400A: rgba(1,108,209,0.954); - - /** purple */ - - --purple-3: #fbfbfd; - --purple-5: #f9f8fc; - --purple-7: #f6f5fb; - --purple-10: #f3f1fa; - --purple-15: #eeecf8; - --purple-20: #e9e6f6; - --purple-30: #e0dcf2; - --purple-40: #d8d3ef; - --purple-50: #d2ccec; - --purple-60: #cbc5e9; - --purple-70: #c6bee7; - --purple-80: #c0b8e5; - --purple-90: #bcb3e3; - --purple-100: #b7ade1; - --purple-125: #ada2dd; - --purple-150: #a498d9; - --purple-175: #9c8fd6; - --purple-200: #9587d3; - --purple-300: #7f6fca; - --purple-400: #6f5cc3; - --purple-500: #6854c0; - --purple-600: #5d47bd; - --purple-700: #553eb5; - --purple-800: #4c37a8; - --purple-900: #443099; - --purple-1000: #382683; - --purple-3A: rgba(104,84,192,0.025); - --purple-5A: rgba(104,84,192,0.041); - --purple-7A: rgba(104,84,192,0.057); - --purple-10A: rgba(104,84,192,0.079); - --purple-15A: rgba(104,84,192,0.114); - --purple-20A: rgba(104,84,192,0.146); - --purple-30A: rgba(104,84,192,0.204); - --purple-40A: rgba(104,84,192,0.255); - --purple-50A: rgba(104,84,192,0.301); - --purple-60A: rgba(104,84,192,0.342); - --purple-70A: rgba(104,84,192,0.38); - --purple-80A: rgba(104,84,192,0.415); - --purple-90A: rgba(104,84,192,0.447); - --purple-100A: rgba(104,84,192,0.477); - --purple-125A: rgba(104,84,192,0.544); - --purple-150A: rgba(104,84,192,0.602); - --purple-175A: rgba(104,84,192,0.653); - --purple-200A: rgba(104,84,192,0.699); - --purple-300A: rgba(104,84,192,0.845); - --purple-400A: rgba(104,84,192,0.954); - - /** pink */ - - --pink-3: #fefafb; - --pink-5: #fef7f9; - --pink-7: #fef4f7; - --pink-10: #fdeff4; - --pink-15: #fce8ef; - --pink-20: #fbe2ea; - --pink-30: #fad6e2; - --pink-40: #f9ccdb; - --pink-50: #f7c3d4; - --pink-60: #f6bbce; - --pink-70: #f5b3c9; - --pink-80: #f5acc4; - --pink-90: #f4a6c0; - --pink-100: #f3a0bb; - --pink-125: #f193b2; - --pink-150: #f087aa; - --pink-175: #ef7da2; - --pink-200: #ee749c; - --pink-300: #ea5787; - --pink-400: #e74178; - --pink-500: #e63871; - --pink-600: #e42b68; - --pink-700: #e31e5e; - --pink-800: #d31a57; - --pink-900: #c11850; - --pink-1000: #a71545; - --pink-3A: rgba(230,56,113,0.025); - --pink-5A: rgba(230,56,113,0.041); - --pink-7A: rgba(230,56,113,0.057); - --pink-10A: rgba(230,56,113,0.079); - --pink-15A: rgba(230,56,113,0.114); - --pink-20A: rgba(230,56,113,0.146); - --pink-30A: rgba(230,56,113,0.204); - --pink-40A: rgba(230,56,113,0.255); - --pink-50A: rgba(230,56,113,0.301); - --pink-60A: rgba(230,56,113,0.342); - --pink-70A: rgba(230,56,113,0.38); - --pink-80A: rgba(230,56,113,0.415); - --pink-90A: rgba(230,56,113,0.447); - --pink-100A: rgba(230,56,113,0.477); - --pink-125A: rgba(230,56,113,0.544); - --pink-150A: rgba(230,56,113,0.602); - --pink-175A: rgba(230,56,113,0.653); - --pink-200A: rgba(230,56,113,0.699); - --pink-300A: rgba(230,56,113,0.845); - --pink-400A: rgba(230,56,113,0.954); - - /** yellow */ - - --yellow-3: #fffefb; - --yellow-5: #fffdf8; - --yellow-7: #fffcf5; - --yellow-10: #fefaf1; - --yellow-15: #fef9eb; - --yellow-20: #fef7e6; - --yellow-30: #fdf3dc; - --yellow-40: #fdf0d3; - --yellow-50: #fdeecb; - --yellow-60: #fcecc4; - --yellow-70: #fce9be; - --yellow-80: #fce7b8; - --yellow-90: #fbe6b2; - --yellow-100: #fbe4ad; - --yellow-125: #fbe0a1; - --yellow-150: #fadd97; - --yellow-175: #fada8f; - --yellow-200: #f9d787; - --yellow-300: #f8cf6e; - --yellow-400: #f7c95b; - --yellow-500: #f7c653; - --yellow-600: #f6b94b; - --yellow-700: #f4ab43; - --yellow-800: #f29738; - --yellow-900: #f0822d; - --yellow-1000: #ec601e; - --yellow-3A: rgba(247,198,83,0.025); - --yellow-5A: rgba(247,198,83,0.041); - --yellow-7A: rgba(247,198,83,0.057); - --yellow-10A: rgba(247,198,83,0.079); - --yellow-15A: rgba(247,198,83,0.114); - --yellow-20A: rgba(247,198,83,0.146); - --yellow-30A: rgba(247,198,83,0.204); - --yellow-40A: rgba(247,198,83,0.255); - --yellow-50A: rgba(247,198,83,0.301); - --yellow-60A: rgba(247,198,83,0.342); - --yellow-70A: rgba(247,198,83,0.38); - --yellow-80A: rgba(247,198,83,0.415); - --yellow-90A: rgba(247,198,83,0.447); - --yellow-100A: rgba(247,198,83,0.477); - --yellow-125A: rgba(247,198,83,0.544); - --yellow-150A: rgba(247,198,83,0.602); - --yellow-175A: rgba(247,198,83,0.653); - --yellow-200A: rgba(247,198,83,0.699); - --yellow-300A: rgba(247,198,83,0.845); - --yellow-400A: rgba(247,198,83,0.954); - - /** turquoise */ - - --turquoise-3: #f9fefe; - --turquoise-5: #f4fdfe; - --turquoise-7: #f0fcfe; - --turquoise-10: #ebfafd; - --turquoise-15: #e2f8fc; - --turquoise-20: #d9f7fb; - --turquoise-30: #cbf3fa; - --turquoise-40: #bdf0f9; - --turquoise-50: #b2eef8; - --turquoise-60: #a7ebf7; - --turquoise-70: #9de9f6; - --turquoise-80: #94e7f5; - --turquoise-90: #8ce5f4; - --turquoise-100: #84e3f3; - --turquoise-125: #73dff2; - --turquoise-150: #64dcf0; - --turquoise-175: #57d9ef; - --turquoise-200: #4bd6ee; - --turquoise-300: #26ceea; - --turquoise-400: #15bfdc; - --turquoise-500: #14b5d0; - --turquoise-600: #11aac6; - --turquoise-700: #0fa0bc; - --turquoise-800: #0b92ae; - --turquoise-900: #0984a0; - --turquoise-1000: #056f8a; - --turquoise-3A: rgba(20,181,208,0.025); - --turquoise-5A: rgba(20,181,208,0.041); - --turquoise-7A: rgba(20,181,208,0.057); - --turquoise-10A: rgba(20,181,208,0.079); - --turquoise-15A: rgba(20,181,208,0.114); - --turquoise-20A: rgba(20,181,208,0.146); - --turquoise-30A: rgba(20,181,208,0.204); - --turquoise-40A: rgba(20,181,208,0.255); - --turquoise-50A: rgba(20,181,208,0.301); - --turquoise-60A: rgba(20,181,208,0.342); - --turquoise-70A: rgba(20,181,208,0.38); - --turquoise-80A: rgba(20,181,208,0.415); - --turquoise-90A: rgba(20,181,208,0.447); - --turquoise-100A: rgba(20,181,208,0.477); - --turquoise-125A: rgba(20,181,208,0.544); - --turquoise-150A: rgba(20,181,208,0.602); - --turquoise-175A: rgba(20,181,208,0.653); - --turquoise-200A: rgba(20,181,208,0.699); - --turquoise-300A: rgba(20,181,208,0.845); - --turquoise-400A: rgba(20,181,208,0.954); - - /** white */ - - --white-500: #ffffff; - --white-3A: rgba(255,255,255,0.025); - --white-5A: rgba(255,255,255,0.041); - --white-7A: rgba(255,255,255,0.057); - --white-10A: rgba(255,255,255,0.079); - --white-15A: rgba(255,255,255,0.114); - --white-20A: rgba(255,255,255,0.146); - --white-30A: rgba(255,255,255,0.204); - --white-40A: rgba(255,255,255,0.255); - --white-50A: rgba(255,255,255,0.301); - --white-60A: rgba(255,255,255,0.342); - --white-70A: rgba(255,255,255,0.38); - --white-80A: rgba(255,255,255,0.415); - --white-90A: rgba(255,255,255,0.447); - --white-100A: rgba(255,255,255,0.477); - --white-125A: rgba(255,255,255,0.544); - --white-150A: rgba(255,255,255,0.602); - --white-175A: rgba(255,255,255,0.653); - --white-200A: rgba(255,255,255,0.699); - --white-300A: rgba(255,255,255,0.845); - --white-400A: rgba(255,255,255,0.954); - -} diff --git a/src/colors/stories/ColorExamples.js b/src/colors/stories/ColorExamples.js new file mode 100644 index 000000000..8a7b98c88 --- /dev/null +++ b/src/colors/stories/ColorExamples.js @@ -0,0 +1,65 @@ +import React from 'react' +import { Pane } from '../../layers' +import { Heading } from '../../typography' +import { ThemeConsumer } from '../../theme' +import ColorGroup from './ColorGroup' + +function capitalize(string) { + return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase() +} + +export default class ColorExamples extends React.Component { + render() { + return ( + + {theme => ( + + + Palette + {Object.keys(theme.palette).map(key => { + return ( + `theme.palette.${key}.${childKey}`} + /> + ) + })} + + + + Functional Colors + + {Object.keys(theme.colors).map(key => { + return ( + `theme.colors.${key}.${childKey}`} + /> + ) + })} + + + + Scales + + {Object.keys(theme.scales).map(key => { + return ( + `theme.scales.${key}.${childKey}`} + /> + ) + })} + + + )} + + ) + } +} diff --git a/src/colors/stories/ColorGroup.js b/src/colors/stories/ColorGroup.js new file mode 100644 index 000000000..b2bf1afb6 --- /dev/null +++ b/src/colors/stories/ColorGroup.js @@ -0,0 +1,35 @@ +import React from 'react' +import PropTypes from 'prop-types' +import { Pane } from '../../layers' +import { Heading } from '../../typography' +import Swatch from './Swatch' + +const ColorGroup = props => { + return ( + + + {props.title} + + + {Object.keys(props.colorGroup).map(key => { + return ( + + ) + })} + + + ) +} + +ColorGroup.propTypes = { + title: PropTypes.node, + colorGroup: PropTypes.object, + name: PropTypes.func +} + +export default ColorGroup diff --git a/src/colors/stories/ColorMapping.js b/src/colors/stories/ColorMapping.js new file mode 100644 index 000000000..e9ed0eb2f --- /dev/null +++ b/src/colors/stories/ColorMapping.js @@ -0,0 +1,774 @@ +import React from 'react' +import PropTypes from 'prop-types' +import tinycolor from 'tinycolor2' +import { Pane } from '../../layers' +import { Heading, Code } from '../../typography' +import { defaultTheme } from '../../theme' +import colors from './v3-colors' + +const { palette, scales } = defaultTheme + +const ColorCompare = ({ + oldColor, + oldColorString, + newColor, + newColorString +}) => { + return ( + + + + {oldColorString} + + + + {newColorString} + + + + + + + ) +} + +ColorCompare.propTypes = { + oldColor: PropTypes.string.isRequired, + oldColorString: PropTypes.string.isRequired, + newColor: PropTypes.string.isRequired, + newColorString: PropTypes.string.isRequired +} + +const CompareGroup = ({ colors }) => { + return colors.map(color => ) +} + +CompareGroup.propTypes = { + colors: PropTypes.array +} + +const Group = ({ title, colors }) => { + return ( + + + {title} + + + + v3 + + + v4 + + + Diff + + + + + ) +} + +Group.propTypes = { + title: PropTypes.string.isRequired, + colors: PropTypes.array +} + +export default class ColorMapping extends React.PureComponent { + render() { + return ( + + + + + + + + + + + ) + } +} diff --git a/src/colors/stories/Swatch.js b/src/colors/stories/Swatch.js new file mode 100644 index 000000000..8fba7c7e6 --- /dev/null +++ b/src/colors/stories/Swatch.js @@ -0,0 +1,62 @@ +import React from 'react' +import PropTypes from 'prop-types' +import { Pane } from '../../layers' +import { Heading, Text, Code } from '../../typography' +import { Popover } from '../../popover' + +function uppercaseColor(color) { + if (color[0] === '#') return color.toUpperCase() + return color +} + +export default class Swatch extends React.Component { + static propTypes = { + color: PropTypes.string.isRequired, + name: PropTypes.string.isRequired, + property: PropTypes.string.isRequired + } + + renderContent = () => { + const { color, name, property } = this.props + + return ( + + + {name}: {color} + + + {property} + + + ) + } + + render() { + const { color, name, property, ...props } = this.props + return ( + + + + + + {name} + {uppercaseColor(color)} + + + ) + } +} diff --git a/src/colors/stories/index.stories.js b/src/colors/stories/index.stories.js index 913bcef80..19ece1b48 100644 --- a/src/colors/stories/index.stories.js +++ b/src/colors/stories/index.stories.js @@ -1,58 +1,12 @@ import { storiesOf } from '@storybook/react' import React from 'react' -import PropTypes from 'prop-types' -import Box from 'ui-box' -import { colors } from '../../colors' - -const fontFamily = `-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"` - -class Swatch extends React.Component { - static propTypes = { - color: PropTypes.string.isRequired, - colorGroupName: PropTypes.string.isRequired, - swatchKey: PropTypes.string.isRequired, - name: PropTypes.string.isRequired - } - - render() { - const { colorGroupName, swatchKey, color, name } = this.props - return ( - - {name} -
- {color} -
- colors.{colorGroupName}['{swatchKey}'] -
- ) - } -} - -storiesOf('colors', module).add('overview', () => ( - - - Colors - Colors ending in `A` have a alpha channel - - {Object.keys(colors).map(key => ( - - {key} - {Object.keys(colors[key]).map(swatchKey => ( - - ))} - - ))} - -)) +import ColorExamples from './ColorExamples' +import ColorMapping from './ColorMapping' + +storiesOf('colors', module) + .add('overview', () => ( +
+ +
+ )) + .add('mapping v3 to v4 colors', () => ) diff --git a/src/colors/src/colors.js b/src/colors/stories/v3-colors.js similarity index 100% rename from src/colors/src/colors.js rename to src/colors/stories/v3-colors.js diff --git a/src/combobox/docs/examples/Combobox-basic.example b/src/combobox/docs/examples/Combobox-basic.example deleted file mode 100644 index 5dbf0920b..000000000 --- a/src/combobox/docs/examples/Combobox-basic.example +++ /dev/null @@ -1,8 +0,0 @@ - console.log(selected)} - placeholder="Starwars names" - autocompleteProps={{ - title: 'Starwars names' - }} -/> diff --git a/src/combobox/docs/examples/Combobox-custom-items.example b/src/combobox/docs/examples/Combobox-custom-items.example deleted file mode 100644 index 289dcdaba..000000000 --- a/src/combobox/docs/examples/Combobox-custom-items.example +++ /dev/null @@ -1,6 +0,0 @@ - item.label} - onChange={selected => console.log(selected)} -/> diff --git a/src/combobox/docs/examples/Combobox-open-on-focus.example b/src/combobox/docs/examples/Combobox-open-on-focus.example deleted file mode 100644 index 935f950c5..000000000 --- a/src/combobox/docs/examples/Combobox-open-on-focus.example +++ /dev/null @@ -1,5 +0,0 @@ - console.log(selected)} -/> diff --git a/src/combobox/docs/index.js b/src/combobox/docs/index.js deleted file mode 100644 index fad681a49..000000000 --- a/src/combobox/docs/index.js +++ /dev/null @@ -1,95 +0,0 @@ -import React from 'react' -import Box from 'ui-box' -import starWarsNames from 'starwars-names' -import Combobox from '../src/Combobox' - -/* eslint-disable import/no-unresolved, import/no-webpack-loader-syntax */ -import sourceCombobox from '!raw-loader!../src/Combobox' -/* eslint-enable import/no-unresolved, import/no-webpack-loader-syntax */ - -/** - * Code examples - */ -import exampleComboboxBasic from './examples/Combobox-basic.example' -import exampleComboboxOpenOnFocus from './examples/Combobox-open-on-focus.example' -import exampleComboboxCustomItems from './examples/Combobox-custom-items.example' - -const title = 'Combobox' -const subTitle = 'A combination of a Text Input, Button and Autocomplete.' - -// Generate a big list of items -const items = starWarsNames.all.sort((a, b) => { - const nameA = a.toUpperCase() - const nameB = b.toUpperCase() - if (nameA < nameB) { - return -1 - } - if (nameA > nameB) { - return 1 - } - - return 0 -}) - -const introduction = ( -
-

- The Combobox component is used for selecting an option from a predefined - list of options. It is similar to a Select or Select Menu component. - Clicking the button will show all items. Typing in the text input will - filter the list. -

-
-) - -const implementationDetails = ( -
-

- The Combobox component composes a Text Input, Icon Button and Autocomplete - component. -

-
-) - -const scope = { - Box, - Combobox, - items -} - -const components = [ - { - name: 'Combobox', - source: sourceCombobox, - description: ( -

- The Combobox component. -

- ), - examples: [ - { - title: 'Basic Combobox Example', - codeText: exampleComboboxBasic, - scope - }, - { - title: 'Open On Focus', - codeText: exampleComboboxOpenOnFocus, - scope - }, - { - title: 'Custom Items', - codeText: exampleComboboxCustomItems, - scope - } - ] - } -] - -export default { - title, - subTitle, - introduction, - implementationDetails, - components -} diff --git a/src/combobox/index.js b/src/combobox/index.js index 7d189176d..4c7567d66 100644 --- a/src/combobox/index.js +++ b/src/combobox/index.js @@ -1 +1 @@ -export Combobox from './src/Combobox' +export { default as Combobox } from './src/Combobox' // eslint-disable-line import/prefer-default-export diff --git a/src/combobox/src/Combobox.js b/src/combobox/src/Combobox.js index 0bfc209d8..46f8419b4 100644 --- a/src/combobox/src/Combobox.js +++ b/src/combobox/src/Combobox.js @@ -69,8 +69,7 @@ export default class Combobox extends PureComponent { static defaultProps = { width: 240, - openOnFocus: false, - appearance: 'default' + openOnFocus: false } constructor(props, context) { @@ -95,7 +94,6 @@ export default class Combobox extends PureComponent { defaultSelectedItem, itemToString, width, - appearance, height, onChange, placeholder, @@ -161,8 +159,8 @@ export default class Combobox extends PureComponent { - - {({ state, setState }) => ( - - setState({ isShown: false })} - > - The Corner Dialog component is used for new feature announcements - and feedback requests from the user. - - - - )} - - - {({ state, setState }) => ( - - setState({ isShown: false })} - > - Help shape Segment’s data governance product roadmap. If you’re - willing to provide feedback, let’s chat. - - - - )} - - - {({ state, setState }) => ( - - setState({ isShown: false })} - > - Segment now offers a Data Processing Agreement and EU Model - Contract Clauses as a means of meeting the adequacy and security - requirements of the GDPR. - - - - )} - -
diff --git a/src/corner-dialog/docs/index.js b/src/corner-dialog/docs/index.js deleted file mode 100644 index d04cd445e..000000000 --- a/src/corner-dialog/docs/index.js +++ /dev/null @@ -1,74 +0,0 @@ -import React from 'react' -import Box from 'ui-box' -import CornerDialog from '../src/CornerDialog' -import { Button } from '../../buttons' -import { Manager } from '../../manager' - -/* eslint-disable import/no-unresolved, import/no-webpack-loader-syntax */ -import sourceCornerDialog from '!raw-loader!../src/CornerDialog' -/* eslint-enable import/no-unresolved, import/no-webpack-loader-syntax */ - -/** - * Code examples - */ -import exampleCornerDialogBasic from './examples/CornerDialog-basic.example' - -const title = 'Corner Dialog' -const subTitle = 'Dialog in the bottom corner of the screen.' - -const designGuidelines = ( -
-

- The Corner Dialog component is used for announcements such as new features - and feedback requests. Preferably the content of the Corner Dialog should - only contain one small paragraph. -

-

- Good examples of call to actions for Corner Dialog are:{' '} - Learn More, Got It and{' '} - Get in Touch. -

-
-) - -const implementationDetails = ( -
-

- Be aware that only one Corner Dialog can be shown at a single time - — showing multiple Corner Dialogs will mean they will stack on top of each - other. -

-
-) - -const appearanceOptions = null - -const scope = { - Box, - Button, - Manager, - CornerDialog -} - -const components = [ - { - name: 'CornerDialog', - source: sourceCornerDialog, - examples: [ - { - title: 'Basic Corner Dialog Examples', - codeText: exampleCornerDialogBasic, - scope - } - ] - } -] - -export default { - title, - subTitle, - designGuidelines, - implementationDetails, - appearanceOptions, - components -} diff --git a/src/corner-dialog/index.js b/src/corner-dialog/index.js index e829e5359..e342d1101 100644 --- a/src/corner-dialog/index.js +++ b/src/corner-dialog/index.js @@ -1 +1 @@ -export CornerDialog from './src/CornerDialog' +export { default as CornerDialog } from './src/CornerDialog' // eslint-disable-line import/prefer-default-export diff --git a/src/corner-dialog/src/CornerDialog.js b/src/corner-dialog/src/CornerDialog.js index 6b3535896..1600d2ffe 100644 --- a/src/corner-dialog/src/CornerDialog.js +++ b/src/corner-dialog/src/CornerDialog.js @@ -54,6 +54,12 @@ export default class CornerDialog extends PureComponent { */ children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired, + /** + * The intent of the CornerDialog. Used for the button. + */ + intent: PropTypes.oneOf(['none', 'success', 'warning', 'danger']) + .isRequired, + /** * When true, the dialog is shown. */ @@ -124,6 +130,7 @@ export default class CornerDialog extends PureComponent { static defaultProps = { width: 392, + intent: 'none', hasFooter: true, confirmLabel: 'Learn More', hasCancel: true, @@ -154,6 +161,10 @@ export default class CornerDialog extends PureComponent { this.props.onCloseComplete() } + handleCancel = () => { + this.props.onCancel(this.handleClose) + } + handleClose = () => { this.setState({ exiting: true }) } @@ -166,7 +177,8 @@ export default class CornerDialog extends PureComponent { const { children } = this.props if (typeof children === 'function') { return children({ close: this.handleClose }) - } else if (typeof children === 'string') { + } + if (typeof children === 'string') { return ( {children} @@ -180,6 +192,7 @@ export default class CornerDialog extends PureComponent { const { title, width, + intent, isShown, hasFooter, hasCancel, @@ -223,8 +236,8 @@ export default class CornerDialog extends PureComponent {
@@ -241,14 +254,15 @@ export default class CornerDialog extends PureComponent { flexDirection="row-reverse" > {hasCancel && ( - + )}
)} diff --git a/src/corner-dialog/stories/index.stories.js b/src/corner-dialog/stories/index.stories.js index a2858623e..e30bed507 100644 --- a/src/corner-dialog/stories/index.stories.js +++ b/src/corner-dialog/stories/index.stories.js @@ -1,7 +1,7 @@ import { storiesOf } from '@storybook/react' import React from 'react' import Box from 'ui-box' -import { CornerDialog } from '../../corner-dialog' +import { CornerDialog } from '..' import { Button } from '../../buttons' import { Manager } from '../../manager' diff --git a/src/dialog/docs/examples/hide-header.example b/src/dialog/docs/examples/hide-header.example deleted file mode 100644 index fc155ffc8..000000000 --- a/src/dialog/docs/examples/hide-header.example +++ /dev/null @@ -1,24 +0,0 @@ - - {({ isShown, show, hide }) => ( - - - {({ close }) => ( - - - Manage your own header, buttons and interactions. - - - - )} - - - - )} - diff --git a/src/dialog/docs/examples/internal-scrolling.example b/src/dialog/docs/examples/internal-scrolling.example deleted file mode 100644 index db1ff8d48..000000000 --- a/src/dialog/docs/examples/internal-scrolling.example +++ /dev/null @@ -1,14 +0,0 @@ - - {({ isShown, show, hide }) => ( - - - - - - - )} - diff --git a/src/dialog/docs/examples/primary-button-confirmation.example b/src/dialog/docs/examples/primary-button-confirmation.example deleted file mode 100644 index 2c02b299e..000000000 --- a/src/dialog/docs/examples/primary-button-confirmation.example +++ /dev/null @@ -1,20 +0,0 @@ - - {({ isShown, isLoading, confirmLoading, show, hide }) => ( - - - - This is useful when you need to process something before closing - the dialog. - - - - - )} - diff --git a/src/dialog/docs/examples/primary-button-only.example b/src/dialog/docs/examples/primary-button-only.example deleted file mode 100644 index 960f7e484..000000000 --- a/src/dialog/docs/examples/primary-button-only.example +++ /dev/null @@ -1,18 +0,0 @@ - - {({ isShown, show, hide }) => ( - - - - This is useful for product updates and onboarding content. - - - - - )} - diff --git a/src/dialog/docs/examples/primary-button-red.example b/src/dialog/docs/examples/primary-button-red.example deleted file mode 100644 index 12927b507..000000000 --- a/src/dialog/docs/examples/primary-button-red.example +++ /dev/null @@ -1,16 +0,0 @@ - - {({ isShown, show, hide }) => ( - - - Dialog content - - - - )} - diff --git a/src/dialog/docs/examples/primary-button.example b/src/dialog/docs/examples/primary-button.example deleted file mode 100644 index e98441520..000000000 --- a/src/dialog/docs/examples/primary-button.example +++ /dev/null @@ -1,15 +0,0 @@ - - {({ isShown, show, hide }) => ( - - - Dialog content - - - - )} - diff --git a/src/dialog/docs/examples/self-managed-close.example b/src/dialog/docs/examples/self-managed-close.example deleted file mode 100644 index 6b0824edd..000000000 --- a/src/dialog/docs/examples/self-managed-close.example +++ /dev/null @@ -1,22 +0,0 @@ - - {({ isShown, show, hide }) => ( - - - {({ close }) => ( - - Manage Your Own Buttons and Interactions. - - - )} - - - - )} - diff --git a/src/dialog/docs/examples/without-buttons.example b/src/dialog/docs/examples/without-buttons.example deleted file mode 100644 index 9b6b31bab..000000000 --- a/src/dialog/docs/examples/without-buttons.example +++ /dev/null @@ -1,17 +0,0 @@ - - {({ isShown, show, hide }) => ( - - - - Manage your own buttons and interactions. - - - - - )} - diff --git a/src/dialog/docs/index.js b/src/dialog/docs/index.js deleted file mode 100644 index dd211cc9a..000000000 --- a/src/dialog/docs/index.js +++ /dev/null @@ -1,198 +0,0 @@ -import React from 'react' -import Box from 'ui-box' -import Dialog from '../src/Dialog' -import { Button } from '../../buttons' -import { Paragraph } from '../../typography' -import DialogManager from './DialogManager' - -/* eslint-disable import/no-unresolved, import/no-webpack-loader-syntax */ -import sourceDialog from '!raw-loader!../src/Dialog' -/* eslint-enable import/no-unresolved, import/no-webpack-loader-syntax */ - -/** - * Code examples - */ -import examplePrimaryButton from './examples/primary-button.example' -import examplePrimaryButtonRed from './examples/primary-button-red.example' -import examplePrimaryButtonOnly from './examples/primary-button-only.example' -import examplePrimaryButtonConfirmation from './examples/primary-button-confirmation.example' -import exampleWithoutButtons from './examples/without-buttons.example' -import exampleSelfManagedClose from './examples/self-managed-close.example' -import exampleHideHeader from './examples/hide-header.example' -import exampleInternalScrolling from './examples/internal-scrolling.example' - -const title = 'Dialog' -const subTitle = 'A component that displays content on top of an overlay.' - -const designGuidelines = ( -
-

- The Dialog component is used to show content on top of an - overlay. It blocks any interaction with the page — until the overlay - is clicked, or a close action is triggered. -

-

When To Use

-

- When you require your user to interact with you app, but don’t want your - users to jump to a different page and break their workflow. -

-

- You should also use a dialog in cases where you need to ask for - confirmation from the user before doing a lengthy or dangerous action. - This could be a deletion of some sorts or initiating a lengthy download. -

-

Terminology

-

- - BlueprintJS - {' '} - pointed out in their documentation that “modal” is a misnomer for - “dialog”. -

-
- The term “modal” is sometimes used to mean “dialog”, but this is a - misnomer. Modal is an adjective that describes parts of a UI. An element - is considered modal if it{' '} - - blocks interaction with the rest of the application - . We use the term “dialog” to avoid confusion with the adjective. -
-
-) - -const implementationDetails = ( -
-

Focus Management

-

- When opening theDialog, focus will be brought inside the Dialog. When - using both the cancel and confirm button, the cancel button will get focus - first. -

-

- When closing the Dialog, focus will be brought back to the element that - was focused before opening the Dialog. This is normally the button that - triggered the Dialog. -

-
-) - -const scope = { - Box, - Dialog, - DialogManager, - Paragraph, - Button -} - -const components = [ - { - name: 'Dialog', - source: sourceDialog, - description: ( -

- This is the component responsible for all interactions and properties. -

- ), - examples: [ - { - title: 'Default Behavior', - description: ( -

- The default behavior of the dialog is to show a header with a title - and close button —  and a footer with a confirm and cancel button. -

- ), - codeText: examplePrimaryButton, - scope - }, - { - title: 'Dialog with a Danger Intent', - description: ( -

- The intent prop determines the appearance of the confirm button. - danger is red. In the future, more intent types might - be added. -

- ), - codeText: examplePrimaryButtonRed, - scope - }, - { - title: 'Confirm Button with Loading Confirmation', - description: ( -

- Pass the isConfirmLoading to set the loading state on - the confirm button. -

- ), - codeText: examplePrimaryButtonConfirmation, - scope - }, - { - title: 'Confirm Button Only', - description: ( -

- Sometimes you only need a confirm button and not a cancel button. - For example in onboarding use cases. -

- ), - codeText: examplePrimaryButtonOnly, - scope - }, - { - title: 'Internal Scrolling', - description: ( -

- When content makes the dialog height greater than the available - space in the viewport, the content area will become scrollable. It - will add a symmetric offset on the top and bottom — based on the{' '} - topOffset prop. -

- ), - codeText: exampleInternalScrolling, - scope - }, - { - title: 'Self Managed Close', - description: ( -

- Pass in a function as children to accept a close{' '} - function you can use to manually close your dialog. -

- ), - codeText: exampleSelfManagedClose, - scope - }, - { - title: 'Without Footer', - description: ( -

- Use the hasFooter props to show or hide the footer. - This will hide the confirm and cancel buttons. -

- ), - codeText: exampleWithoutButtons, - scope - }, - { - title: 'Without Header', - description: ( -

- Use the hasHeader props to show or hide the heaer. This - will hide both the close icon button as the title. -

- ), - codeText: exampleHideHeader, - scope - } - ] - } -] - -export default { - title, - subTitle, - designGuidelines, - implementationDetails, - components -} diff --git a/src/dialog/index.js b/src/dialog/index.js index 72a5b2760..1aeec5bf6 100644 --- a/src/dialog/index.js +++ b/src/dialog/index.js @@ -1 +1 @@ -export Dialog from './src/Dialog' +export { default as Dialog } from './src/Dialog' // eslint-disable-line import/prefer-default-export diff --git a/src/dialog/src/Dialog.js b/src/dialog/src/Dialog.js index aacc899be..21834aa85 100644 --- a/src/dialog/src/Dialog.js +++ b/src/dialog/src/Dialog.js @@ -5,6 +5,7 @@ import { Pane } from '../../layers' import { Paragraph, Heading } from '../../typography' import { Overlay } from '../../overlay' import { Button, IconButton } from '../../buttons' +import { withTheme } from '../../theme' const animationEasing = { deceleration: `cubic-bezier(0.0, 0.0, 0.2, 1)`, @@ -56,6 +57,12 @@ class Dialog extends React.Component { */ children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired, + /** + * The intent of the Dialog. Used for the button. + */ + intent: PropTypes.oneOf(['none', 'success', 'warning', 'danger']) + .isRequired, + /** * When true, the dialog is shown. */ @@ -105,11 +112,6 @@ class Dialog extends React.Component { */ confirmLabel: PropTypes.string, - /** - * The type of the message. - */ - type: PropTypes.oneOf(['default', 'danger']), - /** * When true, the confirm button is set to loading. */ @@ -133,6 +135,16 @@ class Dialog extends React.Component { */ cancelLabel: PropTypes.string, + /** + * Boolean indicating if clicking the overlay should close the overlay. + */ + shouldCloseOnOverlayClick: PropTypes.bool, + + /** + * Boolean indicating if pressing the esc key should close the overlay. + */ + shouldCloseOnEscapePress: PropTypes.bool, + /** * Width of the Dialog. */ @@ -140,11 +152,17 @@ class Dialog extends React.Component { /** * The space above the dialog. - * This offset is also used at the bottom when there is not enough space - * available on screen — and the dialog scrolls internally. + * This offset is also used at the bottom when there is not enough vertical + * space available on screen — and the dialog scrolls internally. */ topOffset: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + /** + * The space on the left/right sides of the dialog when there isn't enough + * horizontal space available on screen. + */ + sideOffset: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + /** * The min height of the body content. * Makes it less weird when only showing little content. @@ -162,14 +180,17 @@ class Dialog extends React.Component { hasHeader: true, hasFooter: true, hasCancel: true, - type: 'default', + intent: 'none', width: 560, - topOffset: '12vh', + topOffset: '12vmin', + sideOffset: '16px', minHeightContent: 80, confirmLabel: 'Confirm', isConfirmLoading: false, isConfirmDisabled: false, cancelLabel: 'Cancel', + shouldCloseOnOverlayClick: true, + shouldCloseOnEscapePress: true, onCancel: close => close(), onConfirm: close => close() } @@ -179,7 +200,8 @@ class Dialog extends React.Component { if (typeof children === 'function') { return children({ close }) - } else if (typeof children === 'string') { + } + if (typeof children === 'string') { return {children} } return children @@ -189,100 +211,103 @@ class Dialog extends React.Component { const { title, width, - type, + intent, isShown, topOffset, + sideOffset, hasHeader, hasFooter, hasCancel, onCloseComplete, onOpenComplete, + onCancel, onConfirm, confirmLabel, isConfirmLoading, isConfirmDisabled, cancelLabel, + shouldCloseOnOverlayClick, + shouldCloseOnEscapePress, containerProps, minHeightContent } = this.props - let maxHeight - if (Number.isInteger(topOffset)) { - maxHeight = `calc(100vh - ${topOffset}px)` - } else { - maxHeight = `calc(100vh - ${topOffset})` - } + const sideOffsetWithUnit = Number.isInteger(sideOffset) + ? `${sideOffset}px` + : sideOffset + const maxWidth = `calc(100% - ${sideOffsetWithUnit} * 2)` - let buttonAppearance - if (type === 'default') { - buttonAppearance = 'green' - } else if (type === 'danger') { - buttonAppearance = 'red' - } + const topOffsetWithUnit = Number.isInteger(topOffset) + ? `${topOffset}px` + : topOffset + const maxHeight = `calc(100% - ${topOffsetWithUnit} * 2)` return ( {({ state, close }) => ( - - {hasHeader && ( - - - {title} - - - - )} - + {hasHeader && ( - {this.renderChildren(close)} + + {title} + + onCancel(close)} + /> + )} - {hasFooter && ( - + + {this.renderChildren(close)} + + + {hasFooter && ( + + {/* Cancel should be first to make sure focus gets on it first. */} {hasCancel && ( - )} @@ -290,16 +315,17 @@ class Dialog extends React.Component { - )} - + + )} )} @@ -307,4 +333,4 @@ class Dialog extends React.Component { } } -export default Dialog +export default withTheme(Dialog) diff --git a/src/dialog/docs/DialogManager.js b/src/dialog/stories/DialogManager.js similarity index 100% rename from src/dialog/docs/DialogManager.js rename to src/dialog/stories/DialogManager.js diff --git a/src/dialog/stories/index.stories.js b/src/dialog/stories/index.stories.js index 9823a76ba..f5e7df823 100644 --- a/src/dialog/stories/index.stories.js +++ b/src/dialog/stories/index.stories.js @@ -1,160 +1,328 @@ import { storiesOf } from '@storybook/react' import React from 'react' import Box from 'ui-box' -import DialogManager from '../docs/DialogManager' -import { Paragraph } from '../../typography' -import { Dialog } from '../../dialog' +import Component from '@reactions/component' +import starWarsNames from 'starwars-names' +import { Strong, Paragraph } from '../../typography' +import { Dialog } from '..' import { Button } from '../../buttons' +import { Combobox } from '../../combobox' +import { SideSheet } from '../../side-sheet' +import { Popover } from '../../popover' +import DialogManager from './DialogManager' -storiesOf('dialog', module).add('Dialog', () => ( - - {(() => { - document.body.style.margin = '0' - document.body.style.height = '100vh' - })()} - - {({ isShown, show, hide }) => ( - - - Passing a string as the content will wrap the string in a - “Paragraph” - - - - )} - - - {({ isShown, show, hide }) => ( - - - Passing a string as the content will wrap the string in a - “Paragraph” - - - - )} - - - {({ isShown, isLoading, confirmLoading, show, hide }) => ( - - - This is useful when you need to process something before closing the - dialog. - - - - )} - - - {({ isShown, show, hide }) => ( - - - This is useful for product updates and onboarding content. - - - - )} - - - {({ isShown, show, hide }) => ( - - - - Manage your own buttons and interactions. - - - - - )} - - - {({ isShown, show, hide }) => ( - - - {({ close }) => ( +// Generate a big list of items +const comboboxItems = starWarsNames.all.sort((a, b) => { + const nameA = a.toUpperCase() + const nameB = b.toUpperCase() + if (nameA < nameB) { + return -1 + } + if (nameA > nameB) { + return 1 + } + + return 0 +}) + +storiesOf('dialog', module) + .add('Dialog', () => ( + + {(() => { + document.body.style.margin = '0' + document.body.style.height = '100vh' + })()} + + {({ isShown, show, hide }) => ( + + + Passing a string as the content will wrap the string in a + “Paragraph” + + + + )} + + + {({ isShown, show, hide }) => ( + + + Passing a string as the content will wrap the string in a + “Paragraph” + + + + )} + + + {({ isShown, isLoading, confirmLoading, show, hide }) => ( + + + This is useful when you need to process something before closing + the dialog. + + + + )} + + + {({ isShown, show, hide }) => ( + + + This is useful for product updates and onboarding content. + + + + )} + + + {({ isShown, show, hide }) => ( + + - Manage Your Own Buttons and Interactions. - + Manage your own buttons and interactions. - )} - - - - )} - + + + + )} + + + {({ isShown, show, hide }) => ( + + + {({ close }) => ( + + + Manage Your Own Buttons and Interactions. + + + + )} + + + + )} + + + {({ isShown, show, hide }) => ( + + + {({ close }) => ( + + + Manage your own header, buttons and interactions. + + + + )} + + + + )} + + + {({ isShown, show, hide }) => ( + + + + + + + )} + + + {({ isShown, show, hide }) => ( + + { + console.log('You canceled') + close() + }} + > + + Resistance is futile, you shall not esc. + + + + + )} + + + )) + .add('Dialog with nested Combobox', () => ( {({ isShown, show, hide }) => ( - {({ close }) => ( - - - Manage your own header, buttons and interactions. - - - - )} + - + )} + )) + .add('Dialog with endless stacking', () => ( {({ isShown, show, hide }) => ( - + + {({ state, setState }) => ( + + + setState({ isShown: false })} + > + + {({ state: innerState, setState: innerSetState }) => { + return ( + + + innerSetState({ isShown: false }) + } + content={ + + + + } + > + + + + ) + }} + + + {({ state: innerState, setState: innerSetState }) => { + return ( + + + + + innerSetState({ isShown: false }) + } + title="Stackity Hackity" + > + + + + + ) + }} + + + + )} + - + )} - -)) + )) diff --git a/src/file-picker/index.js b/src/file-picker/index.js index c7f4aaa17..5fb699159 100644 --- a/src/file-picker/index.js +++ b/src/file-picker/index.js @@ -1 +1 @@ -export FilePicker from './src/FilePicker' +export { default as FilePicker } from './src/FilePicker' // eslint-disable-line import/prefer-default-export diff --git a/src/file-picker/src/FilePicker.js b/src/file-picker/src/FilePicker.js index 08ec7340b..1f710e4c4 100644 --- a/src/file-picker/src/FilePicker.js +++ b/src/file-picker/src/FilePicker.js @@ -8,16 +8,47 @@ export const CLASS_PREFIX = 'evergreen-file-picker' export default class FilePicker extends PureComponent { static propTypes = { + /** + * Name attribute of the input. + */ name: PropTypes.string, + + /** + * The accept attribute of the input. + */ accept: PropTypes.oneOfType([ PropTypes.string, PropTypes.arrayOf(PropTypes.string) ]), + + /** + * When true, the file picker is required. + */ required: PropTypes.bool, + + /** + * When true, accept multiple files. + */ multiple: PropTypes.bool, + + /** + * When true, the filepicker is disabled. + */ disabled: PropTypes.bool, + + /** + * The capture attribute of the input. + */ capture: PropTypes.bool, + + /** + * The height of the file picker. + */ height: PropTypes.number, + + /** + * Function called when onChange is fired + */ onChange: PropTypes.func } diff --git a/src/file-picker/stories/index.stories.js b/src/file-picker/stories/index.stories.js index e283cd0d8..a00735880 100644 --- a/src/file-picker/stories/index.stories.js +++ b/src/file-picker/stories/index.stories.js @@ -1,7 +1,7 @@ import { storiesOf } from '@storybook/react' import React from 'react' import Box from 'ui-box' -import { FilePicker } from '../../file-picker' +import { FilePicker } from '..' storiesOf('file-picker', module).add('FilePicker', () => ( diff --git a/src/file-picker/test/snapshots/index.js.md b/src/file-picker/test/snapshots/index.js.md index b382d3d0c..ae18863bb 100644 --- a/src/file-picker/test/snapshots/index.js.md +++ b/src/file-picker/test/snapshots/index.js.md @@ -24,7 +24,7 @@ Generated by [AVA](https://ava.li). /> + + + + Share... + Move... + + Rename... + + + + + + Delete... + + + + } + > + + + + + Share... + Move... + + Rename... + + + + + + Delete... + + + + } + > + + + + + {({ state, setState }) => { + return ( + setState({ selected })} + /> + ) + }} + + + + + + {({ state, setState }) => { + return ( + setState({ selected })} + /> + ) + }} + + + } + > + + + + + + } + > + + + + + + Arrow down on a button will bring focus inside the popover. + + + Arrow keys within the menu will cycle through all of the menu items + and skip disabled items. + + + The Home key (fn + arrow left) will go to the first item. + + + The End key (fn + arrow right) will go to the last item. + + + + )) + .add('Menu', () => ( +
+ + + Share... + Move... + Rename... + + + + Delete... + + +
+ )) diff --git a/src/overlay/index.js b/src/overlay/index.js index 53b61cd67..1494b48db 100644 --- a/src/overlay/index.js +++ b/src/overlay/index.js @@ -1 +1 @@ -export Overlay from './src/Overlay' +export { default as Overlay } from './src/Overlay' // eslint-disable-line import/prefer-default-export diff --git a/src/overlay/src/Overlay.js b/src/overlay/src/Overlay.js index 771171cbf..e1e1662a0 100644 --- a/src/overlay/src/Overlay.js +++ b/src/overlay/src/Overlay.js @@ -3,7 +3,9 @@ import PropTypes from 'prop-types' import Transition from 'react-transition-group/Transition' import Box, { css } from 'ui-box' import { Portal } from '../../portal' -import { colors } from '../../colors' +import { Stack } from '../../stack' +import { StackingOrder } from '../../constants' +import { withTheme } from '../../theme' const animationEasing = { standard: `cubic-bezier(0.4, 0.0, 0.2, 1)`, @@ -33,9 +35,9 @@ const fadeOutAnimation = css.keyframes('fadeOutAnimation', { } }) -const animationStyles = { +const animationStyles = backgroundColor => ({ '&::before': { - backgroundColor: colors.neutral['200A'], + backgroundColor, left: 0, top: 0, position: 'fixed', @@ -54,7 +56,7 @@ const animationStyles = { animationEasing.acceleration } both` } -} +}) /** * Overlay is essentially a wrapper around react-transition-group/Transition @@ -78,6 +80,16 @@ class Overlay extends React.Component { */ containerProps: PropTypes.object, + /** + * Boolean indicating if clicking the overlay should close the overlay. + */ + shouldCloseOnClick: PropTypes.bool, + + /** + * Boolean indicating if pressing the esc key should close the overlay. + */ + shouldCloseOnEscapePress: PropTypes.bool, + /** * Callback fired before the "exiting" status is applied. * type: `Function(node: HtmlElement) -> void` @@ -121,11 +133,18 @@ class Overlay extends React.Component { * * type: `Function(node: HtmlElement, isAppearing: bool) -> void` */ - onEntered: PropTypes.func + onEntered: PropTypes.func, + + /** + * Theme provided by ThemeProvider. + */ + theme: PropTypes.object.isRequired } static defaultProps = { onHide: () => {}, + shouldCloseOnClick: true, + shouldCloseOnEscapePress: true, onExit: () => {}, onExiting: () => {}, onExited: () => {}, @@ -220,7 +239,7 @@ class Overlay extends React.Component { onEsc = e => { // Esc key - if (e.keyCode === 27) { + if (e.keyCode === 27 && this.props.shouldCloseOnEscapePress) { this.close() } } @@ -252,7 +271,7 @@ class Overlay extends React.Component { } handleBackdropClick = e => { - if (e.target !== e.currentTarget) { + if (e.target !== e.currentTarget || !this.props.shouldCloseOnClick) { return } @@ -265,6 +284,8 @@ class Overlay extends React.Component { render() { const { + theme, + containerProps = {}, isShown, children, @@ -277,45 +298,49 @@ class Overlay extends React.Component { if (exited) return null return ( - - - {state => ( - + {zIndex => ( + + - {typeof children === 'function' - ? children({ - state, - close: this.close - }) - : children} - - )} - - + {state => ( + + {typeof children === 'function' + ? children({ + state, + close: this.close + }) + : children} + + )} + + + )} + ) } } -export default Overlay +export default withTheme(Overlay) diff --git a/src/overlay/stories/index.stories.js b/src/overlay/stories/index.stories.js index cc127e692..579f6a98f 100644 --- a/src/overlay/stories/index.stories.js +++ b/src/overlay/stories/index.stories.js @@ -2,7 +2,7 @@ import { storiesOf } from '@storybook/react' import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import Box from 'ui-box' -import { Overlay } from '../../overlay' +import { Overlay } from '..' import { Button } from '../../buttons' class OverlayManager extends PureComponent { diff --git a/src/popover/README.md b/src/popover/README.md index 2dbcaab4f..91590c8e9 100644 --- a/src/popover/README.md +++ b/src/popover/README.md @@ -8,22 +8,22 @@ Popovers use smart positioning if there is not enough space on the bottom. ## Key points -* Uses `Positioner` from `evergreen-positioner` -* Tooltips use `onMouseLeave` and `onMouseEnter` to show and hide the tooltip +- Uses `Positioner` from `evergreen-positioner` +- Tooltips use `onMouseLeave` and `onMouseEnter` to show and hide the tooltip ### When creating a popover, you must specify both: -* its content, by setting the content prop, and -* its target, as a single child element or a function +- its content, by setting the content prop, and +- its target, as a single child element or a function When you pass a function to the content prop you will be able to close the popover inside of the content. ### Popovers close on: -* outside click -* escape key -* window resize -* something in content that calls the close function +- outside click +- escape key +- window resize +- something in content that calls the close function ## Design Example diff --git a/src/popover/docs/examples/Popover-basic.example b/src/popover/docs/examples/Popover-basic.example deleted file mode 100644 index db01cedea..000000000 --- a/src/popover/docs/examples/Popover-basic.example +++ /dev/null @@ -1,16 +0,0 @@ - - PopoverContent - - } -> - - diff --git a/src/popover/docs/examples/Popover-close-inside.example b/src/popover/docs/examples/Popover-close-inside.example deleted file mode 100644 index 352805b92..000000000 --- a/src/popover/docs/examples/Popover-close-inside.example +++ /dev/null @@ -1,19 +0,0 @@ - { - return ( - - Closable Popover Content - - - ) - }} -> - - diff --git a/src/popover/docs/examples/Popover-positions.example b/src/popover/docs/examples/Popover-positions.example deleted file mode 100644 index cb3ad7dd7..000000000 --- a/src/popover/docs/examples/Popover-positions.example +++ /dev/null @@ -1,24 +0,0 @@ - - - } position={Position.TOP_LEFT}> - - - } position={Position.TOP}> - - - } position={Position.TOP_RIGHT}> - - - - - } position={Position.BOTTOM_LEFT}> - - - } position={Position.BOTTOM}> - - - } position={Position.BOTTOM_RIGHT}> - - - - diff --git a/src/popover/docs/index.js b/src/popover/docs/index.js deleted file mode 100644 index 047cc3395..000000000 --- a/src/popover/docs/index.js +++ /dev/null @@ -1,169 +0,0 @@ -import React from 'react' -import Box from 'ui-box' -import Popover from '../src/Popover' -import { Position } from '../../positioner' -import { Button } from '../../buttons' -import { Text } from '../../typography' -import { Pane } from '../../layers' - -/* eslint-disable import/no-unresolved, import/no-webpack-loader-syntax */ -import sourcePopover from '!raw-loader!../src/Popover' -/* eslint-enable import/no-unresolved, import/no-webpack-loader-syntax */ - -/** - * Code examples - */ -import examplePopoverBasic from './examples/Popover-basic.example' -import examplePopoverPositions from './examples/Popover-positions.example' -import examplePopoverCloseInside from './examples/Popover-close-inside.example' - -const title = 'Popover' -const subTitle = 'Display floating content in relation to a target.' - -const introduction = ( -
-

- The Popover component displays floating content in relation to a target. - Popovers appear either at the top or bottom of their target. The preferred - and default side is the bottom. Popovers use smart positioning if there is - not enough space on the bottom. -

-
-) - -const implementationDetails = ( -
-

- The Popover uses the Positioner from Evergreen to handle the - positioning logic. Internally the Popover will make sure the Popover is - positioned within the viewport. This means that sometimes the Popover - flips — or the Popover might move slightly to the left or right. -

- -

When Creating a Popover, You Must Specify Both:

-
    -
  • Its content, by setting the content prop, and
  • -
  • Its target, as a single child element or a function
  • -
- -

- When you pass a function to the content prop you will be able to close the - popover inside of the content. -

- -

Popovers Close On

-
    -
  • Outside click
  • -
  • Escape key
  • -
  • The close function being called
  • -
- -

Focus Management

-

- When opening the Popover, focus will be brought inside the Popover by - looking for elements with [autofocus] first and{' '} - [tabindex] second. -

-

- When passing a node as the Popover children, the Popover will handle focus - management automatically when closing the Popover. When closing, it will - return back focus on the target if nothing else has focus. -

-
-) - -const PopoverContent = () => ( - - Popover Content - -) - -const appearanceOptions = null - -const scope = { - Box, - Popover, - PopoverContent, - Button, - Pane, - Position, - Text -} - -const components = [ - { - name: 'Popover', - source: sourcePopover, - examples: [ - { - title: 'Basic Popover Example', - codeText: examplePopoverBasic, - description: ( -
-

- For the Popover to work it needs at least a target (children) and - the content property set. -

-
- ), - scope - }, - { - title: 'Popover Positions', - codeText: examplePopoverPositions, - description: ( -
-

- The Popover uses the Position object to help - determine it’s position. Internally the Popover will make sure the - Popover is positioned within the viewport. This means that - sometimes the Popover flips — or the Popover might move slightly - to the left or right. -

-

- The PopoverContent in the following example is the - same component passed in the basic example. For clarity the{' '} - PopoverContent - definition is omitted. -

-
- ), - scope - }, - { - title: 'Close From Within Content', - codeText: examplePopoverCloseInside, - description: ( -
-

- When passing a function as the content property, the Popover will - give you a close function: - {` {})>{...}`} -

-

- This allows a trigger within the content to close the Popover. -

-
- ), - scope - } - ] - } -] - -export default { - title, - subTitle, - introduction, - implementationDetails, - appearanceOptions, - components -} diff --git a/src/popover/index.js b/src/popover/index.js index 27a6e7d44..126d528c2 100644 --- a/src/popover/index.js +++ b/src/popover/index.js @@ -1 +1 @@ -export Popover from './src/Popover' +export { default as Popover } from './src/Popover' // eslint-disable-line import/prefer-default-export diff --git a/src/popover/src/Popover.js b/src/popover/src/Popover.js index 3f4338265..6790a76f1 100644 --- a/src/popover/src/Popover.js +++ b/src/popover/src/Popover.js @@ -1,6 +1,8 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import { Position, Positioner } from '../../positioner' +import { Positioner } from '../../positioner' +import { Tooltip } from '../../tooltip' +import { Position } from '../../constants' import PopoverStateless from './PopoverStateless' export default class Popover extends Component { @@ -8,7 +10,16 @@ export default class Popover extends Component { /** * The position the Popover is on. Smart positioning might override this. */ - position: PropTypes.oneOf(Object.keys(Position)), + position: PropTypes.oneOf([ + Position.TOP, + Position.TOP_LEFT, + Position.TOP_RIGHT, + Position.BOTTOM, + Position.BOTTOM_LEFT, + Position.BOTTOM_RIGHT, + Position.LEFT, + Position.RIGHT + ]), /** * When true, the Popover is manually shown. @@ -53,11 +64,6 @@ export default class Popover extends Component { */ animationDuration: PropTypes.number, - /** - * The z-index of the Popover card. - */ - zIndex: PropTypes.number, - /** * Function called when the Popover opens. */ @@ -90,12 +96,11 @@ export default class Popover extends Component { minWidth: 200, minHeight: 40, animationDuration: 300, - zIndex: 40, onOpen: () => {}, onClose: () => {}, onOpenComplete: () => {}, onCloseComplete: () => {}, - bringFocusInside: true + bringFocusInside: false } constructor(props) { @@ -115,17 +120,14 @@ export default class Popover extends Component { * https://github.com/palantir/blueprint/blob/release/2.0.0/packages/core/src/components/overlay/overlay.tsx */ bringFocusInside = () => { - if (!this.props.bringFocusInside) return - // Always delay focus manipulation to just before repaint to prevent scroll jumping return requestAnimationFrame(() => { // Container ref may be undefined between component mounting and Portal rendering // activeElement may be undefined in some rare cases in IE - if ( this.popoverNode == null || // eslint-disable-line eqeqeq, no-eq-null document.activeElement == null || // eslint-disable-line eqeqeq, no-eq-null - !this.props.isShown + !this.state.isShown ) { return } @@ -137,14 +139,16 @@ export default class Popover extends Component { // Element marked autofocus has higher priority than the other clowns const autofocusElement = this.popoverNode.querySelector('[autofocus]') const wrapperElement = this.popoverNode.querySelector('[tabindex]') - const buttonElement = this.popoverNode.querySelector('button') + const buttonElements = this.popoverNode.querySelectorAll( + 'button, a, [role="menuitem"], [role="menuitemradio"]' + ) if (autofocusElement) { autofocusElement.focus() } else if (wrapperElement) { wrapperElement.focus() - } else if (buttonElement) { - buttonElement.focus() + } else if (buttonElements.length > 0) { + buttonElements[0].focus() } } }) @@ -175,14 +179,11 @@ export default class Popover extends Component { onBodyClick = e => { // Ignore clicks on the popover or button - if (this.targetRef === e.target) { + if (this.targetRef && this.targetRef.contains(e.target)) { return } - if ( - this.popoverNode && - (this.popoverNode === e.target || this.popoverNode.contains(e.target)) - ) { + if (this.popoverNode && this.popoverNode.contains(e.target)) { return } @@ -231,7 +232,7 @@ export default class Popover extends Component { } handleOpenComplete = () => { - this.bringFocusInside() + if (this.props.bringFocusInside) this.bringFocusInside() this.props.onOpenComplete() } @@ -239,14 +240,24 @@ export default class Popover extends Component { this.props.onCloseComplete() } + handleKeyDown = e => { + if (e.key === 'ArrowDown') { + this.bringFocusInside() + } + } + renderTarget = ({ getRef, isShown }) => { const { children } = this.props + const isTooltipInside = children && children.type === Tooltip const getTargetRef = ref => { this.targetRef = ref getRef(ref) } + /** + * When a function is passed, you can control the Popover manually. + */ if (typeof children === 'function') { return children({ toggle: this.toggle, @@ -255,18 +266,44 @@ export default class Popover extends Component { }) } - return React.cloneElement(children, { + const popoverTargetProps = { onClick: this.toggle, - innerRef: getTargetRef, + onKeyDown: this.handleKeyDown, role: 'button', 'aria-expanded': isShown, 'aria-haspopup': true + } + + /** + * Tooltips can be used within a Popover (not the other way around) + * In this case the children is the Tooltip instead of a button. + * Pass the properties to the Tooltip and let the Tooltip + * add the properties to the target. + */ + if (isTooltipInside) { + return React.cloneElement(children, { + popoverProps: { + getTargetRef, + isShown, + + // These propeties will be spread as `popoverTargetProps` + // in the Tooltip component. + ...popoverTargetProps + } + }) + } + + /** + * With normal usage only popover props end up on the target. + */ + return React.cloneElement(children, { + innerRef: getTargetRef, + ...popoverTargetProps }) } render() { const { - zIndex, isShown, content, display, @@ -286,7 +323,6 @@ export default class Popover extends Component { target={({ getRef, isShown, targetWidth }) => { return this.renderTarget({ getRef, isShown, targetWidth }) }} - zIndex={zIndex} isShown={shown} position={position} animationDuration={animationDuration} diff --git a/src/popover/stories/index.stories.js b/src/popover/stories/index.stories.js index 1e0785a8c..fe9e24e41 100644 --- a/src/popover/stories/index.stories.js +++ b/src/popover/stories/index.stories.js @@ -2,12 +2,14 @@ import { storiesOf } from '@storybook/react' import React from 'react' import PropTypes from 'prop-types' import Box from 'ui-box' -import { Popover } from '../../popover' +import { Popover } from '..' +import { Tooltip } from '../../tooltip' import { TextInputField } from '../../text-input' import { Pane } from '../../layers' -import { Text } from '../../typography' +import { Heading, Paragraph, Text } from '../../typography' import { Button } from '../../buttons' -import { Position } from '../../positioner' +import { Position } from '../../constants' +import { Icon, IconNames } from '../../icon' const PopoverContent = () => ( TOP_RIGHT + + } position={Position.LEFT}> + + + } position={Position.RIGHT}> + + + )) @@ -172,3 +182,72 @@ storiesOf('popover', module) )) + .add('test jitter', () => ( + + {(() => { + document.body.style.margin = '0' + document.body.style.height = '100vh' + })()} + + + Lorem ipsum dolar set amet. Some content that keeps on going. + + + } + > + + + + )) + .add('toggle button with children', () => ( + + {(() => { + document.body.style.margin = '0' + document.body.style.height = '100vh' + })()} + }> + + + + )) + .add('Popover with tooltip', () => ( + + {(() => { + document.body.style.margin = '0' + document.body.style.height = '100vh' + })()} + }> + + + + + }> + + Heading + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + } + statelessProps={{ + paddingY: 24, + paddingX: 24, + maxWidth: 280 + }} + > + + + + + )) diff --git a/src/portal/index.js b/src/portal/index.js index 531b05ff0..60165f8c0 100644 --- a/src/portal/index.js +++ b/src/portal/index.js @@ -1 +1 @@ -export Portal from './src/Portal' +export { default as Portal } from './src/Portal' // eslint-disable-line import/prefer-default-export diff --git a/src/portal/stories/index.stories.js b/src/portal/stories/index.stories.js index ed822d6e3..0d77cc46b 100644 --- a/src/portal/stories/index.stories.js +++ b/src/portal/stories/index.stories.js @@ -1,6 +1,6 @@ import { storiesOf } from '@storybook/react' import React from 'react' -import { Portal } from '../../portal' +import { Portal } from '..' storiesOf('portal', module).add('Portal', () => (
diff --git a/src/positioner/index.js b/src/positioner/index.js index 9bc9347c7..96ac426c6 100644 --- a/src/positioner/index.js +++ b/src/positioner/index.js @@ -1,2 +1 @@ -export Positioner from './src/Positioner' -export Position from './src/Position' +export { default as Positioner } from './src/Positioner' // eslint-disable-line import/prefer-default-export diff --git a/src/positioner/src/Position.js b/src/positioner/src/Position.js deleted file mode 100644 index 80e978c96..000000000 --- a/src/positioner/src/Position.js +++ /dev/null @@ -1,8 +0,0 @@ -export default { - TOP: 'TOP', - TOP_LEFT: 'TOP_LEFT', - TOP_RIGHT: 'TOP_RIGHT', - BOTTOM: 'BOTTOM', - BOTTOM_LEFT: 'BOTTOM_LEFT', - BOTTOM_RIGHT: 'BOTTOM_RIGHT' -} diff --git a/src/positioner/src/Positioner.js b/src/positioner/src/Positioner.js index 00681961f..eec33f747 100644 --- a/src/positioner/src/Positioner.js +++ b/src/positioner/src/Positioner.js @@ -2,8 +2,9 @@ import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import Transition from 'react-transition-group/Transition' import { Portal } from '../../portal' +import { Stack } from '../../stack' +import { StackingOrder, Position } from '../../constants' import getPosition from './getPosition' -import Position from './Position' const animationEasing = { spring: `cubic-bezier(0.175, 0.885, 0.320, 1.175)` @@ -39,7 +40,16 @@ export default class Positioner extends PureComponent { * The position the element that is being positioned is on. * Smart positioning might override this. */ - position: PropTypes.oneOf(Object.keys(Position)).isRequired, + position: PropTypes.oneOf([ + Position.TOP, + Position.TOP_LEFT, + Position.TOP_RIGHT, + Position.BOTTOM, + Position.BOTTOM_LEFT, + Position.BOTTOM_RIGHT, + Position.LEFT, + Position.RIGHT + ]).isRequired, /** * When true, show the element being positioned. @@ -72,11 +82,6 @@ export default class Positioner extends PureComponent { */ target: PropTypes.func.isRequired, - /** - * The z-index of the element being positioned. - */ - zIndex: PropTypes.number.isRequired, - /** * Initial scale of the element being positioned. */ @@ -100,7 +105,6 @@ export default class Positioner extends PureComponent { static defaultProps = { position: Position.BOTTOM, - zIndex: 40, bodyOffset: 6, targetOffset: 6, initialScale: 0.9, @@ -115,6 +119,12 @@ export default class Positioner extends PureComponent { this.state = initialState() } + componentWillUnmount() { + if (this.latestAnimationFrame) { + cancelAnimationFrame(this.latestAnimationFrame) + } + } + getTargetRef = ref => { this.targetRef = ref } @@ -128,23 +138,44 @@ export default class Positioner extends PureComponent { this.update() } - getTargetRect = () => this.targetRef.getBoundingClientRect() - - update = () => { + update = (prevHeight = 0, prevWidth = 0) => { if (!this.props.isShown || !this.targetRef || !this.positionerRef) return - const targetRect = this.getTargetRect() + const targetRect = this.targetRef.getBoundingClientRect() + const hasEntered = + this.positionerRef.getAttribute('data-state') === 'entered' + const viewportHeight = document.documentElement.clientHeight + window.scrollY const viewportWidth = document.documentElement.clientWidth + window.scrollX + let height + let width + if (hasEntered) { + // Only when the animation is done should we opt-in to `getBoundingClientRect` + const positionerRect = this.positionerRef.getBoundingClientRect() + + // https://github.com/segmentio/evergreen/issues/255 + // We need to ceil the width and height to prevent jitter when + // the window is zoomed (when `window.devicePixelRatio` is not an integer) + height = Math.round(positionerRect.height) + width = Math.round(positionerRect.width) + } else { + // When the animation is in flight use `offsetWidth/Height` which + // does not calculate the `transform` property as part of its result. + // There is still change on jitter during the animation (although unoticable) + // When the browser is zoomed in — we fix this with `Math.max`. + height = Math.max(this.positionerRef.offsetHeight, prevHeight) + width = Math.max(this.positionerRef.offsetWidth, prevWidth) + } + const { rect, transformOrigin } = getPosition({ position: this.props.position, targetRect, targetOffset: this.props.targetOffset, dimensions: { - height: this.positionerRef.offsetHeight, - width: this.positionerRef.offsetWidth + height, + width }, viewport: { width: viewportWidth, @@ -160,8 +191,8 @@ export default class Positioner extends PureComponent { transformOrigin }, () => { - window.requestAnimationFrame(() => { - this.update() + this.latestAnimationFrame = requestAnimationFrame(() => { + this.update(height, width) }) } ) @@ -182,7 +213,6 @@ export default class Positioner extends PureComponent { render() { const { - zIndex, target, isShown, children, @@ -194,37 +224,48 @@ export default class Positioner extends PureComponent { const { left, top, transformOrigin } = this.state return ( - - {target({ getRef: this.getTargetRef, isShown })} - - - {state => - children({ - top, - left, - state, - zIndex, - css: getCSS({ targetOffset, initialScale, animationDuration }), - style: { - transformOrigin, - left, - top, - zIndex - }, - getRef: this.getRef, - animationDuration - }) - } - - - + + {zIndex => { + return ( + + {target({ getRef: this.getTargetRef, isShown })} + + + {state => ( + + {children({ + top, + left, + state, + zIndex, + css: getCSS({ + targetOffset, + initialScale, + animationDuration + }), + style: { + transformOrigin, + left, + top, + zIndex + }, + getRef: this.getRef, + animationDuration + })} + + )} + + + ) + }} + ) } } diff --git a/src/positioner/src/getPosition.js b/src/positioner/src/getPosition.js index 33ee4f1e7..d7729dc96 100644 --- a/src/positioner/src/getPosition.js +++ b/src/positioner/src/getPosition.js @@ -1,4 +1,4 @@ -import Position from './Position' +import { Position } from '../../constants' /** * Function to create a Rect. @@ -62,6 +62,21 @@ const isAlignedOnTop = position => { } } +/** + * Function that returns if position is aligned left or right. + * @param {Position} position + * @return {Boolean} + */ +const isAlignedHorizontal = position => { + switch (position) { + case Position.LEFT: + case Position.RIGHT: + return true + default: + return false + } +} + /** * Function that returns if a rect fits on bottom. * @param {Rect} rect @@ -84,18 +99,56 @@ const getFitsOnTop = (rect, viewportOffset) => { } /** + * Function that returns if a rect fits on right. + * @param {Rect} rect + * @param {Object} viewport + * @param {Number} viewportOffset + * @return {Boolean} + */ +const getFitsOnRight = (rect, viewport, viewportOffset) => { + return rect.right < viewport.width - viewportOffset +} + +/** + * Function that returns if a rect fits on left. + * @param {Rect} rect + * @param {Number} viewportOffset + * @return {Boolean} + */ +const getFitsOnLeft = (rect, viewportOffset) => { + return rect.left > viewportOffset +} + +/** + * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-origin * Function that returns the CSS `tranform-origin` property. * @param {Rect} rect * @param {Position} position + * @param {Object} dimensions — the dimensions of the positioner. * @param {Number} targetCenter - center of the target. * @return {String} transform origin */ -const getTransformOrigin = ({ rect, position, targetCenter }) => { - const center = Math.round(targetCenter - rect.left) +const getTransformOrigin = ({ rect, position, dimensions, targetCenter }) => { + const centerY = Math.round(targetCenter - rect.top) + + if (position === Position.LEFT) { + /* Syntax: x-offset | y-offset */ + return `${dimensions.width}px ${centerY}px` + } + + if (position === Position.RIGHT) { + /* Syntax: x-offset | y-offset */ + return `0px ${centerY}px` + } + + const centerX = Math.round(targetCenter - rect.left) + if (isAlignedOnTop(position)) { - return `bottom ${center}px` + /* Syntax: x-offset | y-offset */ + return `${centerX}px ${dimensions.height}px ` } - return `top ${center}px` + /* Syntax: x-offset | y-offset */ + return `${centerX}px 0px ` } /** @@ -116,8 +169,6 @@ export default function getFittedPosition({ viewport, viewportOffset = 8 }) { - const targetCenter = targetRect.left + targetRect.width / 2 - const { rect, position: finalPosition } = getPosition({ position, dimensions, @@ -140,9 +191,27 @@ export default function getFittedPosition({ rect.right -= delta } + // Push rect down if overflowing on the top side of the viewport. + if (rect.top < viewportOffset) { + rect.top += Math.ceil(Math.abs(rect.top - viewportOffset)) + rect.bottom = Math.ceil(viewportOffset) + } + + // Push rect up if overflowing on the bottom side of the viewport. + if (rect.bottom > viewport.height - viewportOffset) { + const delta = Math.ceil(rect.bottom - (viewport.height - viewportOffset)) + rect.top -= delta + rect.right -= delta + } + + const targetCenter = isAlignedHorizontal(position) + ? targetRect.top + targetRect.height / 2 + : targetRect.left + targetRect.width / 2 + const transformOrigin = getTransformOrigin({ rect, position: finalPosition, + dimensions, targetCenter }) @@ -171,6 +240,76 @@ function getPosition({ viewport, viewportOffset = 8 }) { + const isHorizontal = isAlignedHorizontal(position) + + // Handle left and right positions + if (isHorizontal) { + const leftRect = getRect({ + position: Position.LEFT, + dimensions, + targetRect, + targetOffset + }) + + const rightRect = getRect({ + position: Position.RIGHT, + dimensions, + targetRect, + targetOffset + }) + + const fitsOnLeft = getFitsOnLeft(leftRect, viewportOffset) + const fitsOnRight = getFitsOnRight(rightRect, viewport, viewportOffset) + + if (position === Position.LEFT) { + if (fitsOnLeft) { + return { + position, + rect: leftRect + } + } + if (fitsOnRight) { + return { + position: Position.RIGHT, + rect: rightRect + } + } + } + + if (position === Position.RIGHT) { + if (fitsOnRight) { + return { + position, + rect: rightRect + } + } + if (fitsOnLeft) { + return { + position: Position.LEFT, + rect: leftRect + } + } + } + + // Default to using the position with the most space + const spaceRight = Math.abs( + viewport.width - viewportOffset - rightRect.right + ) + const spaceLeft = Math.abs(leftRect.left - viewportOffset) + + if (spaceRight < spaceLeft) { + return { + position: Position.RIGHT, + rect: rightRect + } + } + + return { + position: Position.LEFT, + rect: leftRect + } + } + const positionIsAlignedOnTop = isAlignedOnTop(position) let topRect let bottomRect @@ -204,16 +343,25 @@ function getPosition({ } const topRectFitsOnTop = getFitsOnTop(topRect, viewportOffset) + const bottomRectFitsOnBottom = getFitsOnBottom( bottomRect, viewport, viewportOffset ) - if (positionIsAlignedOnTop && topRectFitsOnTop) { - return { - position, - rect: topRect + if (positionIsAlignedOnTop) { + if (topRectFitsOnTop) { + return { + position, + rect: topRect + } + } + if (bottomRectFitsOnBottom) { + return { + position: flipHorizontal(position), + rect: bottomRect + } } } @@ -223,7 +371,8 @@ function getPosition({ position, rect: bottomRect } - } else if (topRectFitsOnTop) { + } + if (topRectFitsOnTop) { return { position: flipHorizontal(position), rect: topRect @@ -235,6 +384,7 @@ function getPosition({ const spaceBottom = Math.abs( viewport.height - viewportOffset - bottomRect.bottom ) + const spaceTop = Math.abs(topRect.top - viewportOffset) if (spaceBottom < spaceTop) { @@ -263,8 +413,20 @@ function getRect({ position, targetOffset, dimensions, targetRect }) { const alignedTopY = targetRect.top - dimensions.height - targetOffset const alignedBottomY = targetRect.bottom + targetOffset const alignedRightX = targetRect.right - dimensions.width + const alignedLeftRightY = + targetRect.top + targetRect.height / 2 - dimensions.height / 2 switch (position) { + case Position.LEFT: + return makeRect(dimensions, { + left: targetRect.left - dimensions.width - targetOffset, + top: alignedLeftRightY + }) + case Position.RIGHT: + return makeRect(dimensions, { + left: targetRect.right + targetOffset, + top: alignedLeftRightY + }) case Position.TOP: return makeRect(dimensions, { left: leftRect, diff --git a/src/positioner/test/index.js b/src/positioner/test/index.js new file mode 100644 index 000000000..429a15243 --- /dev/null +++ b/src/positioner/test/index.js @@ -0,0 +1,114 @@ +import test from 'ava' +import getFittedPosition from '../src/getPosition' +import { Position } from '../../constants' + +const dimensions = overrides => ({ + height: 100, + width: 100, + ...overrides +}) + +const targetRect = overrides => ({ + x: 250, + y: 150, + width: 50, + height: 30, + top: 150, + bottom: 150 - 30, + left: 250, + right: 200, + ...overrides +}) + +const targetOffset = 6 + +const viewport = overrides => ({ + height: 250, + width: 850, + ...overrides +}) + +test('All positions work', t => { + const generatedPositions = Object.values(Position).map(position => + getFittedPosition({ + position, + dimensions: dimensions(), + targetRect: targetRect(), + targetOffset, + viewport: viewport() + }) + ) + t.snapshot(generatedPositions) +}) + +test('Position.LEFT repositions to the right', t => { + t.snapshot( + getFittedPosition({ + position: Position.LEFT, + dimensions: dimensions({ width: 350 }), + targetRect: targetRect(), + targetOffset, + viewport: viewport() + }) + ) +}) + +test('Position.RIGHT repositions to the left', t => { + t.snapshot( + getFittedPosition({ + position: Position.RIGHT, + dimensions: dimensions({ width: 250 }), + targetRect: targetRect({ left: 800, x: 800, right: 850 }), + targetOffset, + viewport: viewport() + }) + ) +}) + +test('Position.LEFT and Position.RIGHT will use the side with the most space', t => { + t.snapshot( + getFittedPosition({ + position: Position.LEFT, + dimensions: dimensions({ width: 250 }), + targetRect: targetRect({ left: 50, x: 50, right: 100 }), + targetOffset, + viewport: viewport({ width: 300 }) + }) + ) +}) + +test('Position.TOP repositions to the bottom', t => { + t.snapshot( + getFittedPosition({ + position: Position.TOP, + dimensions: dimensions({ height: 250 }), + targetRect: targetRect({ top: 20, y: 20 }), + targetOffset, + viewport: viewport() + }) + ) +}) + +test('Position.BOTTOM repositions to the top', t => { + t.snapshot( + getFittedPosition({ + position: Position.BOTTOM, + dimensions: dimensions({ height: 250 }), + targetRect: targetRect({ top: 290, y: 290, bottom: 295, height: 5 }), + targetOffset, + viewport: viewport({ height: 300 }) + }) + ) +}) + +test('It pushes the rect to the right if overflowing on the left side', t => { + t.snapshot( + getFittedPosition({ + position: Position.BOTTOM, + dimensions: dimensions({ width: 250, height: 110 }), + targetRect: targetRect({ left: 10, x: 10, top: 10, y: 10, bottom: 20 }), + targetOffset, + viewport: viewport() + }) + ) +}) diff --git a/src/positioner/test/snapshots/index.js.md b/src/positioner/test/snapshots/index.js.md new file mode 100644 index 000000000..daca38678 --- /dev/null +++ b/src/positioner/test/snapshots/index.js.md @@ -0,0 +1,210 @@ +# Snapshot report for `src/positioner/test/index.js` + +The actual snapshot is saved in `index.js.snap`. + +Generated by [AVA](https://ava.li). + +## All positions work + +> Snapshot 1 + + [ + { + position: 'top', + rect: { + bottom: 144, + height: 100, + left: 225, + right: 325, + top: 44, + width: 100, + }, + transformOrigin: '50px 100px ', + }, + { + position: 'top-left', + rect: { + bottom: 144, + height: 100, + left: 250, + right: 350, + top: 44, + width: 100, + }, + transformOrigin: '25px 100px ', + }, + { + position: 'top-right', + rect: { + bottom: 144, + height: 100, + left: 100, + right: 200, + top: 44, + width: 100, + }, + transformOrigin: '175px 100px ', + }, + { + position: 'bottom', + rect: { + bottom: 226, + height: 100, + left: 225, + right: 325, + top: 126, + width: 100, + }, + transformOrigin: '50px 0px ', + }, + { + position: 'bottom-left', + rect: { + bottom: 226, + height: 100, + left: 250, + right: 350, + top: 126, + width: 100, + }, + transformOrigin: '25px 0px ', + }, + { + position: 'bottom-right', + rect: { + bottom: 226, + height: 100, + left: 100, + right: 200, + top: 126, + width: 100, + }, + transformOrigin: '175px 0px ', + }, + { + position: 'left', + rect: { + bottom: 215, + height: 100, + left: 144, + right: 244, + top: 115, + width: 100, + }, + transformOrigin: '100px 50px', + }, + { + position: 'right', + rect: { + bottom: 215, + height: 100, + left: 206, + right: 306, + top: 115, + width: 100, + }, + transformOrigin: '0px 50px', + }, + ] + +## It pushes the rect to the right if overflowing on the left side + +> Snapshot 1 + + { + position: 'bottom', + rect: { + bottom: 136, + height: 110, + left: 8, + right: 258, + top: 26, + width: 250, + }, + transformOrigin: '27px 0px ', + } + +## Position.BOTTOM repositions to the top + +> Snapshot 1 + + { + position: 'top', + rect: { + bottom: 284, + height: 250, + left: 225, + right: 325, + top: 34, + width: 100, + }, + transformOrigin: '50px 250px ', + } + +## Position.LEFT and Position.RIGHT will use the side with the most space + +> Snapshot 1 + + { + position: 'right', + rect: { + bottom: 215, + height: 100, + left: 42, + right: 292, + top: 115, + width: 250, + }, + transformOrigin: '0px 50px', + } + +## Position.LEFT repositions to the right + +> Snapshot 1 + + { + position: 'right', + rect: { + bottom: 215, + height: 100, + left: 206, + right: 556, + top: 115, + width: 350, + }, + transformOrigin: '0px 50px', + } + +## Position.RIGHT repositions to the left + +> Snapshot 1 + + { + position: 'left', + rect: { + bottom: 215, + height: 100, + left: 544, + right: 794, + top: 115, + width: 250, + }, + transformOrigin: '250px 50px', + } + +## Position.TOP repositions to the bottom + +> Snapshot 1 + + { + position: 'bottom', + rect: { + bottom: 376, + height: 250, + left: 225, + right: 191, + top: -8, + width: 100, + }, + transformOrigin: '50px 0px ', + } diff --git a/src/positioner/test/snapshots/index.js.snap b/src/positioner/test/snapshots/index.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..b9a9be9c24740cf90828979afba7ee925addbf76 GIT binary patch literal 1199 zcmV;g1W@}yRzV^&jB(IUUz^6IA z?|be!x#zx<`*NCyZ1mw8^UQU_i?=VCvhDorYhR`qX|FXEL?Z22pSdZ){GRod{jv9tub;vA=zCtG9f`Z4_Fb2KFK@ZiS^e`0Vtn+mDMSaK z>0iCz{Ok7LzdN@7(2kl*jE|;$L`z?~{>@*5SHJkFs{ZD@RC+bzqpwyG?fL%5oVkA= zjYX#Vs=v1QFEc*+=TssyGS^;AW%d{Fz7nhhArJvuK?-~T_5vTXRx-5ZCZAU--OQ( zo(IjQY$n!KEt}dxNoE>1y$s6D!a6**3B>4~|cR-be=qZaJcT4hSNJ8LUuuqhG^W_!1 zQXXhbk7$;qlBuz1BAg6IBVz;RWHd(1&DbSOHa4ilF@@miNydYb#Kvg6b5%Ut9v+{- z*)TuWJ*#fM_P4N*DnicN+_o{v<2tMc;|3avjBD58VvdeX;N=DbyXqDe8`;_tO(vtA zJnTCL!`k^e7ar4@iJ4pIQ$_>xg)Tg>D;qes(jx{VJ2ER>cxYw(!`9i1hU8_{*1E8e zmfXkOY%r#pi>NZ&0nBn3TmVDBrV`Bo&#J=BZWeoktr?OK=mq`Y47dhHL|2RC>a!C) z3L3#$5C?tWkX>-KNv?yCTm-)Yrvq&gG=ZQ)aJ5UWJ&>fpe(*W?0o()AoPw)Ua;=AC z5qJf3fnDG;a6xpfkX&y=G7Q`7=h3Uux-w$jkZ}1xnL>Kp3Al| z{b#K56{gl?tT4Fc|En@V&{cxU - - - - - - - - - - - - - - diff --git a/src/radio/docs/examples/RadioGroup-basic.example b/src/radio/docs/examples/RadioGroup-basic.example deleted file mode 100644 index 4637118b0..000000000 --- a/src/radio/docs/examples/RadioGroup-basic.example +++ /dev/null @@ -1,42 +0,0 @@ -
- - {({ state, setState }) => ( - setState({ value })} - /> - )} - - - {({ state, setState }) => ( - setState({ value })} - /> - )} - -
diff --git a/src/radio/docs/index.js b/src/radio/docs/index.js deleted file mode 100644 index 16f601606..000000000 --- a/src/radio/docs/index.js +++ /dev/null @@ -1,68 +0,0 @@ -import React from 'react' -import Box from 'ui-box' -import Component from '@reactions/component' -import Radio from '../src/Radio' -import RadioGroup from '../src/RadioGroup' - -/* eslint-disable import/no-unresolved, import/no-webpack-loader-syntax */ -import sourceRadio from '!raw-loader!../src/Radio' -import sourceRadioGroup from '!raw-loader!../src/RadioGroup' -/* eslint-enable import/no-unresolved, import/no-webpack-loader-syntax */ - -/** - * Code examples - */ -import exampleRadioBasic from './examples/Radio-basic.example' -import exampleRadioGroupBasic from './examples/RadioGroup-basic.example' - -const title = 'Radio' -const subTitle = 'A radio control.' - -const introduction = ( -
-

- The radio and radio group are used for selecting a single option from a - list. If you need to have an unselected state, just add a radio button - with a None option. Begin labels with a capital letter. -

-
-) - -const scope = { - Box, - Component, - Radio, - RadioGroup -} - -const components = [ - { - name: 'RadioGroup', - source: sourceRadioGroup, - examples: [ - { - title: 'Basic Radio Group Example', - codeText: exampleRadioGroupBasic, - scope - } - ] - }, - { - name: 'Radio', - source: sourceRadio, - examples: [ - { - title: 'Basic Radio Example', - codeText: exampleRadioBasic, - scope - } - ] - } -] - -export default { - title, - subTitle, - introduction, - components -} diff --git a/src/radio/index.js b/src/radio/index.js index 21ff12226..dd27b8dea 100644 --- a/src/radio/index.js +++ b/src/radio/index.js @@ -1,2 +1,2 @@ -export Radio from './src/Radio' -export RadioGroup from './src/RadioGroup' +export { default as Radio } from './src/Radio' +export { default as RadioGroup } from './src/RadioGroup' diff --git a/src/radio/src/Radio.js b/src/radio/src/Radio.js index c4c787030..ac050ef8b 100644 --- a/src/radio/src/Radio.js +++ b/src/radio/src/Radio.js @@ -2,7 +2,7 @@ import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import Box, { spacing, position, layout, dimensions } from 'ui-box' import { Text } from '../../typography' -import { CheckboxAppearances } from '../../shared-styles' +import { withTheme } from '../../theme' const CircleIcon = ({ size, fill = 'currentColor', ...props }) => ( @@ -15,7 +15,7 @@ CircleIcon.propTypes = { size: PropTypes.number } -export default class Radio extends PureComponent { +class Radio extends PureComponent { static propTypes = { /** * Composes some Box APIs. @@ -46,7 +46,11 @@ export default class Radio extends PureComponent { value: PropTypes.string, /** - * Function called when state changes. + * Function called when state changes + * Signature: + * ``` + * function(event: object, checked: boolean) => void + * ``` */ onChange: PropTypes.func, @@ -74,18 +78,36 @@ export default class Radio extends PureComponent { * When true, the aria-invalid attribute is true. * Used for accessibility. */ - isInvalid: PropTypes.bool.isRequired + isInvalid: PropTypes.bool.isRequired, + + /** + * The appearance of the checkbox. + * The default theme only comes with a default style. + */ + appearance: PropTypes.string.isRequired, + + /** + * Theme provided by ThemeProvider. + */ + theme: PropTypes.object.isRequired } static defaultProps = { + appearance: 'default', onChange: () => {}, size: 12, isRequired: false, isInvalid: false } + handleChange = event => { + this.props.onChange(event, event.target.checked) + } + render() { const { + theme, + id, name, label, @@ -96,30 +118,32 @@ export default class Radio extends PureComponent { value, size, isRequired, + appearance, ...props } = this.props - const appearanceStyle = CheckboxAppearances.default + const themedClassName = theme.getRadioClassName(appearance) return ( onChange(e.target.value)} + onChange={this.handleChange} disabled={disabled} aria-invalid={isInvalid} required={isRequired} - css={appearanceStyle} /> @@ -137,7 +161,7 @@ export default class Radio extends PureComponent { {label} @@ -146,3 +170,5 @@ export default class Radio extends PureComponent { ) } } + +export default withTheme(Radio) diff --git a/src/radio/src/RadioGroup.js b/src/radio/src/RadioGroup.js index a65c7494a..1a0ef81bd 100644 --- a/src/radio/src/RadioGroup.js +++ b/src/radio/src/RadioGroup.js @@ -77,7 +77,9 @@ export default class RadioGroup extends PureComponent { radioCount += 1 } - handleChange = value => { + handleChange = event => { + const { value } = event.target + // Save a render cycle when it's a controlled input if (!this.props.value) { this.setState({ value }) @@ -106,11 +108,7 @@ export default class RadioGroup extends PureComponent { return ( {label && ( - + {label} )} @@ -123,7 +121,7 @@ export default class RadioGroup extends PureComponent { label={item.label} checked={selected === item.value} disabled={item.isDisabled} - onChange={() => this.handleChange(item.value)} + onChange={this.handleChange} isRequired={isRequired} /> ))} diff --git a/src/radio/stories/index.stories.js b/src/radio/stories/index.stories.js index 9c0a11810..95ee4d80f 100644 --- a/src/radio/stories/index.stories.js +++ b/src/radio/stories/index.stories.js @@ -2,7 +2,7 @@ import { storiesOf } from '@storybook/react' import React from 'react' import Box from 'ui-box' import Component from '@reactions/component' -import { Radio, RadioGroup } from '../../radio' +import { Radio, RadioGroup } from '..' import { Heading } from '../../typography' storiesOf('radio', module) @@ -60,7 +60,16 @@ storiesOf('radio', module) document.body.style.margin = '0' document.body.style.height = '100vh' })()} - Default usage, size 12 + Indeterminate Single Radio (uncommon) + + + + + Default usage, size 12 diff --git a/src/scales/index.js b/src/scales/index.js new file mode 100644 index 000000000..d89f77bbb --- /dev/null +++ b/src/scales/index.js @@ -0,0 +1,2 @@ +export { default as minorScale } from './src/minorScale' +export { default as majorScale } from './src/majorScale' diff --git a/src/scales/src/majorScale.js b/src/scales/src/majorScale.js new file mode 100644 index 000000000..6711ec6f2 --- /dev/null +++ b/src/scales/src/majorScale.js @@ -0,0 +1,16 @@ +/** + * Helper function to conform to 8 (px) major scale. + * @param {number} x — unitless number + * @return {number} - unitless number + * @example + * majorScale(2) => 2*8 = 16 + * majorScale(4) => 4*8 = 32 + */ +export default function majorScale(x) { + if (!Number.isInteger(x)) { + throw new TypeError( + `majorScale only accepts integers as input, instead ${x} was passed.` + ) + } + return x * 8 +} diff --git a/src/scales/src/minorScale.js b/src/scales/src/minorScale.js new file mode 100644 index 000000000..e17ba8fa4 --- /dev/null +++ b/src/scales/src/minorScale.js @@ -0,0 +1,16 @@ +/** + * Helper function to conform to 4 (px) minor scale. + * @param {number} x — unitless number + * @return {number} - unitless number + * @example + * minorScale(3) => 3*4 = 12 + * minorScale(1) => 1*4 = 4 + */ +export default function minorScale(x) { + if (!Number.isInteger(x)) { + throw new TypeError( + `minorScale only accepts integers as input, instead ${x} was passed.` + ) + } + return x * 4 +} diff --git a/src/search-input/docs/examples/SearchInput-basic.example b/src/search-input/docs/examples/SearchInput-basic.example deleted file mode 100644 index 8d0bf6bbe..000000000 --- a/src/search-input/docs/examples/SearchInput-basic.example +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/search-input/docs/index.js b/src/search-input/docs/index.js deleted file mode 100644 index e3d01b0e9..000000000 --- a/src/search-input/docs/index.js +++ /dev/null @@ -1,56 +0,0 @@ -import React from 'react' -import Box from 'ui-box' -import SearchInput from '../src/SearchInput' - -/* eslint-disable import/no-unresolved, import/no-webpack-loader-syntax */ -import sourceSearchInput from '!raw-loader!../src/SearchInput' -/* eslint-enable import/no-unresolved, import/no-webpack-loader-syntax */ - -/** - * Code examples - */ -import exampleSearchInputBasic from './examples/SearchInput-basic.example' - -const title = 'Search Input' -const subTitle = 'A text input with a search icon.' - -const introduction = ( -
-

- The SearchInput component is a component that combines a{' '} - TextInput with a search icon. It works exactly the same as a{' '} - TextInput. -

-
-) - -const scope = { - Box, - SearchInput -} - -const components = [ - { - name: 'SearchInput', - source: sourceSearchInput, - description: ( -

- The SearchInput component. -

- ), - examples: [ - { - title: 'Basic SearchInput Example', - codeText: exampleSearchInputBasic, - scope - } - ] - } -] - -export default { - title, - subTitle, - introduction, - components -} diff --git a/src/search-input/index.js b/src/search-input/index.js index a6d78fca1..151e43fcb 100644 --- a/src/search-input/index.js +++ b/src/search-input/index.js @@ -1 +1 @@ -export SearchInput from './src/SearchInput' +export { default as SearchInput } from './src/SearchInput' // eslint-disable-line import/prefer-default-export diff --git a/src/search-input/src/SearchInput.js b/src/search-input/src/SearchInput.js index 52cd160a3..6fb216371 100644 --- a/src/search-input/src/SearchInput.js +++ b/src/search-input/src/SearchInput.js @@ -1,10 +1,11 @@ import React, { PureComponent } from 'react' import Box, { splitBoxProps } from 'ui-box' -import { SearchIcon } from '../../icons' -import { getIconSizeForControlHeight } from '../../shared-styles' +import { Icon } from '../../icon' import { TextInput } from '../../text-input' +import { withTheme } from '../../theme' +import { StackingOrder } from '../../constants' -export default class SearchInput extends PureComponent { +class SearchInput extends PureComponent { static propTypes = { /** * Composes the TextInput component as the base. @@ -18,10 +19,11 @@ export default class SearchInput extends PureComponent { } render() { - const { appearance, iconProps, disabled, height, ...props } = this.props + const { theme, appearance, disabled, height, ...props } = this.props const { matchedProps, remainingProps } = splitBoxProps(props) - const { width = TextInput.defaultProps.width } = matchedProps - const iconSize = getIconSizeForControlHeight({ height }) + const { width } = matchedProps + const iconSize = theme.getIconSizeForInput(height) + return ( - + display="flex" + justifyContent="center" + alignItems="center" + > + + diff --git a/src/segmented-control/docs/examples/SegmentedControl-basic.example b/src/segmented-control/docs/examples/SegmentedControl-basic.example deleted file mode 100644 index 7636e5699..000000000 --- a/src/segmented-control/docs/examples/SegmentedControl-basic.example +++ /dev/null @@ -1,19 +0,0 @@ - - {({ state, setState }) => ( - setState({ value })} - /> - )} - diff --git a/src/segmented-control/docs/examples/SegmentedControl-small.example b/src/segmented-control/docs/examples/SegmentedControl-small.example deleted file mode 100644 index 21eb4085e..000000000 --- a/src/segmented-control/docs/examples/SegmentedControl-small.example +++ /dev/null @@ -1,16 +0,0 @@ - - {({ state, setState }) => ( - setState({ value })} - /> - )} - diff --git a/src/segmented-control/docs/index.js b/src/segmented-control/docs/index.js deleted file mode 100644 index 74422585f..000000000 --- a/src/segmented-control/docs/index.js +++ /dev/null @@ -1,113 +0,0 @@ -import React from 'react' -import Box from 'ui-box' -import Component from '@reactions/component' -import SegmentedControl from '../src/SegmentedControl' - -/* eslint-disable import/no-unresolved, import/no-webpack-loader-syntax */ -import sourceSegmentedControl from '!raw-loader!../src/SegmentedControl' -/* eslint-enable import/no-unresolved, import/no-webpack-loader-syntax */ - -/** - * Code examples - */ -import exampleSegmentedControlBasic from './examples/SegmentedControl-basic.example' -import exampleSegmentedControlSmall from './examples/SegmentedControl-small.example' - -const title = 'Segmented Control' -const subTitle = 'A set of two or more attached button segments.' - -const introduction = ( -
-

- A segmented control is a set of two or more button segments. Within the - control, all segments are equal in width. A segmented control is often - used to switch between views of some data. Use a segmented control only - when the options are predefined and are at most 4 options. -

-
-) - -const designGuidelines = ( -
-

- By default the segmented control has a height of 32px (the - same as a button). It is possible to change this to any height and the - text style and spacing will adjust. You should however keep things on the{' '} - 8px grid or in some cases the 4px grid. You - should only need the following recommended heights. -

-

Recommended heights

-
    -
  • - 24px -
  • -
  • - 32px — default height -
  • -
  • - 36px -
  • -
  • - 40px -
  • -
-
-) - -const implementationDetails = ( -
-

The segmented control implements most of the useful Box APIs

-
    -
  • spacing
  • -
  • position
  • -
  • layout
  • -
  • dimensions
  • -
-

- That means you can pass properties such as marginTop,{' '} - width and height. -

-
-) - -const scope = { - Component, - Box, - SegmentedControl -} - -const components = [ - { - name: 'SegmentedControl', - source: sourceSegmentedControl, - examples: [ - { - title: 'Basic Segmented Control Example', - codeText: exampleSegmentedControlBasic, - scope - }, - { - title: 'Small Segmented Control Example', - codeText: exampleSegmentedControlSmall, - description: ( -
-

- The segmented will automatically chose the text style to match - whatever height is passed. -

-
- ), - scope - } - ] - } -] - -export default { - title, - subTitle, - introduction, - designGuidelines, - implementationDetails, - components -} diff --git a/src/segmented-control/index.js b/src/segmented-control/index.js index 0896cdb68..234f34f00 100644 --- a/src/segmented-control/index.js +++ b/src/segmented-control/index.js @@ -1,2 +1 @@ -export SegmentedControl from './src/SegmentedControl' -export SegmentedControlAppearances from './src/styles/SegmentedControlAppearances' +export { default as SegmentedControl } from './src/SegmentedControl' // eslint-disable-line import/prefer-default-export diff --git a/src/segmented-control/src/SegmentedControl.js b/src/segmented-control/src/SegmentedControl.js index 2d1b8881b..cbdee8db7 100644 --- a/src/segmented-control/src/SegmentedControl.js +++ b/src/segmented-control/src/SegmentedControl.js @@ -21,19 +21,31 @@ export default class SegmentedControl extends PureComponent { options: PropTypes.arrayOf( PropTypes.shape({ label: PropTypes.node.isRequired, - value: PropTypes.string.isRequired + value: PropTypes.oneOfType([ + PropTypes.number, + PropTypes.string, + PropTypes.bool + ]).isRequired }) ).isRequired, /** * The current value of the Segmented Control when controlled. */ - value: PropTypes.string, + value: PropTypes.oneOfType([ + PropTypes.number, + PropTypes.string, + PropTypes.bool + ]), /** * The default value of the Segmented Control when uncontrolled. */ - defaultValue: PropTypes.string, + defaultValue: PropTypes.oneOfType([ + PropTypes.number, + PropTypes.string, + PropTypes.bool + ]), /** * Function called when the value changes. @@ -58,27 +70,37 @@ export default class SegmentedControl extends PureComponent { constructor(props, context) { super(props, context) + let value = props.defaultValue + if (typeof value === 'undefined' || value === null) { + value = props.options[0].value + } + this.state = { - value: props.defaultValue || props.options[0].value + value } this.name = `SegmentedControl-${radioCount}` radioCount += 1 } + isControlled = () => { + return typeof this.props.value !== 'undefined' && this.props.value !== null + } + handleChange = value => { // Save a render cycle when it's a controlled input - if (!this.props.value) { + if (!this.isControlled()) { this.setState({ value }) } - if (this.props.onChange) { + if (typeof this.props.onChange === 'function') { this.props.onChange(value) } } render() { const { + value: filterOutValue, // Filter out. name, height, options, @@ -88,19 +110,23 @@ export default class SegmentedControl extends PureComponent { } = this.props // Allows it to behave like a controlled input - const value = this.props.value || this.state.value + let { value } = this.state + if (this.isControlled()) { + value = this.props.value + } + return ( {options.map((option, index) => ( onChange(e.target.value)} /> {label} @@ -162,3 +159,5 @@ export default class SegmentedControlRadio extends PureComponent { ) } } + +export default withTheme(SegmentedControlRadio) diff --git a/src/segmented-control/src/styles/SegmentedControlAppearances.js b/src/segmented-control/src/styles/SegmentedControlAppearances.js deleted file mode 100644 index 964efe99b..000000000 --- a/src/segmented-control/src/styles/SegmentedControlAppearances.js +++ /dev/null @@ -1,64 +0,0 @@ -import { colors } from '../../../colors' - -const baseStyle = { - WebkitFontSmoothing: 'antialiased', - boxSizing: 'border-box', - textDecoration: 'none', - transition: 'box-shadow 80ms ease-in-out', - WebkitAppearance: 'none', - border: 'none', - outline: 'none', - cursor: 'pointer', - '[disabled], [data-disabled]': { - cursor: 'not-allowed', - opacity: 0.8, - backgroundImage: 'none', - backgroundColor: colors.neutral['10A'], - boxShadow: 'none', - color: colors.neutral['300A'] - } -} - -const hoverState = '&:not([disabled]):not([data-disabled]):hover' -const focusState = '& input:focus + label' -const activeState = - '&:not([disabled]):not([data-disabled]):active, &:not([disabled]):not([data-disabled])[data-popover-opened], &:not([disabled]):not([data-disabled])[data-active]' - -const SegmentedControlAppearances = { - default: { - ...baseStyle, - backgroundColor: 'white', - backgroundImage: `linear-gradient(to top, ${colors.neutral['5A']}, ${ - colors.white['5A'] - })`, - boxShadow: `inset 0 0 0 1px ${colors.neutral['20A']}, inset 0 -1px 1px 0 ${ - colors.neutral['10A'] - }`, - [hoverState]: { - backgroundImage: `linear-gradient(to top, ${colors.neutral['7A']}, ${ - colors.neutral['3A'] - } )`, - boxShadow: `inset 0 0 0 1px ${ - colors.neutral['40A'] - }, inset 0 -1px 1px 0 ${colors.neutral['15A']}` - }, - [focusState]: { - zIndex: 2, - boxShadow: `0 0 0 2px ${colors.blue['20A']}, inset 0 0 0 1px ${ - colors.neutral['70A'] - }, inset 0 -1px 1px 0 ${colors.neutral['10A']}` - }, - [activeState]: { - zIndex: 2, - color: colors.blue['500'], - backgroundImage: 'none', - backgroundColor: colors.blue['10A'] - // BoxShadow: `inset 0 0 0 1px ${colors.blue['80A']}`, - }, - '&[data-active]': { - cursor: 'default' - } - } -} - -export default SegmentedControlAppearances diff --git a/src/segmented-control/stories/index.stories.js b/src/segmented-control/stories/index.stories.js index 73db5f9b1..7af481397 100644 --- a/src/segmented-control/stories/index.stories.js +++ b/src/segmented-control/stories/index.stories.js @@ -2,7 +2,7 @@ import { storiesOf } from '@storybook/react' import React from 'react' import Box from 'ui-box' import Component from '@reactions/component' -import { SegmentedControl } from '../../segmented-control' +import { SegmentedControl } from '..' storiesOf('segmented-control', module).add('SegmentedControl', () => ( @@ -22,6 +22,7 @@ storiesOf('segmented-control', module).add('SegmentedControl', () => ( > {({ state, setState }) => ( ( {({ state, setState }) => ( setState({ value })} + onChange={value => { + setState({ value }) + }} /> )} + )) diff --git a/src/select-menu/docs/examples/SelectMenu-basic.example b/src/select-menu/docs/examples/SelectMenu-basic.example deleted file mode 100644 index c6025100f..000000000 --- a/src/select-menu/docs/examples/SelectMenu-basic.example +++ /dev/null @@ -1,12 +0,0 @@ - - {({ setState, state }) => ( - setState({ selected: item.value })} - > - - - )} - diff --git a/src/select-menu/docs/examples/SelectMenu-multi.example b/src/select-menu/docs/examples/SelectMenu-multi.example deleted file mode 100644 index 8adb19b9a..000000000 --- a/src/select-menu/docs/examples/SelectMenu-multi.example +++ /dev/null @@ -1,49 +0,0 @@ - - {({ state, setState }) => ( - { - const selected = [...state.selected, item.value] - const selectedItems = selected - const selectedItemsLength = selectedItems.length - let selectedNames = '' - if (selectedItemsLength === 0) { - selectedNames = '' - } else if (selectedItemsLength === 1) { - selectedNames = selectedItems.toString() - } else if (selectedItemsLength > 1) { - selectedNames = selectedItemsLength.toString() + ' selected...' - } - setState({ - selected, - selectedNames - }) - }} - onDeselect={item => { - const deselectedItemIndex = state.selected.indexOf(item.value) - const selectedItems = state.selected.filter( - (_item, i) => i !== deselectedItemIndex - ) - const selectedItemsLength = selectedItems.length - let selectedNames = '' - if (selectedItemsLength === 0) { - selectedNames = '' - } else if (selectedItemsLength === 1) { - selectedNames = selectedItems.toString() - } else if (selectedItemsLength > 1) { - selectedNames = selectedItemsLength.toString() + ' selected...' - } - setState({ selected: selectedItems, selectedNames }) - }} - > - - - )} - diff --git a/src/select-menu/docs/index.js b/src/select-menu/docs/index.js deleted file mode 100644 index eb3243675..000000000 --- a/src/select-menu/docs/index.js +++ /dev/null @@ -1,128 +0,0 @@ -import React from 'react' -import Box from 'ui-box' -import Component from '@reactions/component' -import SelectMenu from '../src/SelectMenu' -import { Button } from '../../buttons/' -import SyntaxHighlighter from '../../../docs/src/components/SyntaxHighlighter' -import options from './starwars-options' -import Manager from './Manager' - -/* eslint-disable import/no-unresolved, import/no-webpack-loader-syntax */ -import sourceSelectMenu from '!raw-loader!../src/SelectMenu' -/* eslint-enable import/no-unresolved, import/no-webpack-loader-syntax */ - -/** - * Code examples - */ -import exampleSelectMenuBasic from './examples/SelectMenu-basic.example' -import exampleSelectMenuMulti from './examples/SelectMenu-multi.example' - -const title = 'Select Menu' -const subTitle = 'Select one or multiple items from a dropdown list.' - -const introduction = ( -
-

- The SelectMenu component is an advanced interaction pattern - which allows selection of multiple items from a dropdown list. It can be - used as a substitute for the native multiple select element. -

-
-) - -const implementationDetails = ( -
-

- The SelectMenu builds on top of the Popover{' '} - component and uses{' '} - - react-tiny-virtual-list - {' '} - for the rendering of the virtualized list of options. -

-

Multiselect

-

- The SelectMenu is unopinonated in how many items are selected - in the list. Pass an array to the selected prop to select - more items. -

-

Options Structure

- - {`const options = [ - { - label: 'String', - labelInList: 'Optional label to appear in list', - value: 'String or Number' - } -]`} - -
-) - -const appearanceOptions = null - -const scope = { - Box, - SelectMenu, - Component, - Button, - Manager, - options -} - -const components = [ - { - name: 'SelectMenu', - source: sourceSelectMenu, - description: ( -

- The SelectMenu component. -

- ), - examples: [ - { - title: 'Basic SelectMenu Example', - description: ( -
-

This example shows basic usage with a single selected item.

-
- ), - codeText: exampleSelectMenuBasic, - scope - }, - { - title: 'SelectMenu Multiselect with Deselect Example', - description: ( -
-

This example shows usage with multiple selected items.

-

- This pattern is only an example. Selected values and the - formatting of their names should be managed wherever you choose to - manage state. The onDeselect method is provided to assist with - this. -

-

- As users click on selected values to remove them, you can update - state. -

-
- ), - codeText: exampleSelectMenuMulti, - scope - } - ] - } -] - -export default { - title, - subTitle, - introduction, - implementationDetails, - appearanceOptions, - components -} diff --git a/src/select-menu/index.js b/src/select-menu/index.js index 0e2cae846..ca6cdc29a 100644 --- a/src/select-menu/index.js +++ b/src/select-menu/index.js @@ -1,5 +1,5 @@ -export OptionShapePropType from './src/OptionShapePropType' -export OptionsList from './src/OptionsList' -export SelectedPropType from './src/SelectedPropType' -export SelectMenu from './src/SelectMenu' -export SelectMenuContent from './src/SelectMenuContent' +export { default as OptionShapePropType } from './src/OptionShapePropType' +export { default as OptionsList } from './src/OptionsList' +export { default as SelectedPropType } from './src/SelectedPropType' +export { default as SelectMenu } from './src/SelectMenu' +export { default as SelectMenuContent } from './src/SelectMenuContent' diff --git a/src/select-menu/src/Option.js b/src/select-menu/src/Option.js index d7d65fbca..8330875cd 100644 --- a/src/select-menu/src/Option.js +++ b/src/select-menu/src/Option.js @@ -1,22 +1,9 @@ import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import { Pane } from '../../layers' +import { Icon } from '../../icon' import { TableRow, TextTableCell } from '../../table' -const CheckIcon = ({ fill = 'currentColor', ...props }) => ( - - - -) - -CheckIcon.propTypes = { - fill: PropTypes.string -} - export default class Option extends PureComponent { static propTypes = { label: PropTypes.string, @@ -25,7 +12,8 @@ export default class Option extends PureComponent { onSelect: PropTypes.func, onDeselect: PropTypes.func, isHighlighted: PropTypes.bool, - isSelected: PropTypes.bool + isSelected: PropTypes.bool, + isSelectable: PropTypes.bool } render() { @@ -35,6 +23,7 @@ export default class Option extends PureComponent { onDeselect, isHighlighted, isSelected, + isSelectable, style, height, ...props @@ -42,7 +31,7 @@ export default class Option extends PureComponent { return ( - + { + requestAnimationFrame(() => { this.searchRef.querySelector('input').focus() - }, 1) - window.addEventListener('keyup', this.handleKeyUp) + }) + + window.addEventListener('keydown', this.handleKeyDown) + } + + componentWillUnmount() { + window.removeEventListener('keydown', this.handleKeyDown) } componentWillReceiveProps(nextProps) { @@ -89,10 +99,6 @@ export default class OptionsList extends PureComponent { } } - componentWillUnmount() { - window.removeEventListener('keyup', this.handleKeyUp) - } - isSelected = item => { const { selected } = this.state @@ -113,7 +119,7 @@ export default class OptionsList extends PureComponent { ) } - getCurrentIndex() { + getCurrentIndex = () => { const { selected } = this.props const options = this.getFilteredOptions() @@ -128,7 +134,7 @@ export default class OptionsList extends PureComponent { return this.search(options) } - handleKeyUp = e => { + handleKeyDown = e => { if (e.keyCode === 38) { this.handleArrowUp() } @@ -142,7 +148,7 @@ export default class OptionsList extends PureComponent { } } - handleArrowUp() { + handleArrowUp = () => { const { onSelect } = this.props const options = this.getFilteredOptions() @@ -155,7 +161,7 @@ export default class OptionsList extends PureComponent { onSelect(options[nextIndex]) } - handleArrowDown() { + handleArrowDown = () => { const { onSelect } = this.props const options = this.getFilteredOptions() @@ -168,7 +174,7 @@ export default class OptionsList extends PureComponent { onSelect(options[nextIndex]) } - handleEnter() { + handleEnter = () => { const isSelected = this.getCurrentIndex() !== -1 if (isSelected) { @@ -185,6 +191,7 @@ export default class OptionsList extends PureComponent { handleSelect = item => { this.props.onSelect(item) } + handleDeselect = item => { this.props.onDeselect(item) } @@ -195,6 +202,7 @@ export default class OptionsList extends PureComponent { render() { const { + options: originalOptions, close, width, height, @@ -206,11 +214,14 @@ export default class OptionsList extends PureComponent { renderItem, placeholder, optionsFilter, + isMultiSelect, defaultSearchValue, ...props } = this.props - const options = this.getFilteredOptions() + const options = this.search(originalOptions) const listHeight = height - (hasFilter ? 32 : 0) + const currentIndex = this.getCurrentIndex() + const scrollToIndex = currentIndex === -1 ? 0 : currentIndex return ( { const item = options[index] + const isSelected = this.isSelected(item) return renderItem({ key: item.value, label: item.label, @@ -247,7 +264,8 @@ export default class OptionsList extends PureComponent { height: optionSize, onSelect: () => this.handleSelect(item), onDeselect: () => this.handleDeselect(item), - isSelected: this.isSelected(item) + isSelectable: !isSelected || isMultiSelect, + isSelected }) }} /> diff --git a/src/select-menu/src/SelectMenu.js b/src/select-menu/src/SelectMenu.js index 0a7847346..841d99782 100644 --- a/src/select-menu/src/SelectMenu.js +++ b/src/select-menu/src/SelectMenu.js @@ -2,7 +2,7 @@ import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import arrify from 'arrify' import { Popover } from '../../popover' -import { Position } from '../../positioner' +import { Position } from '../../constants' import SelectMenuContent from './SelectMenuContent' import OptionShapePropType from './OptionShapePropType' import SelectedPropType from './SelectedPropType' @@ -34,16 +34,22 @@ export default class SelectMenu extends PureComponent { * Function that is called when an option is selected. */ onSelect: PropTypes.func, + /** * Function that is called when an option is deselected. */ onDeselect: PropTypes.func, /** - * + * The selected value/values. */ selected: SelectedPropType, + /** + * When true, multi select is accounted for. + */ + isMultiSelect: PropTypes.bool, + /** * When true, show the title. */ @@ -57,7 +63,14 @@ export default class SelectMenu extends PureComponent { /** * The position of the Select Menu. */ - position: PropTypes.oneOf(Object.keys(Position)), + position: PropTypes.oneOf([ + Position.TOP, + Position.TOP_LEFT, + Position.TOP_RIGHT, + Position.BOTTOM, + Position.BOTTOM_LEFT, + Position.BOTTOM_RIGHT + ]), /** * Can be a function that returns a node, or a node itself, that is @@ -72,7 +85,8 @@ export default class SelectMenu extends PureComponent { onDeselect: () => {}, width: 240, height: 248, - position: Position.BOTTOM_LEFT + position: Position.BOTTOM_LEFT, + isMultiSelect: false } getDetailView = (close, detailView) => { @@ -100,6 +114,7 @@ export default class SelectMenu extends PureComponent { hasTitle, hasFilter, detailView, + isMultiSelect, ...props } = this.props @@ -116,6 +131,7 @@ export default class SelectMenu extends PureComponent { title={title} hasFilter={hasFilter} hasTitle={hasTitle} + isMultiSelect={isMultiSelect} listProps={{ onSelect: item => { this.props.onSelect(item) diff --git a/src/select-menu/src/SelectMenuContent.js b/src/select-menu/src/SelectMenuContent.js index d9a2d4175..a5493e2b5 100644 --- a/src/select-menu/src/SelectMenuContent.js +++ b/src/select-menu/src/SelectMenuContent.js @@ -17,6 +17,11 @@ export default class SelectMenuContent extends PureComponent { hasFilter: PropTypes.bool, listProps: PropTypes.shape(OptionsList.propTypes), + /** + * When true, multi select is accounted for. + */ + isMultiSelect: PropTypes.bool, + /** * Node that is placed right next to the options. */ @@ -39,7 +44,8 @@ export default class SelectMenuContent extends PureComponent { close, title, listProps, - detailView + detailView, + isMultiSelect } = this.props const headerHeight = 40 @@ -53,17 +59,13 @@ export default class SelectMenuContent extends PureComponent { height={height} display="flex" flexDirection="column" - {...(hasDetailView - ? { - borderRight: 'muted' - } - : {})} + borderRight={hasDetailView ? 'muted' : null} > {hasTitle && ( {title} @@ -83,6 +85,7 @@ export default class SelectMenuContent extends PureComponent { height={optionsListHeight} hasFilter={hasFilter} options={options} + isMultiSelect={isMultiSelect} close={close} {...listProps} /> diff --git a/src/select-menu/docs/Manager.js b/src/select-menu/stories/Manager.js similarity index 99% rename from src/select-menu/docs/Manager.js rename to src/select-menu/stories/Manager.js index 2588e1505..104b1935e 100644 --- a/src/select-menu/docs/Manager.js +++ b/src/select-menu/stories/Manager.js @@ -7,6 +7,7 @@ export default class Manager extends React.Component { } state = {} + render() { return this.props.children({ setState: (...args) => { diff --git a/src/select-menu/stories/index.stories.js b/src/select-menu/stories/index.stories.js index 568cae98d..f35933b50 100644 --- a/src/select-menu/stories/index.stories.js +++ b/src/select-menu/stories/index.stories.js @@ -2,10 +2,10 @@ import { storiesOf } from '@storybook/react' import Component from '@reactions/component' import React from 'react' import Box from 'ui-box' -import options from '../docs/starwars-options' -import Manager from '../docs/Manager' -import { SelectMenu } from '../../select-menu' +import { SelectMenu } from '..' import { Button } from '../../buttons' +import options from './starwars-options' +import Manager from './Manager' storiesOf('select-menu', module).add('SelectMenu', () => ( @@ -33,6 +33,7 @@ storiesOf('select-menu', module).add('SelectMenu', () => ( > {({ state, setState }) => ( = 36 ? 12 : 8 return ( {children} - = 36 ? 4 : 0} - color={disabled ? 'disabled' : 'default'} - iconSize={iconSize} - css={{ - pointerEvents: 'none' - }} + top="50%" + marginTop={-iconSize / 2} + right={iconMargin} + pointerEvents="none" /> ) } } + +export default withTheme(Select) diff --git a/src/select/src/SelectField.js b/src/select/src/SelectField.js new file mode 100644 index 000000000..3ceb129a1 --- /dev/null +++ b/src/select/src/SelectField.js @@ -0,0 +1,125 @@ +import React, { PureComponent } from 'react' +import PropTypes from 'prop-types' +import { splitBoxProps } from 'ui-box' +import { FormField } from '../../form-field' +import Select from './Select' + +let idCounter = 0 + +export default class TextInputField extends PureComponent { + static propTypes = { + /** + * Composes the Select component as the base. + */ + ...Select.propTypes, + ...FormField.propTypes, + + /** + * The label used above the input element. + */ + label: PropTypes.node.isRequired, + + /** + * Passed on the label as a htmlFor prop. + */ + labelFor: PropTypes.string, + + /** + * Wether or not show a asterix after the label. + */ + isRequired: PropTypes.bool, + + /** + * A optional description of the field under the label, above the input element. + */ + description: PropTypes.node, + + /** + * A optional hint under the input element. + */ + hint: PropTypes.node, + + /** + * If a validation message is passed it is shown under the input element + * and above the hint. + */ + validationMessage: PropTypes.node, + + /** + * The height of the input element. + */ + inputHeight: PropTypes.number, + + /** + * The width of the input width. + */ + inputWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]) + } + + static defaultProps = { + /** + * The input width should be as wide as the form field. + */ + inputWidth: '100%', + inputHeight: 32 + } + + state = { + id: (this.props.id || idCounter++).toString() + } + + render() { + const { + // We are using the id from the state + id: unusedId, + + // FormField props + hint, + label, + description, + validationMessage, + + // TextInput props + inputHeight, + inputWidth, + disabled, + required, + isInvalid, + appearance, + + // Rest props are spread on the FormField + ...props + } = this.props + + const id = `SelectField-${this.state.id}` + + /** + * Split the wrapper props from the input props. + */ + const { matchedProps, remainingProps } = splitBoxProps(props) + + return ( + + -
+ )) diff --git a/src/shared-styles/index.js b/src/shared-styles/index.js deleted file mode 100644 index 894a8e220..000000000 --- a/src/shared-styles/index.js +++ /dev/null @@ -1,11 +0,0 @@ -export CheckboxAppearances from './src/styles/CheckboxAppearances' -export controlBaseStyle from './src/styles/controlBaseStyle' -export FillAppearances from './src/styles/FillAppearances' -export InputAppearances from './src/styles/InputAppearances' -export selectableRowStyle from './src/styles/selectableRowStyle' -export selectableTabStyle from './src/styles/selectableTabStyle' -export getBorderRadiusForControlHeight from './src/utils/getBorderRadiusForControlHeight' -export getBorderRadiusForTextSize from './src/utils/getBorderRadiusForTextSize' -export getIconSizeForControlHeight from './src/utils/getIconSizeForControlHeight' -export getTextSizeForControlHeight from './src/utils/getTextSizeForControlHeight' -export getTextStyleForControlHeight from './src/utils/getTextStyleForControlHeight' diff --git a/src/shared-styles/src/styles/CheckboxAppearances.js b/src/shared-styles/src/styles/CheckboxAppearances.js deleted file mode 100644 index 1d77d657c..000000000 --- a/src/shared-styles/src/styles/CheckboxAppearances.js +++ /dev/null @@ -1,108 +0,0 @@ -import { colors } from '../../../colors' -import baseStyle from './controlBaseStyle' - -const disabledState = '&[disabled] + div' -const hoverState = '&:not([disabled]):hover + div' -const focusState = '&:not([disabled]):focus + div' -const activeState = '&:not([disabled]):active + div' -const checkedState = '&:checked + div' -const checkedActiveState = '&:not([disabled]):checked:active + div' -const checkedDisabledState = '&[disabled]:checked + div' - -const hiddenCheckboxStyle = { - border: '0', - clip: 'rect(1px, 1px, 1px, 1px)', - height: '1', - overflow: 'hidden', - padding: '0', - position: 'absolute', - whiteSpace: 'nowrap', - width: '1', - opacity: '0' -} - -const CheckboxAppearances = { - default: { - ...hiddenCheckboxStyle, - '& + div > svg': { - display: 'none' - }, - '& + div': { - ...baseStyle, - color: 'white', - backgroundColor: 'white', - backgroundImage: `linear-gradient(to top, ${ - colors.neutral['5A'] - }, white)`, - boxShadow: `inset 0 0 0 1px ${ - colors.neutral['20A'] - }, inset 0 -1px 1px 0 ${colors.neutral['10A']}` - }, - [disabledState]: { - cursor: 'not-allowed', - boxShadow: `inset 0 0 0 1px ${colors.neutral['20A']}`, - backgroundColor: colors.neutral['5A'], - backgroundImage: 'none' - }, - [hoverState]: { - backgroundImage: `linear-gradient(to top, ${colors.neutral['7A']}, ${ - colors.neutral['3A'] - } )`, - boxShadow: `inset 0 0 0 1px ${ - colors.neutral['40A'] - }, inset 0 -1px 1px 0 ${colors.neutral['15A']}` - }, - [focusState]: { - boxShadow: `0 0 0 2px ${colors.blue['20A']}, inset 0 0 0 1px ${ - colors.neutral['70A'] - }, inset 0 -1px 1px 0 ${colors.neutral['10A']}` - }, - [activeState]: { - color: colors.blue['1000'], - backgroundImage: 'none', - backgroundColor: colors.blue['10A'], - boxShadow: `inset 0 0 0 1px ${colors.blue['80A']}` - }, - [checkedState]: { - backgroundColor: colors.blue['500'], - color: 'white', - backgroundImage: `linear-gradient(to top, ${colors.blue['600']}, ${ - colors.blue['400'] - })`, - boxShadow: `inset 0 0 0 1px ${ - colors.neutral['30A'] - }, inset 0 -1px 1px 0 ${colors.neutral['30A']}`, - '& > svg': { - display: 'block' - } - }, - [checkedDisabledState]: { - color: colors.neutral['300'], - backgroundColor: 'white', - backgroundImage: `linear-gradient(to top, ${ - colors.neutral['5A'] - }, white)`, - boxShadow: `inset 0 0 0 1px ${ - colors.neutral['20A'] - }, inset 0 -1px 1px 0 ${colors.neutral['10A']}`, - '& > svg': { - display: 'block' - } - }, - [checkedActiveState]: { - backgroundColor: colors.blue['500'], - color: 'white', - backgroundImage: `linear-gradient(to top, ${colors.blue['800']}, ${ - colors.blue['900'] - })`, - boxShadow: `inset 0 0 0 1px ${ - colors.neutral['30A'] - }, inset 0 -1px 1px 0 ${colors.neutral['30A']}`, - '& > svg': { - display: 'block' - } - } - } -} - -export default CheckboxAppearances diff --git a/src/shared-styles/src/styles/FillAppearances.js b/src/shared-styles/src/styles/FillAppearances.js deleted file mode 100644 index 123c4ab9c..000000000 --- a/src/shared-styles/src/styles/FillAppearances.js +++ /dev/null @@ -1,25 +0,0 @@ -import { colors } from '../../../colors' - -const colorsFiltered = Object.keys(colors).filter(c => c !== 'white') - -const getDefaultStyle = colorName => ({ - backgroundColor: colors[colorName]['15A'], - color: colors[colorName]['1000'] -}) - -const getSolidStyle = colorName => ({ - backgroundColor: colors[colorName]['500'], - color: 'white' -}) - -const FillAppearances = { - default: {}, - solid: {} -} - -colorsFiltered.forEach(c => { - FillAppearances.default[c] = getDefaultStyle(c) - FillAppearances.solid[c] = getSolidStyle(c) -}) - -export default FillAppearances diff --git a/src/shared-styles/src/styles/InputAppearances.js b/src/shared-styles/src/styles/InputAppearances.js deleted file mode 100644 index f1fad5e63..000000000 --- a/src/shared-styles/src/styles/InputAppearances.js +++ /dev/null @@ -1,54 +0,0 @@ -import { colors } from '../../../colors' - -const InputAppearances = { - default: { - WebkitAppearance: 'none', - border: 'none', - backgroundColor: 'white', - boxShadow: `inset 0 0 0 1px ${colors.neutral['30A']}, inset 0 1px 2px ${ - colors.neutral['20A'] - }`, - '&[aria-invalid="true"]': { - boxShadow: `inset 0 0 0 1px ${colors.red['500']}, inset 0 1px 1px ${ - colors.neutral['40A'] - }` - }, - '&::placeholder': { - color: colors.neutral['100A'] - }, - '&:focus': { - zIndex: 2, - outline: 'none', - boxShadow: `inset 0 0 2px ${colors.neutral['40A']}, inset 0 0 0 1px ${ - colors.blue['150A'] - }, 0 0 0 3px ${colors.blue['15A']}` - }, - '&:disabled': { - cursor: 'not-allowed', - boxShadow: `inset 0 0 0 1px ${colors.neutral['20A']}`, - backgroundColor: colors.neutral['5A'] - } - }, - neutral: { - WebkitAppearance: 'none', - border: 'none', - backgroundColor: colors.neutral['10A'], - '&[aria-invalid="true"]': { - boxShadow: `inset 0 0 0 1px ${colors.red['500']}` - }, - '&::placeholder': { - color: colors.neutral['200A'] - }, - '&:focus': { - outline: 'none', - boxShadow: `0 0 0 2px ${colors.blue['150A']}` - }, - '&:disabled': { - cursor: 'not-allowed', - boxShadow: `inset 0 0 0 1px ${colors.neutral['20A']}`, - backgroundColor: colors.neutral['5A'] - } - } -} - -export default InputAppearances diff --git a/src/shared-styles/src/styles/controlBaseStyle.js b/src/shared-styles/src/styles/controlBaseStyle.js deleted file mode 100644 index e7ca47e57..000000000 --- a/src/shared-styles/src/styles/controlBaseStyle.js +++ /dev/null @@ -1,20 +0,0 @@ -import { colors } from '../../../colors' - -export default { - WebkitFontSmoothing: 'antialiased', - boxSizing: 'border-box', - textDecoration: 'none', - transition: 'box-shadow 80ms ease-in-out', - WebkitAppearance: 'none', - border: 'none', - outline: 'none', - cursor: 'pointer', - '[disabled], [data-disabled]': { - cursor: 'not-allowed', - opacity: 0.8, - backgroundImage: 'none', - backgroundColor: colors.neutral['10A'], - boxShadow: 'none', - color: colors.neutral['300A'] - } -} diff --git a/src/shared-styles/src/styles/selectableRowStyle.js b/src/shared-styles/src/styles/selectableRowStyle.js deleted file mode 100644 index ac34d025d..000000000 --- a/src/shared-styles/src/styles/selectableRowStyle.js +++ /dev/null @@ -1,25 +0,0 @@ -import { colors } from '../../../colors' - -const selectableRowStyle = { - cursor: 'pointer', - outline: 'none', - - '&:hover': { - backgroundColor: colors.neutral['5A'] - }, - - '&:focus, &[aria-selected="true"]': { - backgroundColor: colors.blue['5A'] - }, - - '&[aria-current="true"], &:active': { - backgroundColor: colors.blue['10A'], - color: colors.blue['500'] - }, - - '&[aria-current="true"]': { - cursor: 'default' - } -} - -export default selectableRowStyle diff --git a/src/shared-styles/src/styles/selectableTabStyle.js b/src/shared-styles/src/styles/selectableTabStyle.js deleted file mode 100644 index c6797ccbd..000000000 --- a/src/shared-styles/src/styles/selectableTabStyle.js +++ /dev/null @@ -1,25 +0,0 @@ -import { colors } from '../../../colors' - -const selectableTabStyle = { - cursor: 'pointer', - outline: 'none', - - '&:hover': { - backgroundColor: colors.neutral['5A'] - }, - - '&[aria-current="page"], &[aria-selected="true"], &:active': { - backgroundColor: colors.blue['10A'], - color: colors.blue['500'] - }, - - '&[aria-current="page"], &[aria-selected="true"]': { - cursor: 'default' - }, - - '&:focus': { - boxShadow: `0 0 0 2px ${colors.blue['50A']}` - } -} - -export default selectableTabStyle diff --git a/src/shared-styles/src/utils/getBorderRadiusForControlHeight.js b/src/shared-styles/src/utils/getBorderRadiusForControlHeight.js deleted file mode 100644 index dcdd96f9f..000000000 --- a/src/shared-styles/src/utils/getBorderRadiusForControlHeight.js +++ /dev/null @@ -1,7 +0,0 @@ -const getBorderRadiusForControlHeight = ({ height }) => { - if (height <= 28) return 3 - if (height <= 32) return 4 - return 5 -} - -export default getBorderRadiusForControlHeight diff --git a/src/shared-styles/src/utils/getBorderRadiusForTextSize.js b/src/shared-styles/src/utils/getBorderRadiusForTextSize.js deleted file mode 100644 index bb51280ff..000000000 --- a/src/shared-styles/src/utils/getBorderRadiusForTextSize.js +++ /dev/null @@ -1,8 +0,0 @@ -const getBorderRadiusForTextSize = ({ textSize }) => { - const ts = Number(textSize) - if (ts <= 300) return 3 - if (ts <= 400) return 4 - return 5 -} - -export default getBorderRadiusForTextSize diff --git a/src/shared-styles/src/utils/getIconSizeForControlHeight.js b/src/shared-styles/src/utils/getIconSizeForControlHeight.js deleted file mode 100644 index a749a7511..000000000 --- a/src/shared-styles/src/utils/getIconSizeForControlHeight.js +++ /dev/null @@ -1,12 +0,0 @@ -const getIconSizeForControlHeight = ({ height }) => { - if (height <= 24) return 10 - if (height <= 28) return 10 - if (height <= 32) return 12 - if (height <= 36) return 16 - if (height <= 40) return 16 - if (height <= 48) return 16 - if (height <= 56) return 16 - return 16 -} - -export default getIconSizeForControlHeight diff --git a/src/shared-styles/src/utils/getTextSizeForControlHeight.js b/src/shared-styles/src/utils/getTextSizeForControlHeight.js deleted file mode 100644 index f886f13e8..000000000 --- a/src/shared-styles/src/utils/getTextSizeForControlHeight.js +++ /dev/null @@ -1,12 +0,0 @@ -const getTextSizeForControlHeight = ({ height }) => { - if (height <= 24) return 200 - if (height <= 28) return 300 - if (height <= 32) return 300 - if (height <= 36) return 400 - if (height <= 40) return 400 - if (height <= 48) return 500 - if (height <= 56) return 700 - return 800 -} - -export default getTextSizeForControlHeight diff --git a/src/shared-styles/src/utils/getTextStyleForControlHeight.js b/src/shared-styles/src/utils/getTextStyleForControlHeight.js deleted file mode 100644 index 471e90ea3..000000000 --- a/src/shared-styles/src/utils/getTextStyleForControlHeight.js +++ /dev/null @@ -1,7 +0,0 @@ -import { TextStyles } from '../../../typography' -import getTextSizeForControlHeight from './getTextSizeForControlHeight' - -const getTextStyleForControlHeight = ({ height }) => - TextStyles[getTextSizeForControlHeight({ height })] - -export default getTextStyleForControlHeight diff --git a/src/side-sheet/docs/examples/SideSheet-basic.example b/src/side-sheet/docs/examples/SideSheet-basic.example deleted file mode 100644 index 8645a1faa..000000000 --- a/src/side-sheet/docs/examples/SideSheet-basic.example +++ /dev/null @@ -1,15 +0,0 @@ - - {({ state, setState }) => ( - - setState({ isShown: false })} - > - Basic Example - - - - )} - diff --git a/src/side-sheet/docs/examples/SideSheet-full-featured.example b/src/side-sheet/docs/examples/SideSheet-full-featured.example deleted file mode 100644 index 2af3fdcb5..000000000 --- a/src/side-sheet/docs/examples/SideSheet-full-featured.example +++ /dev/null @@ -1,56 +0,0 @@ - - {({ state, setState }) => ( - - setState({ isShown: false })} - containerProps={{ - display: 'flex', - flex: '1', - flexDirection: 'column', - }} - > - - - Title - - Optional description or sub title - - - - - {({ setState, state }) => - ['Traits', 'Event History', 'Identities'].map( - (tab, index) => ( - setState({ selectedIndex: index })} - > - {tab} - - ) - ) - } - - - - - - Some content - - - - - - )} - diff --git a/src/side-sheet/docs/examples/SideSheet-title-subtitle.example b/src/side-sheet/docs/examples/SideSheet-title-subtitle.example deleted file mode 100644 index 8b58c5c12..000000000 --- a/src/side-sheet/docs/examples/SideSheet-title-subtitle.example +++ /dev/null @@ -1,39 +0,0 @@ - - {({ state, setState }) => ( - - setState({ isShown: false })} - containerProps={{ - display: 'flex', - flex: '1', - flexDirection: 'column', - }} - > - - - Title - - Optional description or sub title - - - - - - Some content - - - - - - )} - diff --git a/src/side-sheet/docs/examples/SideSheet-title.example b/src/side-sheet/docs/examples/SideSheet-title.example deleted file mode 100644 index 5517e1ec3..000000000 --- a/src/side-sheet/docs/examples/SideSheet-title.example +++ /dev/null @@ -1,36 +0,0 @@ - - {({ state, setState }) => ( - - setState({ isShown: false })} - containerProps={{ - display: 'flex', - flex: '1', - flexDirection: 'column', - }} - > - - - Title - - - - - Some content - - - - - - )} - diff --git a/src/side-sheet/docs/index.js b/src/side-sheet/docs/index.js deleted file mode 100644 index abfccc317..000000000 --- a/src/side-sheet/docs/index.js +++ /dev/null @@ -1,150 +0,0 @@ -import React from 'react' -import Box from 'ui-box' -import SideSheet from '../src/SideSheet' -import { Heading, Paragraph } from '../../typography' -import { Card, Pane } from '../../layers' -import { Button } from '../../buttons' -import { Tab } from '../../tabs' -import { Manager } from '../../manager' - -/* eslint-disable import/no-unresolved, import/no-webpack-loader-syntax */ -import sourceSideSheet from '!raw-loader!../src/SideSheet' -/* eslint-enable import/no-unresolved, import/no-webpack-loader-syntax */ - -/** - * Code examples - */ -import exampleSideSheetBasic from './examples/SideSheet-basic.example' -import exampleSideSheetFullFeatured from './examples/SideSheet-full-featured.example' -import exampleSideSheetTitleSubtitle from './examples/SideSheet-title-subtitle.example' -import exampleSideSheetTitle from './examples/SideSheet-title.example' - -const title = 'Side Sheet' -const subTitle = 'A side panel overlaying the screen.' - -const introduction = ( -
-

- The Side Sheet component is a panel overlaying the screen on the right - side. It is used to show more details about a certain object or person. A - Side Sheet is often triggered by clicking a row in a table. -

-

Use Cases

-
    -
  • Showing a profile view of a user
  • -
  • - Showing detailed information about a transaction (such as a sync or run) -
  • -
  • - Showing configuration settings that don‘t need to be accessible by a URL -
  • -
-

When Not to Use a Side Sheet

-

- Side Sheets are a great way to cheat creating a new page. As a general - rule of thumb, a Side Sheet should not be used as a replacement of a new - page when the page needs to be accessible by a URL. Avoid showing a Side - Sheet based on a URL. -

-
-) - -const implementationDetails = ( -
-

- The Side Sheet component does not have any opinion about the contents of - the Side Sheet. In the examples below are some recipes to make sure usage - of the Side Sheet is consistent. It is recommended to compose more - opinionated Side Sheets in the consuming application. -

- -

Side Sheets Close On

-
    -
  • Backdrop click
  • -
  • Close icon button click
  • -
  • Escape key
  • -
  • The close function being called
  • -
- -

Focus Management

-

- When opening the Side Sheet, focus will be brought inside the Side Sheet - by looking for elements with [autofocus] first and{' '} - [tabindex] second. -

-

- When closing the Side Sheet, focus will be brought back to the element - that was focused before opening the Side Sheet. This is normally the - button that triggered the Side Sheet. -

-
-) - -const scope = { - Heading, - Paragraph, - Card, - Pane, - Button, - Tab, - Manager, - Box, - SideSheet -} - -const components = [ - { - name: 'SideSheet', - source: sourceSideSheet, - description: ( -

- The SideSheet component is . -

- ), - examples: [ - { - title: 'Basic Example', - codeText: exampleSideSheetBasic, - scope - }, - { - title: 'Full Featured Example', - description: ( -

- Full featured example with a header with a title, subtitle and a tab - bar. Content is a simple card. -

- ), - codeText: exampleSideSheetFullFeatured, - scope - }, - { - title: 'Title', - codeText: exampleSideSheetTitle, - description: ( -

Example with a header with a title. Content is a simple card.

- ), - scope - }, - { - title: 'Title and Subtitle', - codeText: exampleSideSheetTitleSubtitle, - description: ( -

- Example with a header with a title and subtitle. Content is a simple - card. -

- ), - scope - } - ] - } -] - -export default { - title, - subTitle, - introduction, - implementationDetails, - components -} diff --git a/src/side-sheet/index.js b/src/side-sheet/index.js index b71980d16..5a58e065d 100644 --- a/src/side-sheet/index.js +++ b/src/side-sheet/index.js @@ -1 +1 @@ -export SideSheet from './src/SideSheet' +export { default as SideSheet } from './src/SideSheet' // eslint-disable-line import/prefer-default-export diff --git a/src/side-sheet/src/SheetClose.js b/src/side-sheet/src/SheetClose.js index 645d6ae85..3031c79ff 100644 --- a/src/side-sheet/src/SheetClose.js +++ b/src/side-sheet/src/SheetClose.js @@ -1,7 +1,9 @@ import React, { PureComponent } from 'react' import PropTypes from 'prop-types' -import Box, { css } from 'ui-box' -import { CloseIcon } from '../../icons' +import Box from 'ui-box' +import { css } from 'glamor' +import { Icon } from '../../icon' +import { Position } from '../../constants' const animationEasing = { deceleration: `cubic-bezier(0.0, 0.0, 0.2, 1)`, @@ -10,27 +12,11 @@ const animationEasing = { const ANIMATION_DURATION = 240 -const rotate360InAnimation = css.keyframes('rotate360InAnimation', { - from: { - transform: `translateX(100%) rotate(0deg)` - }, - to: { - transform: `translateX(-100%) rotate(-360deg)` - } -}) - -const rotate360OutAnimation = css.keyframes('rotate360OutAnimation', { - from: { - transform: `translateX(-100%) rotate(0deg)` - }, - to: { - transform: `translateX(100%) rotate(360deg)` - } -}) - -const sheetCloseStyle = { +const sharedStyles = { + padding: 4, + borderRadius: 9999, + position: 'absolute', cursor: 'pointer', - transform: `translateX(-100%)`, backgroundColor: `rgba(255, 255, 255, 0.4)`, transition: `background-color 120ms`, '&:hover': { @@ -38,38 +24,130 @@ const sheetCloseStyle = { }, '&:active': { backgroundColor: `rgba(255, 255, 255, 0.4)` + } +} + +const withAnimations = (animateIn, animateOut) => { + return { + '&[data-state="entering"], &[data-state="entered"]': { + animation: `${animateIn} ${ANIMATION_DURATION}ms ${ + animationEasing.deceleration + } both` + }, + '&[data-state="exiting"]': { + animation: `${animateOut} ${ANIMATION_DURATION}ms ${ + animationEasing.acceleration + } both` + } + } +} + +const sheetCloseStyles = { + [Position.RIGHT]: { + left: 0, + marginLeft: -12, + marginTop: 12, + transform: `translateX(-100%)`, + ...withAnimations( + css.keyframes('rotate360InAnimation', { + from: { transform: `translateX(100%) rotate(0deg)` }, + to: { transform: `translateX(-100%) rotate(-360deg)` } + }), + css.keyframes('rotate360OutAnimation', { + from: { transform: `translateX(-100%) rotate(0deg)` }, + to: { transform: `translateX(100%) rotate(360deg)` } + }) + ) }, - '&[data-state="entering"], &[data-state="entered"]': { - animation: `${rotate360InAnimation} ${ANIMATION_DURATION}ms ${ - animationEasing.deceleration - } both` + [Position.LEFT]: { + marginRight: -12, + right: 0, + marginTop: 12, + transform: `translateX(100%)`, + ...withAnimations( + css.keyframes('leftRotate360InAnimation', { + from: { transform: `translateX(-100%) rotate(0deg)` }, + to: { transform: `translateX(100%), rotate(360deg)` } + }), + css.keyframes('leftRotate360OutAnimation', { + from: { transform: `translateX(100%) rotate(0deg)` }, + to: { transform: `translateX(-100%), rotate(360deg)` } + }) + ) }, - '&[data-state="exiting"]': { - animation: `${rotate360OutAnimation} ${ANIMATION_DURATION}ms ${ - animationEasing.acceleration - } both` + [Position.TOP]: { + right: 0, + marginRight: 12, + top: '100%', + marginTop: 12, + transform: `translateY(0)`, + ...withAnimations( + css.keyframes('topRotate360InAnimation', { + from: { transform: `translateY(-200%) rotate(0deg)` }, + to: { transform: `translateY(0%), rotate(360deg)` } + }), + css.keyframes('topRotate360OutAnimation', { + from: { transform: `translateY(0%) rotate(0deg)` }, + to: { transform: `translateY(-200%), rotate(360deg)` } + }) + ) + }, + [Position.BOTTOM]: { + right: 0, + marginRight: 12, + bottom: '100%', + marginBottom: 12, + transform: `translateY(0)`, + ...withAnimations( + css.keyframes('bottomRotate360InAnimation', { + from: { transform: `translateY(200%) rotate(0deg)` }, + to: { transform: `translateY(0%), rotate(360deg)` } + }), + css.keyframes('bottomRotate360OutAnimation', { + from: { transform: `translateY(0%) rotate(0deg)` }, + to: { transform: `translateY(200%), rotate(360deg)` } + }) + ) + } +} + +const sheetCloseClassNameCache = {} + +const getSheetCloseClassName = position => { + if (!sheetCloseClassNameCache[position]) { + sheetCloseClassNameCache[position] = css({ + ...sheetCloseStyles[position], + ...sharedStyles + }).toString() } + return sheetCloseClassNameCache[position] } export default class SheetClose extends PureComponent { static propTypes = { ...Box.propTypes, - isClosing: PropTypes.bool - } - - static styles = { - position: 'absolute', - marginLeft: -12, - marginTop: 12, - padding: 4, - borderRadius: 9999 + isClosing: PropTypes.bool, + position: PropTypes.oneOf([ + Position.LEFT, + Position.RIGHT, + Position.TOP, + Position.BOTTOM + ]).isRequired } render() { - const { isClosing, ...props } = this.props + const { isClosing, position, ...props } = this.props return ( - - + + ) } diff --git a/src/side-sheet/src/SideSheet.js b/src/side-sheet/src/SideSheet.js index 5657093d6..19388402e 100644 --- a/src/side-sheet/src/SideSheet.js +++ b/src/side-sheet/src/SideSheet.js @@ -3,12 +3,53 @@ import PropTypes from 'prop-types' import { css } from 'ui-box' import { Pane } from '../../layers' import { Overlay } from '../../overlay' +import { Position } from '../../constants' import SheetClose from './SheetClose' const paneProps = { - height: '100vh', - position: 'absolute', - right: 0 + [Position.LEFT]: { + height: '100vh', + maxWidth: '100vw', + position: 'absolute', + left: 0, + right: 'auto' + }, + [Position.RIGHT]: { + height: '100vh', + maxWidth: '100vw', + position: 'absolute', + right: 0, + left: 'auto' + }, + [Position.TOP]: { + width: '100vw', + position: 'absolute', + maxHeight: '100vh', + top: 0, + bottom: 'auto' + }, + [Position.BOTTOM]: { + width: '100vw', + maxHeight: '100vh', + position: 'absolute', + bottom: 0, + top: 'auto' + } +} + +const subpaneProps = { + [Position.LEFT]: { + height: '100vh' + }, + [Position.RIGHT]: { + height: '100vh' + }, + [Position.TOP]: { + width: '100vw' + }, + [Position.BOTTOM]: { + width: '100vw' + } } const animationEasing = { @@ -18,35 +59,73 @@ const animationEasing = { const ANIMATION_DURATION = 240 -const slideInAnimation = css.keyframes('slideInAnimation', { - from: { - transform: `translateX(100%)` - }, - to: { - transform: `translateX(0)` - } -}) - -const slideOutAnimation = css.keyframes('slideOutAnimation', { - from: { - transform: `translateX(0)` - }, - to: { - transform: `translateX(100%)` +const withAnimations = (animateIn, animateOut) => { + return { + '&[data-state="entering"], &[data-state="entered"]': { + animation: `${animateIn} ${ANIMATION_DURATION}ms ${ + animationEasing.deceleration + } both` + }, + '&[data-state="exiting"]': { + animation: `${animateOut} ${ANIMATION_DURATION}ms ${ + animationEasing.acceleration + } both` + } } -}) +} const animationStyles = { - transform: `translateX(100%)`, - '&[data-state="entering"], &[data-state="entered"]': { - animation: `${slideInAnimation} ${ANIMATION_DURATION}ms ${ - animationEasing.deceleration - } both` + [Position.LEFT]: { + transform: `translateX(-100%)`, + ...withAnimations( + css.keyframes('anchoredLeftSlideInAnimation', { + from: { transform: `translateX(-100%)` }, + to: { transform: `translateX(0)` } + }), + css.keyframes('anchoredLeftSlideOutAnimation', { + from: { transform: `translateX(0)` }, + to: { transform: `translateX(-100%)` } + }) + ) }, - '&[data-state="exiting"]': { - animation: `${slideOutAnimation} ${ANIMATION_DURATION}ms ${ - animationEasing.acceleration - } both` + [Position.RIGHT]: { + transform: `translateX(100%)`, + ...withAnimations( + css.keyframes('anchoredRightSlideInAnimation', { + from: { transform: `translateX(100%)` }, + to: { transform: `translateX(0)` } + }), + css.keyframes('anchoredRightSlideOutAnimation', { + from: { transform: `translateX(0)` }, + to: { transform: `translateX(100%)` } + }) + ) + }, + [Position.TOP]: { + transform: `translateY(-100%)`, + ...withAnimations( + css.keyframes('anchoredTopSlideInAnimation', { + from: { transform: `translateY(-100%)` }, + to: { transform: `translateY(0)` } + }), + css.keyframes('anchoredTopSlideOutAnimation', { + from: { transform: `translateY(0)` }, + to: { transform: `translateY(-100%)` } + }) + ) + }, + [Position.BOTTOM]: { + transform: `translateY(100%)`, + ...withAnimations( + css.keyframes('anchoredBottomSlideInAnimation', { + from: { transform: `translateY(100%)` }, + to: { transform: `translateY(0)` } + }), + css.keyframes('anchoredBottomSlideOutAnimation', { + from: { transform: `translateY(0)` }, + to: { transform: `translateY(100%)` } + }) + ) } } @@ -72,6 +151,16 @@ class SideSheet extends React.Component { */ onOpenComplete: PropTypes.func, + /** + * Boolean indicating if clicking the overlay should close the overlay. + */ + shouldCloseOnOverlayClick: PropTypes.bool, + + /** + * Boolean indicating if pressing the esc key should close the overlay. + */ + shouldCloseOnEscapePress: PropTypes.bool, + /** * Width of the SideSheet. */ @@ -80,13 +169,26 @@ class SideSheet extends React.Component { /** * Properties to pass through the SideSheet container Pane. */ - containerProps: PropTypes.object + containerProps: PropTypes.object, + + /** + * Positions the sheet to the top, left, right, or bottom of the screen. + */ + position: PropTypes.oneOf([ + Position.TOP, + Position.BOTTOM, + Position.LEFT, + Position.RIGHT + ]).isRequired } static defaultProps = { width: 620, onCloseComplete: () => {}, - onOpenComplete: () => {} + onOpenComplete: () => {}, + shouldCloseOnOverlayClick: true, + shouldCloseOnEscapePress: true, + position: Position.RIGHT } render() { @@ -96,30 +198,41 @@ class SideSheet extends React.Component { children, containerProps, onOpenComplete, - onCloseComplete + onCloseComplete, + shouldCloseOnOverlayClick, + shouldCloseOnEscapePress, + position } = this.props return ( {({ state, close }) => ( - + {typeof children === 'function' ? children({ close }) : children} diff --git a/src/side-sheet/stories/index.stories.js b/src/side-sheet/stories/index.stories.js index ff424af1f..0f2364884 100644 --- a/src/side-sheet/stories/index.stories.js +++ b/src/side-sheet/stories/index.stories.js @@ -1,12 +1,13 @@ import { storiesOf } from '@storybook/react' import React from 'react' import Box from 'ui-box' -import { SideSheet } from '../../side-sheet' +import { SideSheet } from '..' import { Heading, Paragraph } from '../../typography' import { Card, Pane } from '../../layers' import { Button } from '../../buttons' import { Tab } from '../../tabs' import { Manager } from '../../manager' +import Menu from '../../menu/src/Menu' storiesOf('side-sheet', module) .add('title + sub title + tabs', () => ( @@ -28,9 +29,9 @@ storiesOf('side-sheet', module) }} > - + Title - + Optional description or sub title @@ -52,7 +53,7 @@ storiesOf('side-sheet', module) - + Title - + Optional description or sub title - + Title - + )) + .add('positions', () => ( + + {(() => { + document.body.style.margin = '0' + document.body.style.height = '100vh' + })()} + + {({ state, setState }) => ( + + setState({ isShown: false })} + > + {() => { + return ( + + + Title + + Optional description or sub title + + + + + Collaborators + + Discover + + + Compose + + + + + + Delete + + + + + ) + }} + + {['left', 'right', 'top', 'bottom'].map(position => ( + + ))} + + )} + + + )) + .add('escape + overlay click disabled', () => ( + + {(() => { + document.body.style.margin = '0' + document.body.style.height = '100vh' + })()} + + {({ state, setState }) => ( + + setState({ isShown: false })} + /> + + + )} + + + )) diff --git a/src/spinner/index.js b/src/spinner/index.js index d0a3dbb2b..60fbd18fd 100644 --- a/src/spinner/index.js +++ b/src/spinner/index.js @@ -1 +1 @@ -export Spinner from './src/Spinner' +export { default as Spinner } from './src/Spinner' // eslint-disable-line import/prefer-default-export diff --git a/src/spinner/src/Spinner.js b/src/spinner/src/Spinner.js index 4aa5271d8..6caabc314 100644 --- a/src/spinner/src/Spinner.js +++ b/src/spinner/src/Spinner.js @@ -1,7 +1,7 @@ import React, { PureComponent } from 'react' import PropTypes from 'prop-types' import Box, { css } from 'ui-box' -import { colors } from '../../colors' +import { withTheme } from '../../theme' const loadingKeyframes = css.keyframes('loading', { '0%': { @@ -25,18 +25,18 @@ const outer = { animation: `${loadingKeyframes} 2s linear infinite` } -const inner = { +const inner = color => ({ strokeDashoffset: 600, strokeDasharray: 300, strokeWidth: 12, strokeMiterlimit: 10, strokeLinecap: 'round', animation: `${loadingCircleKeyframes} 1.6s cubic-bezier(0.4, 0.15, 0.6, 0.85) infinite`, - stroke: colors.neutral['500'], + stroke: color, fill: 'transparent' -} +}) -export default class Spinner extends PureComponent { +class Spinner extends PureComponent { static propTypes = { /** * Composes the Box component as the base. @@ -46,7 +46,12 @@ export default class Spinner extends PureComponent { /** * The size of the spinner. */ - size: PropTypes.number + size: PropTypes.number.isRequired, + + /** + * Theme provided by ThemeProvider. + */ + theme: PropTypes.object.isRequired } static defaultProps = { @@ -54,13 +59,21 @@ export default class Spinner extends PureComponent { } render() { - const { size, ...props } = this.props + const { theme, size, ...props } = this.props return ( - + ) } } + +export default withTheme(Spinner) diff --git a/src/spinner/stories/index.stories.js b/src/spinner/stories/index.stories.js index 42570cd58..0cef633ee 100644 --- a/src/spinner/stories/index.stories.js +++ b/src/spinner/stories/index.stories.js @@ -1,7 +1,7 @@ import { storiesOf } from '@storybook/react' import React from 'react' import Box from 'ui-box' -import { Spinner } from '../../spinner' +import { Spinner } from '..' storiesOf('spinner', module).add('Spinner', () => ( @@ -9,6 +9,6 @@ storiesOf('spinner', module).add('Spinner', () => ( document.body.style.margin = '0' document.body.style.height = '100vh' })()} - Spinner + )) diff --git a/src/ssr/index.js b/src/ssr/index.js index af609d21f..736e3ce97 100644 --- a/src/ssr/index.js +++ b/src/ssr/index.js @@ -1,2 +1,2 @@ -export extractStyles from './src/extractStyles' -export autoHydrate from './src/autoHydrate' +export { default as extractStyles } from './src/extractStyles' +export { default as autoHydrate } from './src/autoHydrate' diff --git a/src/ssr/src/autoHydrate.js b/src/ssr/src/autoHydrate.js index 6e3b46ce1..efbe61eba 100644 --- a/src/ssr/src/autoHydrate.js +++ b/src/ssr/src/autoHydrate.js @@ -23,10 +23,10 @@ export default function autoHydrate() { try { const hydrationObject = JSON.parse(hydration.innerHTML) hydrate(hydrationObject) - } catch (err) { + } catch (error) { console.error( 'Evergreen automatic hydration object is invalid JSON', - err + error ) } } diff --git a/src/ssr/test/snapshots/extractStyles.js.md b/src/ssr/test/snapshots/extractStyles.js.md index 2ec2ac71b..04656a0b4 100644 --- a/src/ssr/test/snapshots/extractStyles.js.md +++ b/src/ssr/test/snapshots/extractStyles.js.md @@ -53,13 +53,17 @@ Generated by [AVA](https://ava.li). glamorIds: [ 'ng405l', 'fv6wzy', - 'ulyoui', + '18rijld', ], uiBoxCache: [ [ 'fontFamily"SF UI Text", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"', '📦fnt-fam_b77syt', ], + [ + 'marginTop0', + '📦mt_0px', + ], [ 'fontSize12px', '📦fnt-sze_12px', @@ -77,20 +81,20 @@ Generated by [AVA](https://ava.li). '📦ltr-spc_0', ], [ - 'borderTopRightRadius4', - '📦btrr_4px', + 'borderTopRightRadius3', + '📦btrr_3px', ], [ - 'borderBottomRightRadius4', - '📦bbrr_4px', + 'borderBottomRightRadius3', + '📦bbrr_3px', ], [ - 'borderTopLeftRadius4', - '📦btlr_4px', + 'borderTopLeftRadius3', + '📦btlr_3px', ], [ - 'borderBottomLeftRadius4', - '📦bblr_4px', + 'borderBottomLeftRadius3', + '📦bblr_3px', ], [ 'paddingTop0', @@ -108,10 +112,6 @@ Generated by [AVA](https://ava.li). 'paddingLeft16', '📦pl_16px', ], - [ - 'marginBottom0', - '📦mb_0px', - ], [ 'marginLeft0', '📦ml_0px', @@ -121,8 +121,8 @@ Generated by [AVA](https://ava.li). '📦mr_0px', ], [ - 'marginTop0', - '📦mt_0px', + 'marginBottom0', + '📦mb_0px', ], [ 'height32', @@ -154,6 +154,9 @@ Generated by [AVA](https://ava.li). .📦fnt-fam_b77syt {␊ font-family: "SF UI Text", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";␊ }␊ + .📦mt_0px {␊ + margin-top: 0px;␊ + }␊ .📦fnt-sze_12px {␊ font-size: 12px;␊ }␊ @@ -166,17 +169,17 @@ Generated by [AVA](https://ava.li). .📦ltr-spc_0 {␊ letter-spacing: 0;␊ }␊ - .📦btrr_4px {␊ - border-top-right-radius: 4px;␊ + .📦btrr_3px {␊ + border-top-right-radius: 3px;␊ }␊ - .📦bbrr_4px {␊ - border-bottom-right-radius: 4px;␊ + .📦bbrr_3px {␊ + border-bottom-right-radius: 3px;␊ }␊ - .📦btlr_4px {␊ - border-top-left-radius: 4px;␊ + .📦btlr_3px {␊ + border-top-left-radius: 3px;␊ }␊ - .📦bblr_4px {␊ - border-bottom-left-radius: 4px;␊ + .📦bblr_3px {␊ + border-bottom-left-radius: 3px;␊ }␊ .📦pt_0px {␊ padding-top: 0px;␊ @@ -190,17 +193,14 @@ Generated by [AVA](https://ava.li). .📦pl_16px {␊ padding-left: 16px;␊ }␊ - .📦mb_0px {␊ - margin-bottom: 0px;␊ - }␊ .📦ml_0px {␊ margin-left: 0px;␊ }␊ .📦mr_0px {␊ margin-right: 0px;␊ }␊ - .📦mt_0px {␊ - margin-top: 0px;␊ + .📦mb_0px {␊ + margin-bottom: 0px;␊ }␊ .📦h_32px {␊ height: 32px;␊ @@ -216,23 +216,21 @@ Generated by [AVA](https://ava.li). display: inline-flex;␊ }␊ .📦algn-itms_center {␊ - -webkit-align-items: center;␊ align-items: center;␊ -webkit-box-align: center;␊ }␊ .📦flx-wrap_nowrap {␊ - -webkit-flex-wrap: nowrap;␊ flex-wrap: nowrap;␊ -webkit-box-lines: nowrap;␊ }␊ .📦box-szg_border-box {␊ box-sizing: border-box;␊ }␊ - @-webkit-keyframes loading_ng405l{0%{transform:rotate(0);-webkit-transform:rotate(0);}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-moz-keyframes loading_ng405l{0%{transform:rotate(0);-webkit-transform:rotate(0);}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-o-keyframes loading_ng405l{0%{transform:rotate(0);-webkit-transform:rotate(0);}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@keyframes loading_ng405l{0%{transform:rotate(0);-webkit-transform:rotate(0);}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-webkit-keyframes loading-circle_fv6wzy{0%{stroke-dashoffset:600;}100%{stroke-dashoffset:0;}}@-moz-keyframes loading-circle_fv6wzy{0%{stroke-dashoffset:600;}100%{stroke-dashoffset:0;}}@-o-keyframes loading-circle_fv6wzy{0%{stroke-dashoffset:600;}100%{stroke-dashoffset:0;}}@keyframes loading-circle_fv6wzy{0%{stroke-dashoffset:600;}100%{stroke-dashoffset:0;}}.css-ulyoui,[data-css-ulyoui]{-webkit-font-smoothing:antialiased;box-sizing:border-box;vertical-align:middle;text-decoration:none;transition:box-shadow 80ms ease-in-out;-webkit-appearance:none;border:none;outline:none;cursor:pointer;background-color:white;color:#435a6f;background-image:-webkit-linear-gradient(to top, rgba(67,90,111,0.041), rgba(255,255,255,0.041)); background-image: -moz-linear-gradient(to top, rgba(67,90,111,0.041), rgba(255,255,255,0.041)); background-image: linear-gradient(to top, rgba(67,90,111,0.041), rgba(255,255,255,0.041));box-shadow:inset 0 0 0 1px rgba(67,90,111,0.146), inset 0 -1px 1px 0 rgba(67,90,111,0.079);-webkit-transition:box-shadow 80ms ease-in-out;-moz-transition:box-shadow 80ms ease-in-out;}.css-ulyoui::-moz-focus-inner ,[data-css-ulyoui]::-moz-focus-inner {border:0;}.css-ulyoui[disabled],[data-css-ulyoui][disabled],.css-ulyoui [data-disabled],[data-css-ulyoui] [data-disabled]{cursor:not-allowed;opacity:0.8;background-image:none;background-color:rgba(67,90,111,0.079);box-shadow:none;color:rgba(67,90,111,0.845);}.css-ulyoui:not([disabled]):not([data-disabled]):hover,[data-css-ulyoui]:not([disabled]):not([data-disabled]):hover{background-image:-webkit-linear-gradient(to top, rgba(67,90,111,0.057), rgba(67,90,111,0.025) ); background-image: -moz-linear-gradient(to top, rgba(67,90,111,0.057), rgba(67,90,111,0.025) ); background-image: linear-gradient(to top, rgba(67,90,111,0.057), rgba(67,90,111,0.025) );box-shadow:inset 0 0 0 1px rgba(67,90,111,0.255), inset 0 -1px 1px 0 rgba(67,90,111,0.114);}.css-ulyoui:not([disabled]):not([data-disabled]):focus,[data-css-ulyoui]:not([disabled]):not([data-disabled]):focus{z-index:2;box-shadow:0 0 0 3px rgba(1,108,209,0.146), inset 0 0 0 1px rgba(67,90,111,0.38), inset 0 -1px 1px 0 rgba(67,90,111,0.079);}.css-ulyoui:not([disabled]):not([data-disabled]):active,[data-css-ulyoui]:not([disabled]):not([data-disabled]):active, .css-ulyoui:not([disabled]):not([data-disabled])[aria-expanded="true"], [data-css-ulyoui]:not([disabled]):not([data-disabled])[aria-expanded="true"], .css-ulyoui:not([disabled]):not([data-disabled])[data-active], [data-css-ulyoui]:not([disabled]):not([data-disabled])[data-active]{color:#00408f;background-image:none;background-color:rgba(1,108,209,0.079);box-shadow:inset 0 0 0 1px rgba(67,90,111,0.146), inset 0 -1px 1px 0 rgba(67,90,111,0.079);}`, + @-webkit-keyframes loading_ng405l{0%{transform:rotate(0);-webkit-transform:rotate(0);}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-moz-keyframes loading_ng405l{0%{transform:rotate(0);-webkit-transform:rotate(0);}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-o-keyframes loading_ng405l{0%{transform:rotate(0);-webkit-transform:rotate(0);}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@keyframes loading_ng405l{0%{transform:rotate(0);-webkit-transform:rotate(0);}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-webkit-keyframes loading-circle_fv6wzy{0%{stroke-dashoffset:600;}100%{stroke-dashoffset:0;}}@-moz-keyframes loading-circle_fv6wzy{0%{stroke-dashoffset:600;}100%{stroke-dashoffset:0;}}@-o-keyframes loading-circle_fv6wzy{0%{stroke-dashoffset:600;}100%{stroke-dashoffset:0;}}@keyframes loading-circle_fv6wzy{0%{stroke-dashoffset:600;}100%{stroke-dashoffset:0;}}.css-18rijld,[data-css-18rijld]{-webkit-font-smoothing:antialiased;-webkit-appearance:none;vertical-align:middle;text-decoration:none;border:none;outline:none;cursor:pointer;color:#425A70;background-color:white;background-image:-webkit-linear-gradient(to bottom, #FFFFFF, #F4F5F7); background-image: -moz-linear-gradient(to bottom, #FFFFFF, #F4F5F7); background-image: linear-gradient(to bottom, #FFFFFF, #F4F5F7);box-shadow:inset 0 0 0 1px rgba(67, 90, 111, 0.14), inset 0 -1px 1px 0 rgba(67, 90, 111, 0.06);}.css-18rijld::-moz-focus-inner ,[data-css-18rijld]::-moz-focus-inner {border:0;}.css-18rijld[disabled],[data-css-18rijld][disabled],.css-18rijld [data-disabled],[data-css-18rijld] [data-disabled]{cursor:not-allowed;opacity:0.8;background-image:none;background-color:rgba(67, 90, 111, 0.06);box-shadow:none;color:rgba(67, 90, 111, 0.7);}.css-18rijld:not([disabled]):not([data-disabled]):hover,[data-css-18rijld]:not([disabled]):not([data-disabled]):hover{background-image:-webkit-linear-gradient(to bottom, #FAFBFB, #EAECEE); background-image: -moz-linear-gradient(to bottom, #FAFBFB, #EAECEE); background-image: linear-gradient(to bottom, #FAFBFB, #EAECEE);}.css-18rijld:not([disabled]):not([data-disabled]):focus,[data-css-18rijld]:not([disabled]):not([data-disabled]):focus{z-index:2;box-shadow:0 0 0 3px rgba(16, 112, 202, 0.14), inset 0 0 0 1px rgba(67, 90, 111, 0.3), inset 0 -1px 1px 0 rgba(67, 90, 111, 0.14);}.css-18rijld:not([disabled]):not([data-disabled]):active,[data-css-18rijld]:not([disabled]):not([data-disabled]):active, .css-18rijld:not([disabled]):not([data-disabled])[aria-expanded="true"], [data-css-18rijld]:not([disabled]):not([data-disabled])[aria-expanded="true"], .css-18rijld:not([disabled]):not([data-disabled])[data-active], [data-css-18rijld]:not([disabled]):not([data-disabled])[data-active]{background-image:none;background-color:rgba(16, 112, 202, 0.09);box-shadow:inset 0 0 0 1px rgba(67, 90, 111, 0.14), inset 0 1px 1px 0 rgba(67, 90, 111, 0.06);}.css-18rijld:not([disabled]):not([data-disabled]):focus:active,[data-css-18rijld]:not([disabled]):not([data-disabled]):focus:active, .css-18rijld:not([disabled]):not([data-disabled])[aria-expanded="true"]:focus, [data-css-18rijld]:not([disabled]):not([data-disabled])[aria-expanded="true"]:focus, .css-18rijld:not([disabled]):not([data-disabled])[data-active]:focus, [data-css-18rijld]:not([disabled]):not([data-disabled])[data-active]:focus{box-shadow:0 0 0 3px rgba(16, 112, 202, 0.14), inset 0 0 0 1px rgba(67, 90, 111, 0.3), inset 0 1px 1px 0 rgba(67, 90, 111, 0.06);}`, hydrationScript: